Hi I'm writing a simple converter between Celcius and Farhenheit as an example to start programming. Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) ConverterTest >> testFToC | converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111) My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111) I do not want to have such ugly test. I tried either to control the output Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1 Not a good idea Or to compare with closeTo: self assert: ((converter convertFarhenheit: 52) closeTo: 11.11) does not work because we cannot set the precision. So at ESUG I briefly discuss that with Nicolas Cellier and I need help. Should I introduce in pharo closeTo:interval: Any suggestions that a newby can understand is welcome. Stef
Why not use "equalsTo:"? Floats are tricky, you either round your result before comparing or change the comparison method. 0.333333333333333333 equalsTo: (1/3) "true" Regards! Esteban A. Maringolo 2016-09-02 15:41 GMT-03:00 stepharo <stepharo@free.fr>:
Hi
I'm writing a simple converter between Celcius and Farhenheit as an example to start programming.
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8)
ConverterTest >> testFToC
| converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111)
My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111)
I do not want to have such ugly test.
I tried either to control the output
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1
Not a good idea
Or to compare with closeTo:
self assert: ((converter convertFarhenheit: 52) closeTo: 11.11)
does not work because we cannot set the precision.
So at ESUG I briefly discuss that with Nicolas Cellier and I need help.
Should I introduce in pharo closeTo:interval:
Any suggestions that a newby can understand is welcome.
Stef
You could implement a custom assert in ConverterTest to do the comparison, something like assert: aNumber withPrecision: precision equals: otherNumber self assert: (aNumber round: precision) equals: otherNumber assert: aNumber closeTo: otherNumber assert: aNumber withPrecision: self defaultPrecision equals: otherNumber defaultPrecision ^ 2 Best regards, Henrik -----Original Message----- From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of stepharo Sent: Friday, September 2, 2016 8:41 PM To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: [Pharo-users] Comparing floats Hi I'm writing a simple converter between Celcius and Farhenheit as an example to start programming. Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) ConverterTest >> testFToC | converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111) My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111) I do not want to have such ugly test. I tried either to control the output Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1 Not a good idea Or to compare with closeTo: self assert: ((converter convertFarhenheit: 52) closeTo: 11.11) does not work because we cannot set the precision. So at ESUG I briefly discuss that with Nicolas Cellier and I need help. Should I introduce in pharo closeTo:interval: Any suggestions that a newby can understand is welcome. Stef
how about having assert:closeTo: ?
On 02 Sep 2016, at 21:09, Henrik Nergaard <henrik.nergaard@uia.no> wrote:
You could implement a custom assert in ConverterTest to do the comparison, something like
assert: aNumber withPrecision: precision equals: otherNumber
self assert: (aNumber round: precision) equals: otherNumber
assert: aNumber closeTo: otherNumber
assert: aNumber withPrecision: self defaultPrecision equals: otherNumber
defaultPrecision ^ 2
Best regards, Henrik
-----Original Message----- From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of stepharo Sent: Friday, September 2, 2016 8:41 PM To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: [Pharo-users] Comparing floats
Hi
I'm writing a simple converter between Celcius and Farhenheit as an example to start programming.
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8)
ConverterTest >> testFToC
| converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111)
My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111)
I do not want to have such ugly test.
I tried either to control the output
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1
Not a good idea
Or to compare with closeTo:
self assert: ((converter convertFarhenheit: 52) closeTo: 11.11)
does not work because we cannot set the precision.
So at ESUG I briefly discuss that with Nicolas Cellier and I need help.
Should I introduce in pharo closeTo:interval:
Any suggestions that a newby can understand is welcome.
Stef
would be nice to extend Sunit with that Le 3/9/16 à 00:21, Yuriy Tymchuk a écrit :
how about having assert:closeTo: ?
On 02 Sep 2016, at 21:09, Henrik Nergaard <henrik.nergaard@uia.no> wrote:
You could implement a custom assert in ConverterTest to do the comparison, something like
assert: aNumber withPrecision: precision equals: otherNumber
self assert: (aNumber round: precision) equals: otherNumber
assert: aNumber closeTo: otherNumber
assert: aNumber withPrecision: self defaultPrecision equals: otherNumber
defaultPrecision ^ 2
Best regards, Henrik
-----Original Message----- From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of stepharo Sent: Friday, September 2, 2016 8:41 PM To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: [Pharo-users] Comparing floats
Hi
I'm writing a simple converter between Celcius and Farhenheit as an example to start programming.
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8)
ConverterTest >> testFToC
| converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111)
My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111)
I do not want to have such ugly test.
I tried either to control the output
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1
Not a good idea
Or to compare with closeTo:
self assert: ((converter convertFarhenheit: 52) closeTo: 11.11)
does not work because we cannot set the precision.
So at ESUG I briefly discuss that with Nicolas Cellier and I need help.
Should I introduce in pharo closeTo:interval:
Any suggestions that a newby can understand is welcome.
Stef
JUnit has the equivalent of: assert:equals:range: It could then be: self assert: 11.11 equals: 11.11 range: 0.0001 Alexandre
On Sep 2, 2016, at 7:21 PM, Yuriy Tymchuk <yuriy.tymchuk@me.com> wrote:
how about having assert:closeTo: ?
On 02 Sep 2016, at 21:09, Henrik Nergaard <henrik.nergaard@uia.no> wrote:
You could implement a custom assert in ConverterTest to do the comparison, something like
assert: aNumber withPrecision: precision equals: otherNumber
self assert: (aNumber round: precision) equals: otherNumber
assert: aNumber closeTo: otherNumber
assert: aNumber withPrecision: self defaultPrecision equals: otherNumber
defaultPrecision ^ 2
Best regards, Henrik
-----Original Message----- From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of stepharo Sent: Friday, September 2, 2016 8:41 PM To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: [Pharo-users] Comparing floats
Hi
I'm writing a simple converter between Celcius and Farhenheit as an example to start programming.
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8)
ConverterTest >> testFToC
| converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111)
My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111)
I do not want to have such ugly test.
I tried either to control the output
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1
Not a good idea
Or to compare with closeTo:
self assert: ((converter convertFarhenheit: 52) closeTo: 11.11)
does not work because we cannot set the precision.
So at ESUG I briefly discuss that with Nicolas Cellier and I need help.
Should I introduce in pharo closeTo:interval:
Any suggestions that a newby can understand is welcome.
Stef
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Thanks I will try that. Stef Le 2/9/16 à 21:09, Henrik Nergaard a écrit :
You could implement a custom assert in ConverterTest to do the comparison, something like
assert: aNumber withPrecision: precision equals: otherNumber
self assert: (aNumber round: precision) equals: otherNumber
assert: aNumber closeTo: otherNumber
assert: aNumber withPrecision: self defaultPrecision equals: otherNumber
defaultPrecision ^ 2
Best regards, Henrik
-----Original Message----- From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of stepharo Sent: Friday, September 2, 2016 8:41 PM To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: [Pharo-users] Comparing floats
Hi
I'm writing a simple converter between Celcius and Farhenheit as an example to start programming.
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8)
ConverterTest >> testFToC
| converter | converter := TemperatureConverter new. self assert: ((converter convertFarhenheit: 86) = 30.0). self assert: ((converter convertFarhenheit: 50) = 10). self assert: ((converter convertFarhenheit: 52) = 11.11111111111111)
My problem is with ((converter convertFarhenheit: 52) = 11.11111111111111)
I do not want to have such ugly test.
I tried either to control the output
Converter >> convertFarhenheit: anInteger ^ ((anInteger - 32) / 1.8) roundDownTo: 0.1
Not a good idea
Or to compare with closeTo:
self assert: ((converter convertFarhenheit: 52) closeTo: 11.11)
does not work because we cannot set the precision.
So at ESUG I briefly discuss that with Nicolas Cellier and I need help.
Should I introduce in pharo closeTo:interval:
Any suggestions that a newby can understand is welcome.
Stef
participants (5)
-
Alexandre Bergel -
Esteban A. Maringolo -
Henrik Nergaard -
stepharo -
Yuriy Tymchuk