[squeak-dev] The Trunk: KernelTests-nice.203.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Oct 14 19:51:03 UTC 2011


Nicolas Cellier uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-nice.203.mcz

==================== Summary ====================

Name: KernelTests-nice.203
Author: nice
Time: 14 October 2011, 9:50:43.911 pm
UUID: e0f108e0-cb07-4ab9-a1c1-51e93c09197a
Ancestors: KernelTests-ul.202

Integrate tests Juan made in Cuis for exact/inexact #sqrt and #nthRoot:

=============== Diff against KernelTests-ul.202 ===============

Item was added:
+ ----- Method: FloatTest>>testMaxExactInteger (in category 'testing') -----
+ testMaxExactInteger
+ 	"
+ 	FloatTest new testMaxExactInteger
+ 	"
+ 
+ 	self assert: Float maxExactInteger asFloat truncated = Float maxExactInteger.
+ 	0 to: 10000 do: [ :j |
+ 		self assert: (Float maxExactInteger-j) asFloat truncated = (Float maxExactInteger-j) ].
+ 	self deny: (Float maxExactInteger+1) asFloat truncated = (Float maxExactInteger+1)
+ 	!

Item was added:
+ ----- Method: FloatTest>>testNthRoot (in category 'tests - mathematical functions') -----
+ testNthRoot
+ 	"
+ 	FloatTest new testNthRoot
+ 	"
+ 	self should: [ -1.23 nthRoot: 4 ] raise: ArithmeticError!

Item was changed:
+ ----- Method: FloatTest>>testRaisedTo (in category 'tests - mathematical functions') -----
- ----- Method: FloatTest>>testRaisedTo (in category 'testing - arithmetic') -----
  testRaisedTo
+ 	"
+ 	FloatTest new testRaisedTo
+ 	"
+ 	self should: [ -1.23 raisedTo: 1/4 ] raise: ArithmeticError!
- 	"this is a test related to http://bugs.squeak.org/view.php?id=6781"
- 	
- 	self should: [0.0 raisedTo: -1] raise: ZeroDivide.
- 	self should: [0.0 raisedTo: -1.0] raise: ZeroDivide.!

Item was added:
+ ----- Method: FloatTest>>testZeroRaisedToNegativePower (in category 'testing - arithmetic') -----
+ testZeroRaisedToNegativePower
+ 	"this is a test related to http://bugs.squeak.org/view.php?id=6781"
+ 	
+ 	self should: [0.0 raisedTo: -1] raise: ZeroDivide.
+ 	self should: [0.0 raisedTo: -1.0] raise: ZeroDivide.!

Item was added:
+ ----- Method: FractionTest>>assert:classAndValueEquals: (in category 'private') -----
+ assert: a classAndValueEquals: b
+ 	self assert: a class = b class.
+ 	self assert: a = b!

