[squeak-dev] The Trunk: CollectionsTests-nice.338.mcz

commits at source.squeak.org commits at source.squeak.org
Sat May 2 01:05:33 UTC 2020


David T. Lewis uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-nice.338.mcz

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

Name: CollectionsTests-nice.338
Author: nice
Time: 2 May 2020, 12:46:51.581176 am
UUID: 9860b2e2-750f-da40-a73f-4332c3facd4f
Ancestors: CollectionsTests-mt.337

Introduce tests for Float64Array

=============== Diff against CollectionsTests-mt.337 ===============

Item was added:
+ ClassTestCase subclass: #Float64ArrayTest
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CollectionsTests-Arrayed'!
+ 
+ !Float64ArrayTest commentStamp: 'nice 5/30/2006 01:24' prior: 0!
+ These tests are used to assert that Float64ArrayPlugin has same results as Float asIEEE32BitWord!

Item was added:
+ ----- Method: Float64ArrayTest>>testArithmeticCoercion (in category 'tests') -----
+ testArithmeticCoercion
+ 	
+ 	self should: [3.5 / (Float64Array with: 2.0) = (Float64Array with: 1.75)].
+ 	self should: [3.5 * (Float64Array with: 2.0) = (Float64Array with: 7.0)].
+ 	self should: [3.5 + (Float64Array with: 2.0) = (Float64Array with: 5.5)].
+ 	self should: [3.5 - (Float64Array with: 2.0) = (Float64Array with: 1.5)].!

Item was added:
+ ----- Method: Float64ArrayTest>>testFloat64ArrayPluginPrimitiveAt (in category 'tests') -----
+ testFloat64ArrayPluginPrimitiveAt
+ 	"Trivial test"
+ 	
+ 	#(zero one epsilon fmax fminDenormalized fminNormalized negativeZero negativeInfinity infinity) do: [:e |
+ 			| aFloat |
+ 			aFloat := Float perform: e.
+ 			self assert: ((Float64Array with: aFloat) at: 1) = aFloat].
+ 
+ 	"Cannot compare NaN"
+ 	self assert: ((Float64Array with: Float nan) at: 1) isNaN.!

Item was added:
+ ----- Method: Float64ArrayTest>>testThatDivideAvoidsUnecessaryOverflow (in category 'tests') -----
+ testThatDivideAvoidsUnecessaryOverflow
+ 	| f1 f2 expectedResult |
+ 	f1 := Float fminNormalized.
+ 	f2 := Float fminDenormalized.
+ 	expectedResult := Float64Array with: f1 / f2.
+ 	
+ 	"If any of these primitives inverse the dividend, then it will overflow"
+ 	self assert: expectedResult equals: f1 / (Float64Array with: f2).
+ 	self assert: expectedResult equals: (Float64Array with: f1) / f2.
+ 	self assert: expectedResult equals: (Float64Array with: f1) / (Float64Array with: f2).!

Item was added:
+ ----- Method: Float64ArrayTest>>testVectorOperations (in category 'tests') -----
+ testVectorOperations
+ 	
+ 	"Test primtive cases 'receiver size = argument size'."
+ 	self assert: (Float64Array withAll: {2.0. 2.0}) equals: (Float64Array withAll: {4.0. 6.0}) / (Float64Array withAll: {2.0. 3.0}).
+ 	self assert: (Float64Array withAll: {8.0. 9.0}) equals: (Float64Array withAll: {4.0. 4.5}) * (Float64Array withAll: {2.0. 2.0}).
+ 	self assert: (Float64Array withAll: {6.0. 9.0}) equals: (Float64Array withAll: {4.0. 6.0}) + (Float64Array withAll: {2.0. 3.0}).
+ 	self assert: (Float64Array withAll: {2.0. 3.0}) equals: (Float64Array withAll: {4.0. 6.0}) - (Float64Array withAll: {2.0. 3.0}).
+ 	self assert: 26 equals: ((Float64Array withAll: {4.0. 6.0}) dot: (Float64Array withAll: {2.0. 3.0})).
+ 	
+ 	"Test corner cases where 'receiver size < argument size'."
+ 	self should: [(Float64Array withAll: {4.0. 6.0}) / (Float64Array withAll: {2.0. 3.0. 42.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0}) * (Float64Array withAll: {2.0. 3.0. 42.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0}) + (Float64Array withAll: {2.0. 3.0. 42.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0}) - (Float64Array withAll: {2.0. 3.0. 42.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0}) dot: (Float64Array withAll: {2.0. 3.0. 42.0})] raise: Error.
+ 	
+ 	"Test corner cases where 'receiver size > argument size'."
+ 	self should: [(Float64Array withAll: {4.0. 6.0. 42.0}) / (Float64Array withAll: {2.0. 3.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0. 42.0}) * (Float64Array withAll: {2.0. 3.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0. 42.0}) + (Float64Array withAll: {2.0. 3.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0. 42.0}) - (Float64Array withAll: {2.0. 3.0})] raise: Error.
+ 	self should: [(Float64Array withAll: {4.0. 6.0. 42.0}) dot: (Float64Array withAll: {2.0. 3.0})] raise: Error.
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: FloatArrayTest>>testThatDivideAvoidsUnecessaryOverflow (in category 'tests') -----
+ testThatDivideAvoidsUnecessaryOverflow
+ 	| f1 expectedResult |
+ 	f1 := 1.0e-39.
+ 	expectedResult := Float64Array with: 1.0.
+ 	
+ 	"If any of these primitives inverse the dividend into a float, then it will overflow.
+ 	It will work though if using intermediate double."
+ 	self assert: expectedResult equals: f1 / (Float64Array with: f1).
+ 	self assert: expectedResult equals: (Float64Array with: f1) / f1.
+ 	self assert: expectedResult equals: (Float64Array with: f1) / (Float64Array with: f1).!



More information about the Squeak-dev mailing list