[squeak-dev] The Inbox: KernelTests-dtl.206.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Oct 15 13:36:13 UTC 2011
A new version of KernelTests was added to project The Inbox:
http://source.squeak.org/inbox/KernelTests-dtl.206.mcz
==================== Summary ====================
Name: KernelTests-dtl.206
Author: dtl
Time: 15 October 2011, 9:36:01.168 am
UUID: c2956e9d-ccfb-4bc3-a46f-acaf34ad9d4d
Ancestors: KernelTests-nice.205
As reported on Pharo list <http://code.google.com/p/pharo/issues/detail?id=4909> number parser does not attempt to interpret fractions.
Fraction readFromString: '1/2' ==> 1
'1/2' asNumber ==> 1
Change parsers to look for $/ (no space) after first numeric input, and if present read additional input as fraction. No attempt is made to ensure integer valued numerator and denominator, instead just permit conversion to float.
See #testFraction tests for expected behavior
With this change:
Number readFrom: '1/2' ==> (1/2)
Number readFrom: '1 / 2' ==> 1
Number readFrom: '2/1.6' ==> 1.25
Number readFrom: '1.6/2' ==> 0.8
Number readFrom: '1.6/3.2' ==> 0.5
Number readFrom: '1.6e3/3.2e2' ==> 5.0
Number readFrom: '13/10/2011' ==> (13/10) "a date is not a number"
=============== Diff against KernelTests-nice.205 ===============
Item was added:
+ ----- Method: ExtendedNumberParserTest>>testFraction (in category 'testing') -----
+ testFraction
+
+ self assert: (ExtendedNumberParser on: ('1/2' readStream)) nextNumber = (1/2).
+ self assert: (ExtendedNumberParser on: ('1 / 2' readStream)) nextNumber = 1.
+ self assert: (ExtendedNumberParser on: ('2/1.6' readStream)) nextNumber = 1.25.
+ self assert: (ExtendedNumberParser on: ('1.6/2' readStream)) nextNumber = 0.8.
+ self assert: (ExtendedNumberParser on: ('1.6/3.2' readStream)) nextNumber = 0.5.
+ self assert: (ExtendedNumberParser on: ('1.6e3/3.2e2' readStream)) nextNumber = 5.0.
+
+ "a date is not a number"
+ self assert: (ExtendedNumberParser on: ('13/10/2011' readStream)) nextNumber = (13/10).
+ !
Item was added:
+ ----- Method: NumberParsingTest>>testFraction (in category 'tests - Fraction') -----
+ testFraction
+
+ self assert: (Number readFrom: '1/2') = (1/2).
+ self assert: (Number readFrom: '1 / 2') = 1.
+ self assert: (Number readFrom: '2/1.6') = 1.25.
+ self assert: (Number readFrom: '1.6/2') = 0.8.
+ self assert: (Number readFrom: '1.6/3.2') = 0.5.
+ self assert: (Number readFrom: '1.6e3/3.2e2') = 5.0.
+
+ self assert: (Number readFrom: '13/10/2011') = 13/10. "a date is not a number"
+ !
Item was added:
+ ----- Method: SqNumberParserTest>>testFraction (in category 'tests - Fraction') -----
+ testFraction
+
+ self assert: (SqNumberParser on: ('1/2' readStream)) nextNumber = 1/2.
+ self assert: (SqNumberParser on: ('1 / 2' readStream)) nextNumber = 1.
+ self assert: (SqNumberParser on: ('2/1.6' readStream)) nextNumber = 1.25.
+ self assert: (SqNumberParser on: ('1.6/2' readStream)) nextNumber = 0.8.
+ self assert: (SqNumberParser on: ('1.6/3.2' readStream)) nextNumber = 0.5.
+ self assert: (SqNumberParser on: ('1.6e3/3.2e2' readStream)) nextNumber = 5.0.
+
+ "a date is not a number"
+ self assert: (SqNumberParser on: ('13/10/2011' readStream)) nextNumber = (13/10).
+ !
More information about the Squeak-dev
mailing list
|