Item was added:
+ ----- Method: FractionTest>>testExactRaisedTo (in category 'tests - mathematical functions') -----
+ testExactRaisedTo
+ 	"
+ 	FractionTest new testExactRaisedTo
+ 	"
+ 	| f |
+ 	self assert: (4/9 raisedTo: 1/2) classAndValueEquals: 2/3.
+ 	self assert: (9/4 raisedTo: 1/2) classAndValueEquals: 3/2.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) pairsDo: [ :a :b |
+ 		f := a / b.
+ 		self assert: (f squared raisedTo: 1/2) classAndValueEquals: f.
+ 		self assert: (f negated squared raisedTo: 1/2) classAndValueEquals: f.
+ 		f := b / a.
+ 		self assert: (f squared raisedTo: 1/2) classAndValueEquals: f.
+ 		self assert: (f negated squared raisedTo: 1/2) classAndValueEquals: f ].
+ 
+ 	self assert: (8/27 raisedTo: 1/3) classAndValueEquals: 2/3.
+ 	self assert: (27/8 raisedTo: 1/3) classAndValueEquals: 3/2.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) pairsDo: [ :a :b |
+ 		f := a / b.
+ 		self assert: ((f raisedTo: 3) raisedTo: 1/3) classAndValueEquals: f.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 1/3) classAndValueEquals: f negated.
+ 		f := b / a.
+ 		self assert: ((f raisedTo: 3) raisedTo: 1/3) classAndValueEquals: f.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 1/3) classAndValueEquals: f negated ].
+ 
+ 	self assert: (4/9 raisedTo: 3/2) classAndValueEquals: 8/27.
+ 	self assert: (8/27 raisedTo: 2/3) classAndValueEquals: 4/9.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) pairsDo: [ :a :b |
+ 		f := a / b.
+ 		self assert: ((f raisedTo: 3) raisedTo: 2/3) classAndValueEquals: f*f.
+ 		self assert: ((f raisedTo: 2) raisedTo: 3/2) classAndValueEquals: f*f*f.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 2/3) classAndValueEquals: f*f.
+ 		self assert: ((f negated raisedTo: 2) raisedTo: 3/2) classAndValueEquals: f*f*f.
+ 		f := b / a.
+ 		self assert: ((f raisedTo: 3) raisedTo: 2/3) classAndValueEquals: f*f.
+ 		self assert: ((f raisedTo: 2) raisedTo: 3/2) classAndValueEquals: f*f*f.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 2/3) classAndValueEquals: f*f.
+ 		self assert: ((f negated raisedTo: 2) raisedTo: 3/2) classAndValueEquals: f*f*f ].
+ 
+ 	self assert: (32/243 raisedTo: 3/5) classAndValueEquals: 8/27.
+ 	self assert: (8/27 raisedTo: 5/3) classAndValueEquals: 32/243.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) pairsDo: [ :a :b |
+ 		f := a / b.
+ 		self assert: ((f raisedTo: 5) raisedTo: 3/5) classAndValueEquals: f*f*f.
+ 		self assert: ((f raisedTo: 3) raisedTo: 5/3) classAndValueEquals: f*f*f*f*f.
+ 		self assert: ((f negated raisedTo: 5) raisedTo: 3/5) classAndValueEquals: (f*f*f) negated.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 5/3) classAndValueEquals: (f*f*f*f*f) negated.
+ 
+ 		self assert: ((f raisedTo: -5) raisedTo: 3/5) classAndValueEquals: 1/(f*f*f).
+ 		self assert: ((f raisedTo: -3) raisedTo: 5/3) classAndValueEquals: 1/(f*f*f*f*f).
+ 		self assert: ((f negated raisedTo: -5) raisedTo: 3/5) classAndValueEquals: -1/(f*f*f).
+ 		self assert: ((f negated raisedTo: -3) raisedTo: 5/3) classAndValueEquals: -1/(f*f*f*f*f).
+ 		self assert: ((f raisedTo: 5) raisedTo: -3/5) classAndValueEquals: 1/(f*f*f).
+ 		self assert: ((f raisedTo: 3) raisedTo: -5/3) classAndValueEquals: 1/(f*f*f*f*f).
+ 		self assert: ((f negated raisedTo: 5) raisedTo: -3/5) classAndValueEquals: -1/(f*f*f).
+ 		self assert: ((f negated raisedTo: 3) raisedTo: -5/3) classAndValueEquals: -1/(f*f*f*f*f).
+ 
+ 		"No exact result => Float result"
+ 		self assert: ((f raisedTo: 3) +1 raisedTo: 5/3) isFloat.
+ 		self assert: ((f negated raisedTo: 3) -1 raisedTo: 5/3) isFloat.
+ 
+ 		f := b / a.
+ 		self assert: ((f raisedTo: 5) raisedTo: 3/5) classAndValueEquals: f*f*f.
+ 		self assert: ((f raisedTo: 3) raisedTo: 5/3) classAndValueEquals: f*f*f*f*f.
+ 		self assert: ((f negated raisedTo: 5) raisedTo: 3/5) classAndValueEquals: (f*f*f) negated.
+ 		self assert: ((f negated raisedTo: 3) raisedTo: 5/3) classAndValueEquals: (f*f*f*f*f) negated.
+ 
+ 		"No exact result => Float result"
+ 		self assert: ((f raisedTo: 3) +1 raisedTo: 5/3) isFloat.
+ 		self assert: ((f negated raisedTo: 3) -1 raisedTo: 5/3) isFloat ].!

Item was added:
+ ----- Method: FractionTest>>testExactSqrt (in category 'tests - mathematical functions') -----
+ testExactSqrt
+ 	"
+ 	FractionTest new testExactSqrt
+ 	"
+ 	| f |
+ 	self assert: (4/9) sqrt classAndValueEquals: 2/3.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) pairsDo: [ :i :j |
+ 		f := i / j.
+ 		self assert: f squared sqrt classAndValueEquals: f.
+ 		f := j / i.
+ 		self assert: f squared sqrt classAndValueEquals: f ]!

