[squeak-dev] FFI: FFI-Tests-mt.20.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Jun 19 07:54:17 UTC 2020


Marcel Taeumel uploaded a new version of FFI-Tests to project FFI:
http://source.squeak.org/FFI/FFI-Tests-mt.20.mcz

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

Name: FFI-Tests-mt.20
Author: mt
Time: 19 June 2020, 9:54:16.867059 am
UUID: 574eaeaa-cd4e-2749-a31a-553c251419b9
Ancestors: FFI-Tests-mt.19

Adds tests for type alias issue. See http://forum.world.st/FFI-ExternalTypeAlias-td5118709.html

Also do some test re-organization.

=============== Diff against FFI-Tests-mt.19 ===============

Item was changed:
+ ----- Method: FFIPluginTests>>test8IntSum (in category 'tests') -----
- ----- Method: FFIPluginTests>>test8IntSum (in category 'simple tests') -----
  test8IntSum
  	"Test using generic FFI spec"
  	| result meth n interval |
  	meth := ExternalLibraryFunction
  				name:'ffiTest8IntSum' module: FFITestLibrary moduleName
  				callType: 0 returnType: ExternalType long
  				argumentTypes: (Array new: (n := 8) withAll: ExternalType long).
  	interval := 1 - n * n to: n * n by: 2 * n + 1.
  	result := meth invokeWithArguments: interval asArray.
  	self assert: interval sum equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>test8LongLongSum (in category 'tests') -----
