class: stx_goodies_regression class
changed: #classNamesAndAttributes
make classes autoloaded that stc cannot compile (yet)
"{ Encoding: utf8 }"
"{ Package: 'stx:goodies/regression' }"
"{ NameSpace: RegressionTests }"
TestCase subclass:#TypedArrayTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'tests-Regression-Collections'
!
!TypedArrayTests class methodsFor:'queries'!
coveredClassNames
^ #( FloatArray )
! !
!TypedArrayTests methodsFor:'tests'!
test01a_createFloatArray
|a|
a := FloatArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 4)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.0.
self assert:(a at:2) = 2.0.
self assert:(a at:3) = 3.0.
"Created: / 06-06-2019 / 12:32:04 / Claus Gittinger"
!
test01b_createDoubleArray
|a|
a := DoubleArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 8)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.0.
self assert:(a at:2) = 2.0.
self assert:(a at:3) = 3.0.
"Created: / 06-06-2019 / 12:32:23 / Claus Gittinger"
!
test01c_createByteArray
|a|
a := ByteArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 1)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = 2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:33:08 / Claus Gittinger"
!
test01d_createSignedByteArray
|a|
a := SignedByteArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 1)).
a at:1 put:1.
a at:2 put:-2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = -2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:33:30 / Claus Gittinger"
!
test01e_createWordArray
|a|
a := WordArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 2)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = 2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:33:50 / Claus Gittinger"
!
test01f_createSignedWordArray
|a|
a := SignedWordArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 2)).
a at:1 put:1.
a at:2 put:-2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = -2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:34:19 / Claus Gittinger"
!
test01g_createIntegerArray
|a|
a := IntegerArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 4)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = 2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:34:40 / Claus Gittinger"
!
test01h_createSignedIntegerArray
|a|
a := SignedIntegerArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 4)).
a at:1 put:1.
a at:2 put:-2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = -2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:34:52 / Claus Gittinger"
!
test01i_createLongIntegerArray
|a|
a := LongIntegerArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 8)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = 2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:35:07 / Claus Gittinger"
!
test01j_createSignedLongIntegerArray
|a|
a := SignedLongIntegerArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 8)).
a at:1 put:1.
a at:2 put:-2.
a at:3 put:3.
self assert:(a at:1) = 1.
self assert:(a at:2) = -2.
self assert:(a at:3) = 3.
"Created: / 06-06-2019 / 12:35:19 / Claus Gittinger"
!
test01k_createHalfFloatArray
|a|
a := HalfFloatArray new:3.
self assert:(a size == 3).
self assert:(a byteSize == (3 * 2)).
a at:1 put:1.
a at:2 put:2.
a at:3 put:3.
self assert:(a at:1) = 1.0.
self assert:(a at:2) = 2.0.
self assert:(a at:3) = 3.0.
"Created: / 06-06-2019 / 12:36:45 / Claus Gittinger"
!
test02_copyArrays
|src copy|
"/ -------------------------------------
src := FloatArray new:5.
self assert:(src size == 5).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.0.
self assert:(src at:2) = 2.0.
self assert:(src at:3) = 3.0.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.0.
self assert:(copy at:2) = 2.0.
self assert:(copy at:3) = 3.0.
"/ -------------------------------------
src := DoubleArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.0.
self assert:(src at:2) = 2.0.
self assert:(src at:3) = 3.0.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.0.
self assert:(copy at:2) = 2.0.
self assert:(copy at:3) = 3.0.
"/ -------------------------------------
src := HalfFloatArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.0.
self assert:(src at:2) = 2.0.
self assert:(src at:3) = 3.0.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.0.
self assert:(copy at:2) = 2.0.
self assert:(copy at:3) = 3.0.
"/ -------------------------------------
src := ByteArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = 2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = 2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := SignedByteArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:-2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = -2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = -2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := WordArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = 2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = 2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := SignedWordArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:-2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = -2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = -2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := IntegerArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = 2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = 2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := SignedIntegerArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:-2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = -2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = -2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := LongIntegerArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = 2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = 2.
self assert:(copy at:3) = 3.
"/ -------------------------------------
src := SignedLongIntegerArray new:9.
self assert:(src size == 9).
src at:1 put:1.
src at:2 put:-2.
src at:3 put:3.
self assert:(src at:1) = 1.
self assert:(src at:2) = -2.
self assert:(src at:3) = 3.
copy := src copyFrom:1 to:3.
self assert:(copy species == src species).
self assert:(copy size == 3).
self assert:(copy at:1) = 1.
self assert:(copy at:2) = -2.
self assert:(copy at:3) = 3.
"Modified: / 06-06-2019 / 12:38:41 / Claus Gittinger"
!
test03_byteAt
|a flt1 flt2 flt3|
"/ -------------------------------------
a := FloatArray new:3.
a at:1 put:1.
a at:2 put:2.
a at:3 put:99.
flt1 := 1 asShortFloat.
flt2 := 2 asShortFloat.
flt3 := 3 asShortFloat.
self assert:(a byteAt:1) = (flt1 byteAt:1).
self assert:(a byteAt:2) = (flt1 byteAt:2).
self assert:(a byteAt:3) = (flt1 byteAt:3).
self assert:(a byteAt:4) = (flt1 byteAt:4).
self assert:(a byteAt:5) = (flt2 byteAt:1).
self assert:(a byteAt:6) = (flt2 byteAt:2).
self assert:(a byteAt:7) = (flt2 byteAt:3).
self assert:(a byteAt:8) = (flt2 byteAt:4).
a byteAt:5 put:(flt3 byteAt:1).
a byteAt:6 put:(flt3 byteAt:2).
a byteAt:7 put:(flt3 byteAt:3).
a byteAt:8 put:(flt3 byteAt:4).
self assert:(a at:1) = flt1.
self assert:(a at:2) = flt3.
self assert:(a at:3) = 99.
"/ -------------------------------------
a := DoubleArray new:3.
a at:1 put:1.
a at:2 put:2.
a at:3 put:99.
flt1 := 1 asFloat.
flt2 := 2 asFloat.
flt3 := 3 asFloat.
self assert:(a byteAt:1) = (flt1 byteAt:1).
self assert:(a byteAt:2) = (flt1 byteAt:2).
self assert:(a byteAt:3) = (flt1 byteAt:3).
self assert:(a byteAt:4) = (flt1 byteAt:4).
self assert:(a byteAt:5) = (flt1 byteAt:5).
self assert:(a byteAt:6) = (flt1 byteAt:6).
self assert:(a byteAt:7) = (flt1 byteAt:7).
self assert:(a byteAt:8) = (flt1 byteAt:8).
self assert:(a byteAt:9) = (flt2 byteAt:1).
self assert:(a byteAt:10) = (flt2 byteAt:2).
self assert:(a byteAt:11) = (flt2 byteAt:3).
self assert:(a byteAt:12) = (flt2 byteAt:4).
self assert:(a byteAt:13) = (flt2 byteAt:5).
self assert:(a byteAt:14) = (flt2 byteAt:6).
self assert:(a byteAt:15) = (flt2 byteAt:7).
self assert:(a byteAt:16) = (flt2 byteAt:8).
a byteAt:9 put:(flt3 byteAt:1).
a byteAt:10 put:(flt3 byteAt:2).
a byteAt:11 put:(flt3 byteAt:3).
a byteAt:12 put:(flt3 byteAt:4).
a byteAt:13 put:(flt3 byteAt:5).
a byteAt:14 put:(flt3 byteAt:6).
a byteAt:15 put:(flt3 byteAt:7).
a byteAt:16 put:(flt3 byteAt:8).
self assert:(a at:1) = flt1.
self assert:(a at:2) = flt3.
self assert:(a at:3) = 99.
"/ -------------------------------------
a := IntegerArray new:3.
a at:1 put:1.
a at:2 put:2.
a at:3 put:99.
"/ this depends on the machine's byte order!!
UninterpretedBytes isBigEndian ifTrue:[
self assert:(a byteAt:1) = 0.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 1.
self assert:(a byteAt:5) = 0.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 2.
a byteAt:5 put:(flt3 byteAt:1).
a byteAt:6 put:(flt3 byteAt:2).
a byteAt:7 put:(flt3 byteAt:3).
a byteAt:8 put:(flt3 byteAt:4).
a byteAt:8 put:3.
] ifFalse:[
self assert:(a byteAt:1) = 1.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 0.
self assert:(a byteAt:5) = 2.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 0.
a byteAt:5 put:3.
].
self assert:(a at:1) = 1.
self assert:(a at:2) = 3.
self assert:(a at:3) = 99.
"/ -------------------------------------
a := LongIntegerArray new:3.
a at:1 put:1.
a at:2 put:2.
a at:3 put:99.
"/ this depends on the machine's byte order!!
UninterpretedBytes isBigEndian ifTrue:[
self assert:(a byteAt:1) = 0.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 0.
self assert:(a byteAt:5) = 0.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 1.
self assert:(a byteAt:8+1) = 0.
self assert:(a byteAt:8+2) = 0.
self assert:(a byteAt:8+3) = 0.
self assert:(a byteAt:8+4) = 0.
self assert:(a byteAt:8+5) = 0.
self assert:(a byteAt:8+6) = 0.
self assert:(a byteAt:8+7) = 0.
self assert:(a byteAt:8+8) = 2.
a byteAt:8+8 put:3.
] ifFalse:[
self assert:(a byteAt:1) = 1.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 0.
self assert:(a byteAt:5) = 0.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 0.
self assert:(a byteAt:8+1) = 2.
self assert:(a byteAt:8+2) = 0.
self assert:(a byteAt:8+3) = 0.
self assert:(a byteAt:8+4) = 0.
self assert:(a byteAt:8+5) = 0.
self assert:(a byteAt:8+6) = 0.
self assert:(a byteAt:8+7) = 0.
self assert:(a byteAt:8+8) = 0.
a byteAt:8+1 put:3.
].
self assert:(a at:1) = 1.
self assert:(a at:2) = 3.
self assert:(a at:3) = 99.
"/ -------------------------------------
a := SignedLongIntegerArray new:3.
a at:1 put:1.
a at:2 put:-2.
a at:3 put:99.
"/ this depends on the machine's byte order!!
UninterpretedBytes isBigEndian ifTrue:[
self assert:(a byteAt:1) = 0.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 0.
self assert:(a byteAt:5) = 0.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 1.
self assert:(a byteAt:8+1) = 16rFF.
self assert:(a byteAt:8+2) = 16rFF.
self assert:(a byteAt:8+3) = 16rFF.
self assert:(a byteAt:8+4) = 16rFF.
self assert:(a byteAt:8+5) = 16rFF.
self assert:(a byteAt:8+6) = 16rFF.
self assert:(a byteAt:8+7) = 16rFF.
self assert:(a byteAt:8+8) = 16rFE.
a byteAt:8+8 put:16rFD.
] ifFalse:[
self assert:(a byteAt:1) = 1.
self assert:(a byteAt:2) = 0.
self assert:(a byteAt:3) = 0.
self assert:(a byteAt:4) = 0.
self assert:(a byteAt:5) = 0.
self assert:(a byteAt:6) = 0.
self assert:(a byteAt:7) = 0.
self assert:(a byteAt:8) = 0.
self assert:(a byteAt:8+1) = 16rFE.
self assert:(a byteAt:8+2) = 16rFF.
self assert:(a byteAt:8+3) = 16rFF.
self assert:(a byteAt:8+4) = 16rFF.
self assert:(a byteAt:8+5) = 16rFF.
self assert:(a byteAt:8+6) = 16rFF.
self assert:(a byteAt:8+7) = 16rFF.
self assert:(a byteAt:8+8) = 16rFF.
a byteAt:8+1 put:16rFD.
].
self assert:(a at:1) = 1.
self assert:(a at:2) = -3.
self assert:(a at:3) = 99.
"/ -------------------------------------
"/ -------------------------------------
"Modified: / 26-08-2016 / 13:27:57 / cg"
!
test04a_halfFloatArray
|a|
"/ -------------------------------------
a := HalfFloatArray new:1.
a at:1 put:(1/3) asFloat.
"/ halfFloats have only rougly 3.5 digits precision
self assert:((a at:1) closeTo:0.3333333333 withEpsilon:0.001).
self assert:((a at:1) - 0.333333333333333) <= (HalfFloatArray epsilon * 2).
"Created: / 06-06-2019 / 13:09:08 / Claus Gittinger"
"Modified: / 06-06-2019 / 16:53:53 / Claus Gittinger"
!
test04b_floatArray
|a|
"/ -------------------------------------
a := FloatArray new:1.
a at:1 put:(1/3) asFloat.
"/ floats have only rougly 6 digits precision
self assert:((a at:1) closeTo:0.3333333333 withEpsilon:0.0000001).
self assert:((a at:1) - 0.333333333333333) <= (ShortFloat epsilon * 2).
"Created: / 06-06-2019 / 13:09:33 / Claus Gittinger"
!
test04c_doubleArray
|a|
"/ -------------------------------------
a := DoubleArray new:1.
a at:1 put:(1/3) asFloat.
self assert:((a at:1) closeTo:0.333333333333333).
self assert:((a at:1) - 0.333333333333333) < 1E-15.
self assert:((a at:1) - 0.333333333333333) <= (Float epsilon * 2).
"Created: / 06-06-2019 / 13:10:09 / Claus Gittinger"
! !
!TypedArrayTests class methodsFor:'documentation'!
version
^ '$Header$'
!
version_CVS
^ '$Header$'
! !