Item was added:
+ ----- Method: FractionTest>>testInexactRaisedTo (in category 'tests - mathematical functions') -----
+ testInexactRaisedTo
+ 	"
+ 	FractionTest new testInexactRaisedTo
+ 	"
+ 	self assert: (((1 << 1024 + 1) / (1 << 1024 + 3)) raisedTo: 1/3) = 1.0.
+ 	self assert: (((1 << 1024 + 1) / (1 << 1024 + 3)) negated raisedTo: 1/3) = -1.0!

Item was added:
+ ----- Method: FractionTest>>testInexactSqrt (in category 'tests - mathematical functions') -----
+ testInexactSqrt
+ 	"
+ 	FractionTest new testInexactSqrt
+ 	"
+ 	self assert: ((1 << 1024 + 1) / (1 << 1024 + 3)) sqrt = 1.0!

Item was added:
+ ----- Method: FractionTest>>testRaisedToErrorConditions (in category 'tests - mathematical functions') -----
+ testRaisedToErrorConditions
+ 	"
+ 	FractionTest new testRaisedToErrorConditions
+ 	"
+ 	self should: [ (-1/16) raisedTo: 1/4 ] raise: ArithmeticError.
+ 	self should: [ ((1 << 1024 + 1) / (1 << 1024 + 3)) negated raisedTo: 1/4 ] raise: ArithmeticError!

Item was added:
+ ----- Method: FractionTest>>testSqrtErrorConditions (in category 'tests - mathematical functions') -----
+ testSqrtErrorConditions
+ 	"
+ 	FractionTest new testSqrtErrorConditions
+ 	"
+ 	self should: [ (-1/4) sqrt ] raise: DomainError.
+ 	self should: [ ((1 << 1024 + 1) / (1 << 1024 + 3)) negated sqrt ] raise: DomainError!

Item was added:
+ ----- Method: IntegerTest>>assert:classAndValueEquals: (in category 'private') -----
+ assert: a classAndValueEquals: b
+ 	self assert: a class = b class.
+ 	self assert: a = b!

Item was added:
+ ----- Method: IntegerTest>>testExactRaisedTo (in category 'tests - mathematical functions') -----
+ testExactRaisedTo
+ 	"
+ 	IntegerTest new testExactRaisedTo
+ 	"
+ 	self assert: (4 raisedTo: 1/2) classAndValueEquals: 2.
+ 	self assert: (9 raisedTo: 1/2) classAndValueEquals: 3.
+ 	self assert: (9 raisedTo: -1/2) classAndValueEquals: 1/3.
+ 	self assert: (-1 raisedTo: 1/3) classAndValueEquals: -1.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) do: [ :i |
+ 		self assert: (i squared raisedTo: 1/2) classAndValueEquals: i.
+ 		self assert: (i negated squared raisedTo: 1/2) classAndValueEquals: i ].
+ 
+ 	self assert: (8 raisedTo: 1/3) classAndValueEquals: 2.
+ 	self assert: (27 raisedTo: 1/3) classAndValueEquals: 3.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) do: [ :i |
+ 		self assert: ((i raisedTo: 3) raisedTo: 1/3) classAndValueEquals: i.
+ 		self assert: ((i negated raisedTo: 3) raisedTo: 1/3) classAndValueEquals: i negated ].
+ 
+ 	self assert: (4 raisedTo: 3/2) classAndValueEquals: 8.
+ 	self assert: (8 raisedTo: 2/3) classAndValueEquals: 4.
+ 	self assert: (8 raisedTo: -2/3) classAndValueEquals: 1/4.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) do: [ :i |
+ 		self assert: ((i raisedTo: 3) raisedTo: 2/3) classAndValueEquals: i*i.
+ 		self assert: ((i raisedTo: 2) raisedTo: 3/2) classAndValueEquals: i*i*i.
+ 		self assert: ((i negated raisedTo: 3) raisedTo: 2/3) classAndValueEquals: i*i.
+ 		self assert: ((i negated raisedTo: 2) raisedTo: 3/2) classAndValueEquals: i*i*i ].
+ 
+ 	self assert: (32 raisedTo: 3/5) classAndValueEquals: 8.
+ 	self assert: (8 raisedTo: 5/3) classAndValueEquals: 32.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) do: [ :i |
+ 		self assert: ((i raisedTo: 5) raisedTo: 3/5) classAndValueEquals: i*i*i.
+ 		self assert: ((i raisedTo: 3) raisedTo: 5/3) classAndValueEquals: i*i*i*i*i.
+ 		self assert: ((i negated raisedTo: 5) raisedTo: 3/5) classAndValueEquals: (i*i*i) negated.
+ 		self assert: ((i negated raisedTo: 3) raisedTo: 5/3) classAndValueEquals: (i*i*i*i*i) negated.
+ 
+ 		self assert: ((i raisedTo: -5) raisedTo: 3/5) classAndValueEquals: 1/(i*i*i).
+ 		self assert: ((i raisedTo: -3) raisedTo: 5/3) classAndValueEquals: 1/(i*i*i*i*i).
+ 		self assert: ((i negated raisedTo: -5) raisedTo: 3/5) classAndValueEquals: -1/(i*i*i).
+ 		self assert: ((i negated raisedTo: -3) raisedTo: 5/3) classAndValueEquals: -1/(i*i*i*i*i).
+ 
+ 		self assert: ((i raisedTo: 5) raisedTo: -3/5) classAndValueEquals: 1/(i*i*i).
+ 		self assert: ((i raisedTo: 3) raisedTo: -5/3) classAndValueEquals: 1/(i*i*i*i*i).
+ 		self assert: ((i negated raisedTo: 5) raisedTo: -3/5) classAndValueEquals: -1/(i*i*i).
+ 		self assert: ((i negated raisedTo: 3) raisedTo: -5/3) classAndValueEquals: -1/(i*i*i*i*i).
+ 
+ 		"No exact result => Float result"
+ 		self assert: ((i raisedTo: 3) +1 raisedTo: 5/3) isFloat.
+ 		self assert: ((i negated raisedTo: 3) -1 raisedTo: 5/3) isFloat ].!