- ----- Method: FFIPluginTests>>test8LongLongSum (in category 'simple tests') -----
  test8LongLongSum
  	"Test using generic FFI spec"
  	| result meth n interval |
  	meth := ExternalLibraryFunction
  				name:'ffiTest8LongLongSum' module: FFITestLibrary moduleName
  				callType: 0 returnType: ExternalType signedLongLong
  				argumentTypes: (Array new: (n := 8) withAll: ExternalType signedLongLong).
  	interval := 1 - n * n << 32 + (1 - n * n) to: n * n - n << 32 + (3 * n * n) by: 2 * n << 32 + (3 * n).
  	result := meth invokeWithArguments: interval asArray.
  	self assert: interval sum equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testAccessingUnion (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testAccessingUnion (in category 'union tests') -----
  testAccessingUnion
  	| ufi |
  	ufi := FFITestUfi new.
  	ufi i1: 2.
  	self assert: 2 equals: ufi i1.
  	ufi f1: 1.0.
  	self assert: 1.0 equals: ufi f1.
  	self assert: 1.0 asIEEE32BitWord equals: ufi i1.
  	ufi i1: 2.0 asIEEE32BitWord.
  	self assert: 2.0 equals: ufi f1.!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedCharCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedCharCall (in category 'simple tests') -----
  testConstructedCharCall
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiTestChars' module: FFITestLibrary moduleName 
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType char
- 		callType: 0 returnType: ExternalType char
  		argumentTypes: (Array new: 4 withAll: ExternalType char).
  	result := meth invokeWith: $A with: 65 with: 65.0 with: true.
  	self assert: result isCharacter.
  	self assert: 130 equals: result asciiValue!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedDoubleCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedDoubleCall (in category 'simple tests') -----
  testConstructedDoubleCall
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiTestDoubles' module: FFITestLibrary moduleName 
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType double
- 		callType: 0 returnType: ExternalType double
  		argumentTypes: (Array new: 2 withAll: ExternalType double).
  	result := meth invokeWithArguments: (Array with: 41 with: true).
  	self assert: 42.0 equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedFloatCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedFloatCall (in category 'simple tests') -----
  testConstructedFloatCall
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiTestFloats' module: FFITestLibrary moduleName 
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType float
- 		callType: 0 returnType: ExternalType float
  		argumentTypes: (Array new: 2 withAll: ExternalType float).
  	result := meth invokeWith: $A with: 65.0.
  	self assert: 130.0 equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedIntCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedIntCall (in category 'simple tests') -----
  testConstructedIntCall
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiTestInts' module: FFITestLibrary moduleName
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType signedLong
- 		callType: 0 returnType: ExternalType signedLong
  		argumentTypes: (Array new: 4 withAll: ExternalType signedLong).
  	result := meth invokeWith: $A with: 65 with: 65.0 with: true.
  	self assert: 130 equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedPrintString (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedPrintString (in category 'simple tests') -----
  testConstructedPrintString
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiPrintString' module: FFITestLibrary moduleName 
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType string
- 		callType: 0 returnType: ExternalType string
  		argumentTypes: (Array with: ExternalType string).
  	result := meth invokeWith:'Hello World!!'.
  	self assert: 'Hello World!!' equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testConstructedShortCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testConstructedShortCall (in category 'simple tests') -----
  testConstructedShortCall
  	"Test using generic FFI spec"
  	| result meth |
  	meth := ExternalLibraryFunction
  		name:'ffiTestShorts' module: FFITestLibrary moduleName 
+ 		callType: ExternalFunction callTypeCDecl returnType: ExternalType short
- 		callType: 0 returnType: ExternalType short
  		argumentTypes: (Array new: 4 withAll: ExternalType short).
  	result := meth invokeWithArguments: (Array with: $A with: 65 with: 65.0 with: true).
  	self assert: 130 equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testFloats13Sum (in category 'tests') -----
- ----- Method: FFIPluginTests>>testFloats13Sum (in category 'simple tests') -----
  testFloats13Sum
  	"Test using generic FFI spec"
  	| result meth n args |
  	meth := ExternalLibraryFunction
  				name:'ffiTestFloats13' module: FFITestLibrary moduleName
  				callType: 0 returnType: ExternalType float
  				argumentTypes: (Array new: (n := 13) withAll: ExternalType float).
  	args := (123.456 to: 3.21 * 13 + 123.456 by: 3.21) asArray first: 13.
  	result := meth invokeWithArguments: args.
  	self assert: (result between: args sum - 0.0005 and: args sum + 0.0005)!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericBoolCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericBoolCall (in category 'simple tests') -----
  testGenericBoolCall
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestBool: true with: false with: true with: false.
  	self assert: result.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericBoolCall2 (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericBoolCall2 (in category 'simple tests') -----
  testGenericBoolCall2
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestBool: false with: false with: true with: true.
  	self deny: result.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericBoolCall3 (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericBoolCall3 (in category 'simple tests') -----
  testGenericBoolCall3
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestBool: -1 with: 1 with: 0 with: 0.
  	self deny: result.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericCharCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericCharCall (in category 'simple tests') -----
  testGenericCharCall
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestChar: $A with: 65 with: 65.0 with: true.
  	self assert: result isCharacter.
  	self assert: result asciiValue = 130.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericDoubleCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericDoubleCall (in category 'simple tests') -----
  testGenericDoubleCall
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestDoubles: $A with: 65.0.
  	self assert: result = 130.0!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericDoubleCall2 (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericDoubleCall2 (in category 'simple tests') -----
  testGenericDoubleCall2
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestDoubles9: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0.
  	self assert: result = 45.0!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericFloatCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericFloatCall (in category 'simple tests') -----
  testGenericFloatCall
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestFloats: $A with: 65.0.
  	self assert: result = 130.0!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericIntCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericIntCall (in category 'simple tests') -----
  testGenericIntCall
  	"Test using generic FFI spec"
  	| result |
  	self flag: #ffiLongVsInt.
  	result := FFITestLibrary ffiTestInt: $A with: 65 with: 65.0 with: true.
  	self assert: result = 130.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericLongCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericLongCall (in category 'simple tests') -----
  testGenericLongCall
  	"Test using generic FFI spec"
  	| result |
  	self flag: #ffiLongVsInt.
  	result := FFITestLibrary ffiTestLong: $A with: 65 with: 65.0 with: true.
  	self assert: result = 130.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericMixedDoublesIntAndStruct (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericMixedDoublesIntAndStruct (in category 'simple tests') -----
  testGenericMixedDoublesIntAndStruct
  	"Test using generic FFI spec"
  	| result i struct |
  	i := 42.
  	struct := FFITestPoint4 new.
  	struct x: 1. struct y: 2. struct z: 3. struct w: 4.
  	result := FFITestLibrary ffiTestMixedDoublesIntAndStruct: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0 i: 42 s: struct.
  	self assert: (result closeTo: 45.0 + 42 + 10) !

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericMixedFloatsAndDouble (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericMixedFloatsAndDouble (in category 'simple tests') -----
  testGenericMixedFloatsAndDouble
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestMixedFloatsAndDouble: 1.2 with: 3.4 with: 5.6 with: 7.8.
  	self assert: (result closeTo: 1.2 + 3.4 + 5.6 + 7.8) !

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericPrintString (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericPrintString (in category 'simple tests') -----
  testGenericPrintString
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiPrintString:'Hello World!!'.
  	self assert: result = 'Hello World!!'.!

Item was changed:
+ ----- Method: FFIPluginTests>>testGenericShortCall (in category 'tests') -----
- ----- Method: FFIPluginTests>>testGenericShortCall (in category 'simple tests') -----
  testGenericShortCall
  	"Test using generic FFI spec"
  	| result |
  	result := FFITestLibrary ffiTestShort: $A with: 65 with: 65.0 with: true.
  	self assert: result = 130.!

Item was added:
+ ----- Method: FFIPluginTests>>testIntAliasCall (in category 'tests - type alias') -----
+ testIntAliasCall
+ 
+ 	| result |
+ 	result := FFITestLibrary
+ 		ffiTestIntAlias4IntSum: (FFITestIntAlias fromHandle: 1)
+ 		with: (FFITestIntAlias fromHandle: 2)
+ 		with: (FFITestIntAlias fromHandle: 3)
+ 		with: (FFITestIntAlias fromHandle: 4).
+ 	self assert: 10 equals: result.!

Item was added:
+ ----- Method: FFIPluginTests>>testIntAliasCallReturnIntAlias (in category 'tests - type alias') -----
+ testIntAliasCallReturnIntAlias
+ 
+ 	| result |
+ 	result := FFITestLibrary
+ 		ffiTestIntAlias4IntSum: (FFITestIntAlias fromHandle: 1)
+ 		with: (FFITestIntAlias fromHandle: 2)
+ 		with: (FFITestIntAlias fromHandle: 3)
+ 		with: (FFITestIntAlias fromHandle: 4).
+ 	self
+ 		assert: (result isKindOf: FFITestIntAlias);
+ 		assert: 10 equals: result value.!

Item was added:
+ ----- Method: FFIPluginTests>>testIntCallReturnIntAlias (in category 'tests - type alias') -----
+ testIntCallReturnIntAlias
+ 
+ 	| result |
+ 	result := FFITestLibrary ffiTestIntAlias4IntSum: 1 with: 2 with: 3 with: 4.
+ 	self
+ 		assert: (result isKindOf: FFITestIntAlias);
+ 		assert: 10 equals: result value.!

Item was changed:
+ ----- Method: FFIPluginTests>>testLibraryCharCall (in category 'tests - library') -----
- ----- Method: FFIPluginTests>>testLibraryCharCall (in category 'simple tests') -----
  testLibraryCharCall
  	"Test using call from ExternalLibrary"
  	| result |
  	result := FFITestLibrary new ffiTestChar: $A with: 65 with: 65.0 with: true.
  	self assert: result isCharacter.
  	self assert: result asciiValue = 130.!

Item was changed:
+ ----- Method: FFIPluginTests>>testLibraryDoubleCall (in category 'tests - library') -----
- ----- Method: FFIPluginTests>>testLibraryDoubleCall (in category 'simple tests') -----
  testLibraryDoubleCall
  	"Test using call from ExternalLibrary"
  	| result |
  	result := FFITestLibrary new ffiTestDoubles: $A with: 65.0.
  	self assert: result = 130.0!

Item was changed:
+ ----- Method: FFIPluginTests>>testLibraryFloatCall (in category 'tests - library') -----
- ----- Method: FFIPluginTests>>testLibraryFloatCall (in category 'simple tests') -----
  testLibraryFloatCall
  	"Test using call from ExternalLibrary"
  	| result |
  	result := FFITestLibrary new ffiTestFloats: $A with: 65.0.
  	self assert: result = 130.0!

Item was changed:
+ ----- Method: FFIPluginTests>>testLibraryIntCall (in category 'tests - library') -----
- ----- Method: FFIPluginTests>>testLibraryIntCall (in category 'simple tests') -----
  testLibraryIntCall
  	"Test using call from ExternalLibrary"
  	| result |
  	result := FFITestLibrary new ffiTestInt: $A with: 65 with: 65.0 with: true.
  	self assert: result = 130.!

Item was changed:
+ ----- Method: FFIPluginTests>>testLibraryPrintString (in category 'tests - library') -----
- ----- Method: FFIPluginTests>>testLibraryPrintString (in category 'simple tests') -----
  testLibraryPrintString
  	"Test using call from ExternalLibrary"
  	| result |
  	result := FFITestLibrary new ffiPrintString:'Hello World!!'.
  	self assert: result = 'Hello World!!'.!

Item was changed:
+ ----- Method: FFIPluginTests>>testLoadSymbolFromModule (in category 'tests - other') -----
- ----- Method: FFIPluginTests>>testLoadSymbolFromModule (in category 'other tests') -----
  testLoadSymbolFromModule
  	| address |
  	
  	"Ok"
  	address := ExternalAddress loadSymbol: 'ffiTestFloats' module: FFITestLibrary moduleName.
  	self deny: address isNil.
  	self deny: address isNull.
  	"Symbol does not exists"
  	self 
  		should: [ ExternalAddress loadSymbol: 'ffi_does_not_exist' module: FFITestLibrary moduleName ]
  		raise: Error.
  	"Module does not exists"
  	self 
  		should: [ ExternalAddress loadSymbol: 'ffiTestFloats' module: 'NonExistingModule' ]
  		raise: Error.		!

Item was changed:
+ ----- Method: FFIPluginTests>>testLongLongA1 (in category 'tests') -----
- ----- Method: FFIPluginTests>>testLongLongA1 (in category 'simple tests') -----
  testLongLongA1
  	"Test passing a char and two longlongs."
  	| byte long1 long2 long3 |
  	byte := 42.
  	long1 := 16r123456789012.
  	long2 := (-1 << 31).
  	long3 := FFITestLibrary ffiTestLongLongA1: byte with: long1 with: long2.
  	self assert: long3 = (byte + long1 + long2)!

Item was changed:
+ ----- Method: FFIPluginTests>>testLongLongA3 (in category 'tests') -----
- ----- Method: FFIPluginTests>>testLongLongA3 (in category 'simple tests') -----
  testLongLongA3
  	"Test passing a char, a longlong, and another char."
  	| byte1 long1 byte2 long2 |
  	byte1 := 3.
  	long1 := 16r123456789012.
  	byte2 := 4.
  	long2 := FFITestLibrary ffiTestLongLongA3: byte1 with: long1 with: byte2.
  	self assert: long2 = (byte1 + long1 + byte2)!

Item was changed:
+ ----- Method: FFIPluginTests>>testLongLongs (in category 'tests') -----
- ----- Method: FFIPluginTests>>testLongLongs (in category 'simple tests') -----
  testLongLongs
  	"Test passing and returning longlongs"
  	| long1 long2 long3 |
  	long1 := 16r123456789012.
  	long2 := (-1 << 31).
  	long3 := FFITestLibrary ffiTestLongLong: long1 with: long2.
  	self assert: long3 = (long1 + long2)!

Item was changed:
+ ----- Method: FFIPluginTests>>testMixedDoublesAndLongsSum (in category 'tests') -----
- ----- Method: FFIPluginTests>>testMixedDoublesAndLongsSum (in category 'simple tests') -----
  testMixedDoublesAndLongsSum
  	"Test using generic FFI spec"
  	| result meth n args |
  	meth := ExternalLibraryFunction
  				name:'ffiTestMixedDoublesAndLongs' module: FFITestLibrary moduleName
  				callType: 0 returnType: ExternalType double
  				argumentTypes: ((1 to: (n := 20)) collect:[:i| i odd ifTrue: [ExternalType double] ifFalse: [ExternalType c_long]]).
  	args := (1 to: n) collect: [:i| i odd ifTrue: [(i // 2) odd ifTrue: [123.456 * (10 raisedTo: i)] ifFalse: [-654.321 * (10 raisedTo: i)]] ifFalse: [(i // 2) odd ifTrue: [54321 * i] ifFalse: [-54321 * i]]].
  	result := meth invokeWithArguments: args asArray.
  	self assert: args sum equals: result!

Item was changed:
+ ----- Method: FFIPluginTests>>testMixedIntAndStruct (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testMixedIntAndStruct (in category 'structure tests') -----
  testMixedIntAndStruct
  	"Test passing an integer and two structures."
  	| i1 pt1 pt2 result |
  	i1 := 42.
  	pt1 := FFITestPoint2 new.
  	pt1 x: 3. pt1 y: 4.
  	pt2 := FFITestPoint2 new.
  	pt2 x: 5. pt2 y: 6.
  	result := FFITestLibrary ffiTestMixedIntAndStruct: i1 with: pt1 with: pt2.
  	self assert: result = 60.!

Item was changed:
+ ----- Method: FFIPluginTests>>testMixedIntAndStruct2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testMixedIntAndStruct2 (in category 'structure tests') -----
  testMixedIntAndStruct2
  	"Test passing an integer and two structures."
  	| i1 pt1 result |
  	i1 := 42.
  	pt1 := FFITestPoint4 new.
  	pt1 x: 3. pt1 y: 4. pt1 z: 5. pt1 w: 6.
  	result := FFITestLibrary ffiTestMixedIntAndStruct2: i1 with: pt1.
  	self assert: result = 60.!

Item was changed:
+ ----- Method: FFIPluginTests>>testMixedIntAndStruct3 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testMixedIntAndStruct3 (in category 'structure tests') -----
  testMixedIntAndStruct3
  	"Test passing an integer and a small structure."
  	| i1 pt1 result |
  	i1 := 42.
  	pt1 := FFISmallStruct1 new.
  	pt1 x: 3. pt1 y: 4.
  	result := FFITestLibrary ffiTestMixedIntAndStruct3: i1 with: pt1.
  	self assert: result = 49!

Item was changed:
+ ----- Method: FFIPluginTests>>testPoint2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testPoint2 (in category 'structure tests') -----
  testPoint2
  	"Test passing and returning up of structures >32bit and <= 64 bit"
  	| pt1 pt2 pt3 |
  	pt1 := FFITestPoint2 new.
  	pt1 x: 1. pt1 y: 2.
  	pt2 := FFITestPoint2 new.
  	pt2 x: 3. pt2 y: 4.
  	pt3 := FFITestLibrary ffiTestPoint2: pt1 with: pt2.
  	self assert: pt3 x = 4.
  	self assert: pt3 y = 6.!

Item was changed:
+ ----- Method: FFIPluginTests>>testPoint4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testPoint4 (in category 'structure tests') -----
  testPoint4
  	"Test passing and returning up of structures > 64 bit"
  	| pt1 pt2 pt3 |
  	pt1 := FFITestPoint4 new.
  	pt1 x: 1. pt1 y: 2. pt1 z: 3. pt1 w: 4.
  	pt2 := FFITestPoint4 new.
  	pt2 x: 5. pt2 y: 6. pt2 z: 7. pt2 w: 8.
  	pt3 := FFITestLibrary ffiTestPoint4: pt1 with: pt2.
  	self assert: pt3 x = 6.
  	self assert: pt3 y = 8.
  	self assert: pt3 z = 10.
  	self assert: pt3 w = 12.!

Item was changed:
+ ----- Method: FFIPluginTests>>testPointers (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testPointers (in category 'structure tests') -----
  testPointers
  	"Test passing and returning of pointers to structs"
  	| pt1 pt2 pt3 |
  	pt1 := FFITestPoint4 new.
  	pt1 x: 1. pt1 y: 2. pt1 z: 3. pt1 w: 4.
  	pt2 := FFITestPoint4 new.
  	pt2 x: 5. pt2 y: 6. pt2 z: 7. pt2 w: 8.
  	pt3 := FFITestLibrary ffiTestPointers: pt1 with: pt2.
  	self assert: pt3 x = 6.
  	self assert: pt3 y = 8.
  	self assert: pt3 z = 10.
  	self assert: pt3 w = 12.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUdSi2 (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUdSi2 (in category 'union tests') -----
  testReturnStructPassingUnionUfdUdSi2
  	"Test returning struct made from 2 unions"
  	| ufd udSi2 sUfdUdSi2 |
  	ufd := FFITestLibrary ffiTestInitUfdWithDouble: Float pi.
  	udSi2 := FFITestLibrary ffiTestInitUdSi2WithInt: 1 int: 2.
  	sUfdUdSi2 := FFITestLibrary ffiTestInitSUfd: ufd udSi2: udSi2.
  	self assert: Float pi equals: sUfdUdSi2 ufd1 d1.
  	self assert: 1 equals: sUfdUdSi2 udSii2 sii1 i1.
  	self assert: 2 equals: sUfdUdSi2 udSii2 sii1 i2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUfi (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUfi (in category 'union tests') -----
  testReturnStructPassingUnionUfdUfi
  	"Test returning struct made from 2 unions"
  	| ufd ufi sUfdUfi |
  	ufd := FFITestLibrary ffiTestInitUfdWithDouble: Float pi.
  	ufi := FFITestLibrary ffiTestInitUfiWithInt: 1.
  	sUfdUfi := FFITestLibrary ffiTestInitSUfd: ufd ufi: ufi.
  	self assert: Float pi equals: sUfdUfi ufd1 d1.
  	self assert: 1 equals: sUfdUfi ufi2 i1.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSSdi5 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSSdi5 (in category 'structure tests') -----
  testReturnStructSSdi5
  	"Test returning struct with five struct double int (64 + 32 bits)"
  	| ssdi5 |
  	ssdi5 := FFITestLibrary ffiTestReturnSSdi5.
  	self assert: ssdi5 sdi1 d1 = 1.0.
  	self assert: ssdi5 sdi2 d1 = 2.0.
  	self assert: ssdi5 sdi3 d1 = 3.0.
  	self assert: ssdi5 sdi4 d1 = 4.0.
  	self assert: ssdi5 sdi5 d1 = 5.0.
  	self assert: ssdi5 sdi1 i2 = 1.
  	self assert: ssdi5 sdi2 i2 = 2.
  	self assert: ssdi5 sdi3 i2 = 3.
  	self assert: ssdi5 sdi4 i2 = 4.
  	self assert: ssdi5 sdi5 i2 = 5.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSd2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSd2 (in category 'structure tests') -----
  testReturnStructSd2
  	"Test returning struct with two double"
  	| sd2 |
  	sd2 := FFITestLibrary ffiTestReturnSd2.
  	self assert: sd2 d1 = 1.0.
  	self assert: sd2 d2 = 2.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSdi (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSdi (in category 'structure tests') -----
  testReturnStructSdi
  	"Test returning struct double int (64 + 32 bits)"
  	| sdi |
  	sdi := FFITestLibrary ffiTestReturnSdi.
  	self assert: sdi d1 = 1.0.
  	self assert: sdi i2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSf2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSf2 (in category 'structure tests') -----
  testReturnStructSf2
  	"Test returning struct with two float"
  	| sf2 |
  	sf2 := FFITestLibrary ffiTestReturnSf2.
  	self assert: sf2 f1 = 1.0.
  	self assert: sf2 f2 = 2.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSf2d (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSf2d (in category 'structure tests') -----
  testReturnStructSf2d
  	"Test returning struct with two float one double"
  	| sf2d |
  	sf2d := FFITestLibrary ffiTestReturnSf2d.
  	self assert: sf2d f1 = 1.0.
  	self assert: sf2d f2 = 2.0.
  	self assert: sf2d d3 = 3.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSf4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSf4 (in category 'structure tests') -----
  testReturnStructSf4
  	"Test returning struct with four float"
  	| sf4 |
  	sf4 := FFITestLibrary ffiTestReturnSf4.
  	self assert: sf4 f1 = 1.0.
  	self assert: sf4 f2 = 2.0.
  	self assert: sf4 f3 = 3.0.
  	self assert: sf4 f4 = 4.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSfdf (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSfdf (in category 'structure tests') -----
  testReturnStructSfdf
  	"Test returning struct with float double float"
  	| sfdf |
  	sfdf := FFITestLibrary ffiTestReturnSfdf.
  	self assert: sfdf f1 = 1.0.
  	self assert: sfdf d2 = 2.0.
  	self assert: sfdf f3 = 3.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSfi (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSfi (in category 'structure tests') -----
  testReturnStructSfi
  	"Test returning struct with float int (32 + 32 bits)"
  	| sfi |
  	sfi := FFITestLibrary ffiTestReturnSfi.
  	self assert: sfi f1 = 1.0.
  	self assert: sfi i2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSi2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSi2 (in category 'structure tests') -----
  testReturnStructSi2
  	"Test returning struct with two int (32 bits)"
  	| si2 |
  	si2 := FFITestLibrary ffiTestReturnSi2.
  	self assert: si2 i1 = 1.
  	self assert: si2 i2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSl2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSl2 (in category 'structure tests') -----
  testReturnStructSl2
  	"Test returning struct with two long long int (64 bits)"
  	| sl2 |
  	sl2 := FFITestLibrary ffiTestReturnSl2.
  	self assert: sl2 l1 = 1.
  	self assert: sl2 l2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSs2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSs2 (in category 'structure tests') -----
  testReturnStructSs2
  	"Test returning struct with two short int (16 bits)"
  	| ss2 |
  	ss2 := FFITestLibrary ffiTestReturnSs2.
  	self assert: ss2 s1 = 1.
  	self assert: ss2 s2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSs2i (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSs2i (in category 'structure tests') -----
  testReturnStructSs2i
  	"Test returning struct with two short int (16 bits) one int (32 bits)"
  	| ss2i |
  	ss2i := FFITestLibrary ffiTestReturnSs2i.
  	self assert: ss2i s1 = 1.
  	self assert: ss2i s2 = 2.
  	self assert: ss2i i3 = 3.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSs4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSs4 (in category 'structure tests') -----
  testReturnStructSs4
  	"Test returning struct with four short int (16 bits)"
  	| ss4 |
  	ss4 := FFITestLibrary ffiTestReturnSs4.
  	self assert: ss4 s1 = 1.
  	self assert: ss4 s2 = 2.
  	self assert: ss4 s3 = 3.
  	self assert: ss4 s4 = 4.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsSsf (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsSsf (in category 'structure tests') -----
  testReturnStructSsSsf
  	"Test returning struct with short and sub structure short-float"
  	| ssSsf |
  	ssSsf := FFITestLibrary ffiTestReturnSsSsf.
  	self assert: ssSsf s1 = 1.
  	self assert: ssSsf ssf2 s1 = 2.
  	self assert: ssSsf ssf2 f2 = 3.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsSsi (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsSsi (in category 'structure tests') -----
  testReturnStructSsSsi
  	"Test returning struct with short and sub structure short-int"
  	| ssSsi |
  	ssSsi := FFITestLibrary ffiTestReturnSsSsi.
  	self assert: ssSsi s1 = 1.
  	self assert: ssSsi ssi2 s1 = 2.
  	self assert: ssSsi ssi2 i2 = 3.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsf (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsf (in category 'structure tests') -----
  testReturnStructSsf
  	"Test returning struct with short float (16 + 32 bits)"
  	| ssf |
  	ssf := FFITestLibrary ffiTestReturnSsf.
  	self assert: ssf s1 = 1.
  	self assert: ssf f2 = 2.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsi (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsi (in category 'structure tests') -----
  testReturnStructSsi
  	"Test returning struct with short int (16 + 32 bits)"
  	| ssi |
  	ssi := FFITestLibrary ffiTestReturnSsi.
  	self assert: ssi s1 = 1.
  	self assert: ssi i2 = 2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsis (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsis (in category 'structure tests') -----
  testReturnStructSsis
  	"Test returning struct with short int short (16 + 32 + 16 bits)"
  	| ssis |
  	ssis := FFITestLibrary ffiTestReturnSsis.
  	self assert: ssis s1 = 1.
  	self assert: ssis i2 = 2.
  	self assert: ssis s3 = 3.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSslf (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSslf (in category 'structure tests') -----
  testReturnStructSslf
  	"Test returning struct with short longlong float (16 + 64 + 32 bits)"
  	| sslf |
  	sslf := FFITestLibrary ffiTestReturnSslf.
  	self assert: sslf s1 = 1.
  	self assert: sslf l2 = 2.
  	self assert: sslf f3 = 3.0.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnStructSsls (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testReturnStructSsls (in category 'structure tests') -----
  testReturnStructSsls
  	"Test returning struct with short longlong short (16 + 64 + 16 bits)"
  	| ssls |
  	ssls := FFITestLibrary ffiTestReturnSsls.
  	self assert: ssls s1 = 1.
  	self assert: ssls l2 = 2.
  	self assert: ssls s3 = 3.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnUnionUdSi2 (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testReturnUnionUdSi2 (in category 'union tests') -----
  testReturnUnionUdSi2
  	"Test returning union with double or 2 int (64 or 64 bits)"
  	| udSi2 |
  	udSi2 := FFITestLibrary ffiTestInitUdSi2WithDouble: Float pi.
  	self assert: Float pi equals: udSi2 d1.
  	self assert: (Float pi basicAt: 1) equals: udSi2 sii1 i2. "Assume Little Endianness"
  	self assert: (Float pi basicAt: 2) equals: udSi2 sii1 i1.
  	udSi2 := FFITestLibrary ffiTestInitUdSi2WithInt: 1 int: 2.
  	self assert: 1 equals: udSi2 sii1 i1.
  	self assert: 2 equals: udSi2 sii1 i2.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnUnionUfd (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testReturnUnionUfd (in category 'union tests') -----
  testReturnUnionUfd
  	"Test returning union with float or double (32 or 64 bits)"
  	| ufd |
  	ufd := FFITestLibrary ffiTestInitUfdWithFloat: 1.0.
  	self assert: 1.0 equals: ufd f1.
  	ufd := FFITestLibrary ffiTestInitUfdWithDouble: 2.0.
  	self assert: 2 equals: ufd d1.!

Item was changed:
+ ----- Method: FFIPluginTests>>testReturnUnionUfi (in category 'tests - union') -----
- ----- Method: FFIPluginTests>>testReturnUnionUfi (in category 'union tests') -----
  testReturnUnionUfi
  	"Test returning union with float or int (32 or 32 bits)"
  	| ufi |
  	ufi := FFITestLibrary ffiTestInitUfiWithFloat: 1.0.
  	self assert: 1.0 equals: ufi f1.
  	self assert: 1.0 asIEEE32BitWord equals: ufi i1.
  	ufi := FFITestLibrary ffiTestInitUfiWithInt: 2.
  	self assert: 2 equals: ufi i1.!

Item was changed:
+ ----- Method: FFIPluginTests>>testSmallStructureReturn (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSmallStructureReturn (in category 'structure tests') -----
  testSmallStructureReturn
  	"Test returning small structures (<4 bytes) which are returned in a register on some platforms."
  	| pt1 |
  
  	pt1 := FFITestLibrary ffiTestSmallStructReturn.
  	self assert: pt1 x = 3.
  	self assert: pt1 y = 4.!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSSdi5 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSSdi5 (in category 'structure tests') -----
  testSumStructSSdi5
  	"Test passing a structure larger than 8 eighbytes"
  	| sdi1 sdi2 sdi3 sdi4 sdi5 ssdi5 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sdi3 := FFITestSdi new.
  	sdi3 d1: 0.125; i2: 3.
  	sdi4 := FFITestSdi new.
  	sdi4 d1: 2.0; i2: 1.
  	sdi5 := FFITestSdi new.
  	sdi5 d1: 4.0; i2: 2.
  	ssdi5 := FFITestSSdi5 new.
  	ssdi5 sdi1: sdi1; sdi2: sdi2; sdi3: sdi3; sdi4: sdi4; sdi5: sdi5.
  	sum := FFITestLibrary ffiTestSumStructSdi5: ssdi5.
  	self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 + 4.0 + 2 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSdi (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSdi (in category 'structure tests') -----
  testSumStructSdi
  	"Test passing structure double int"
  	| sdi sum |
  	sdi := FFITestSdi new.
  	sdi d1: 0.5; i2: 16r12345678.
  	sum := FFITestLibrary ffiTestSumSdi: sdi.
  	self assert: 0.5 + 16r12345678 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSdi2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSdi2 (in category 'structure tests') -----
  testSumStructSdi2
  	"Test passing 2 structure double int"
  	| sdi1 sdi2 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sum := FFITestLibrary ffiTestSumSdi: sdi1 sdi: sdi2.
  	self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSdi4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSdi4 (in category 'structure tests') -----
  testSumStructSdi4
  	"Test passing 4 structure double int"
  	| sdi1 sdi2 sdi3 sdi4 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sdi3 := FFITestSdi new.
  	sdi3 d1: 0.125; i2: 3.
  	sdi4 := FFITestSdi new.
  	sdi4 d1: 2.0; i2: 1.
  	sum := FFITestLibrary ffiTestSumSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4.
  	self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSfd (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSfd (in category 'structure tests') -----
  testSumStructSfd
  	"Test passing structure float double"
  	| sfd sum |
  	sfd := FFITestSfd new.
  	sfd f1: 0.5; d2: 305419896.0.
  	sum := FFITestLibrary ffiTestSumSfd: sfd.
  	self assert: 0.5 + 305419896.0 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSfd2 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSfd2 (in category 'structure tests') -----
  testSumStructSfd2
  	"Test passing 2 structure float double "
  	| sfd1 sfd2 sum |
  	sfd1 := FFITestSfd new.
  	sfd1 f1: 0.5; d2: 305419896.0.
  	sfd2 := FFITestSfd new.
  	sfd2 f1: 0.25; d2: 19088743.0.
  	sum := FFITestLibrary ffiTestSumSfd: sfd1 sfd: sfd2.
  	self assert: 0.5 + 305419896.0 + 0.25 + 19088743.0 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSfd4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSfd4 (in category 'structure tests') -----
  testSumStructSfd4
  	"Test passing 4 structure float double"
  	| sfd1 sfd2 sfd3 sfd4 sum |
  	sfd1 := FFITestSfd new.
  	sfd1 f1: 0.5; d2: 305419896.0.
  	sfd2 := FFITestSfd new.
  	sfd2 f1: 0.25; d2: 19088743.0.
  	sfd3 := FFITestSfd new.
  	sfd3 f1: 0.125; d2: 3.
  	sfd4 := FFITestSfd new.
  	sfd4 f1: 2.0; d2: 1.
  	sum := FFITestLibrary ffiTestSumSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4.
  	self assert: 0.5 + 305419896.0 + 0.25 + 19088743.0 + 0.125 + 3.0 + 2.0 + 1.0 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumStructSslf (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumStructSslf (in category 'structure tests') -----
  testSumStructSslf
  	"Test passing structure short long float"
  	| sslf sum |
  	sslf := FFITestSslf new.
  	sslf s1: -32768; l2: 16r1234560000; f3: 65536.0.
  	sum := FFITestLibrary ffiTestSumSslf: sslf.
  	self assert: -32768 + 16r1234560000 + 65536.0 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumdWithStructSdi4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumdWithStructSdi4 (in category 'structure tests') -----
  testSumdWithStructSdi4
  	"Test passing 4 structure double int"
  	| sdi1 sdi2 sdi3 sdi4 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sdi3 := FFITestSdi new.
  	sdi3 d1: 0.125; i2: 3.
  	sdi4 := FFITestSdi new.
  	sdi4 d1: 2.0; i2: 1.
  	sum := FFITestLibrary ffiTestSumd: 5.0 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4.
  	self assert: 5.0 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumdiWithStructSdi4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumdiWithStructSdi4 (in category 'structure tests') -----
  testSumdiWithStructSdi4
  	"Test passing 4 structure double int"
  	| sdi1 sdi2 sdi3 sdi4 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sdi3 := FFITestSdi new.
  	sdi3 d1: 0.125; i2: 3.
  	sdi4 := FFITestSdi new.
  	sdi4 d1: 2.0; i2: 1.
  	sum := FFITestLibrary ffiTestSumd: 5.0 i: 6 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4.
  	self assert: 5.0 + 6 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumfWithStructSfd4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumfWithStructSfd4 (in category 'structure tests') -----
  testSumfWithStructSfd4
  	"Test passing 4 structure float double"
  	| sfd1 sfd2 sfd3 sfd4 sum |
  	sfd1 := FFITestSfd new.
  	sfd1 f1: 0.5; d2: 305419896.0.
  	sfd2 := FFITestSfd new.
  	sfd2 f1: 0.25; d2: 19088743.0.
  	sfd3 := FFITestSfd new.
  	sfd3 f1: 0.125; d2: 3.
  	sfd4 := FFITestSfd new.
  	sfd4 f1: 2.0; d2: 1.
  	sum := FFITestLibrary ffiTestSumf: 5.0 withSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4.
  	self assert: 5.0 + 0.5 + 305419896.0 + 0.25 + 19088743.0 + 0.125 + 3.0 + 2.0 + 1.0 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testSumiWithStructSdi4 (in category 'tests - structure') -----
- ----- Method: FFIPluginTests>>testSumiWithStructSdi4 (in category 'structure tests') -----
  testSumiWithStructSdi4
  	"Test passing 4 structure double int"
  	| sdi1 sdi2 sdi3 sdi4 sum |
  	sdi1 := FFITestSdi new.
  	sdi1 d1: 0.5; i2: 16r12345678.
  	sdi2 := FFITestSdi new.
  	sdi2 d1: 0.25; i2: 16r01234567.
  	sdi3 := FFITestSdi new.
  	sdi3 d1: 0.125; i2: 3.
  	sdi4 := FFITestSdi new.
  	sdi4 d1: 2.0; i2: 1.
  	sum := FFITestLibrary ffiTestSumi: 5 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4.
  	self assert: 5 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum!

Item was changed:
+ ----- Method: FFIPluginTests>>testUintRange (in category 'tests') -----
- ----- Method: FFIPluginTests>>testUintRange (in category 'simple tests') -----
  testUintRange
  	"Simple test for making sure the FFI can call certain numbers in the uint range."
  	| result |
  	self flag: #ffiLongVsInt.
  	self shouldnt:[result := FFITestLibrary ffiTestUint:  3894967296 "1<<32-4e8 " with: 3894967296 with: 3103854339 with: 3103854339] raise: Error.
  	self should: result =  -8e8.!

Item was changed:
+ ----- Method: FFIPluginTests>>testUlongRange (in category 'tests') -----
- ----- Method: FFIPluginTests>>testUlongRange (in category 'simple tests') -----
  testUlongRange
  	"Simple test for making sure the FFI can call certain numbers in the ulong range.
  	Note: since primitive is using unsigned int under the hood, avoid an integer overflow by choosing appropriate unsigned values.
  	Note: only first two parameters are added"
  	| result |
  	self flag: #ffiLongVsInt.
  	self shouldnt:[result := FFITestLibrary ffiTestUlong:  3894967296 "1<<32-4e8 " with: 3894967296 with: 3103854339 with: 3103854339] raise: Error.
  	self should: result =  -8e8.!

Item was added:
+ ExternalTypeAlias subclass: #FFITestIntAlias
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'FFI-Tests-Fixtures'!

Item was added:
+ ----- Method: FFITestIntAlias class>>originalTypeName (in category 'type alias') -----
+ originalTypeName
+ 
+ 	^ 'int'!

Item was added:
+ ----- Method: FFITestLibrary class>>ffiTest4IntAliasSum:with:with:with: (in category 'primitives - type alias') -----
+ ffiTest4IntAliasSum: c1 with: c2 with: c3 with: c4
+ 	"FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4"
+ 	<cdecl: int 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'>
+ 	^self externalCallFailed!

Item was added:
+ ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntAliasSum:with:with:with: (in category 'primitives - type alias') -----
+ ffiTestIntAlias4IntAliasSum: c1 with: c2 with: c3 with: c4
+ 	"FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4"
+ 	<cdecl: int 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'>
+ 	^self externalCallFailed!

Item was added:
+ ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntSum:with:with:with: (in category 'primitives - type alias') -----
+ ffiTestIntAlias4IntSum: c1 with: c2 with: c3 with: c4
+ 	"FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4"
+ 	<cdecl: FFITestIntAlias 'ffiTest4IntSum' (int int int int) module:'SqueakFFIPrims'>
+ 	^self externalCallFailed!




More information about the Squeak-dev mailing list