[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