Item was added:
+ ----- Method: IntegerTest>>testExactSqrt (in category 'tests - mathematical functions') -----
+ testExactSqrt
+ 	"
+ 	IntegerTest new testExactSqrt
+ 	"
+ 	self assert: 4 sqrt classAndValueEquals: 2.
+ 	self assert: 9 sqrt classAndValueEquals: 3.
+ 	self assert: Float maxExactInteger squared sqrt classAndValueEquals: Float maxExactInteger.
+ 	self assert: (Float maxExactInteger+1) squared sqrt classAndValueEquals: Float maxExactInteger+1.
+ 	#( 1 5 29 135 1234 567890 123123123 456456456456 98765432109876543210987654321 987123987123987123987123987123987123987123987123) do: [ :i |
+ 		self assert: i squared sqrt classAndValueEquals: i ]!

Item was added:
+ ----- Method: IntegerTest>>testNthRootErrorConditions (in category 'tests - mathematical functions') -----
+ testNthRootErrorConditions
+ 	"
+ 	IntegerTest new testExactRaisedToErrorConditions
+ 	"
+ 
+ 	self should: [ -2 nthRoot: 1/4 ] raise: ArithmeticError.
+ 	self should: [ -2 nthRoot: 1.24 ] raise: ArithmeticError.!

Item was added:
+ ----- Method: IntegerTest>>testRaisedToErrorConditions (in category 'tests - mathematical functions') -----
+ testRaisedToErrorConditions
+ 	"
+ 	IntegerTest new testRaisedToErrorConditions
+ 	"
+ 
+ 	self should: [ -2 raisedTo: 1/4 ] raise: ArithmeticError.
+ 	self should: [ -2 raisedTo: 1.24 ] raise: ArithmeticError.!

Item was added:
+ ----- Method: IntegerTest>>testRaisedToModulo (in category 'testing - arithmetic') -----
+ testRaisedToModulo
+ 	#(301 2047) do: [:m |
+ 		1 to: m - 1 by: (m // 30) do: [:x |
+ 			11 to: m - 1 by: (m // 40) do: [:y |
+ 				self assert: (x raisedTo: y) \\ m = (x raisedTo: y modulo: m)]]].
+ 	self assert: (8951195 raisedTo: 7742931 modulo: 15485863) = 15485862.!

Item was added:
+ ----- Method: IntegerTest>>testSqrtErrorConditions (in category 'tests - mathematical functions') -----
+ testSqrtErrorConditions
+ 	"
+ 	IntegerTest new testSqrtErrorConditions
+ 	"
+ 
+ 	self should: [ -1 sqrt ] raise: ArithmeticError!




More information about the Squeak-dev mailing list