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

commits at source.squeak.org commits at source.squeak.org
Tue Jun 8 09:54:42 UTC 2021


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

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

Name: FFI-Tests-mt.52
Author: mt
Time: 8 June 2021, 11:54:40.903752 am
UUID: a366270d-4f7e-d447-913e-2c38fd1f2c47
Ancestors: FFI-Tests-mt.51

Complements FFI-Kernel-mt.181

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

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfAliases (in category 'tests - array types') -----
  testArrayOfAliases
  
  	self classesForTypeAliases do: [:aliasClass |
  		| contentType arrayType |
  		contentType := aliasClass externalType.
  		arrayType := contentType asArrayType: 5.
  			
  		self assert: arrayType isArrayType.
  		self assert: contentType identical: arrayType contentType.
  		self assert: 5 equals: arrayType size.
  		self assert: 5 * contentType byteSize equals: arrayType byteSize.
  
  		self
  			assert: contentType
  			identical: arrayType contentType;
  			assert: contentType byteAlignment
  			equals: arrayType byteAlignment.
  	
  		self
  			assert: contentType isTypeAlias;
  			assert: (contentType isAtomic or: [contentType isStructureType]);
  			deny: contentType isPointerType;
  			deny: contentType isArrayType.
  				
  		self
  			deny: arrayType isAtomic;
  			deny: arrayType isStructureType;
  			deny: arrayType isPointerType;
  			deny: arrayType isTypeAlias.
  	
  		self
+ 			deny: contentType referentClass isNil;
+ 			assert: arrayType referentClass isNil].!
- 			"referentClass shared"
- 			assert: contentType referentClass
- 			identical: arrayType referentClass].!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfAliasesForArrays (in category 'tests - array types') -----
  testArrayOfAliasesForArrays
  	"This is the only way to construct n-dimensional arrays for now."
  
  	| contentType arrayType |
  	contentType := FFITestAliasForInt32Array externalType.
  	arrayType := contentType asArrayType: 5.
  		
  	self assert: arrayType isArrayType.
  	self assert: contentType identical: arrayType contentType.
  	self assert: 5 equals: arrayType size.
  	self assert: 5 * contentType byteSize equals: arrayType byteSize.
  
  	self
  		assert: contentType
  		identical: arrayType contentType;
  		assert: contentType byteAlignment
  		equals: arrayType byteAlignment.
  
  	self
  		assert: contentType isTypeAlias;
  		assert: contentType isArrayType;
  		deny: contentType isAtomic;
  		deny: contentType isStructureType;
  		deny: contentType isPointerType.
  			
  	self
  		deny: arrayType isAtomic;
  		deny: arrayType isStructureType;
  		deny: arrayType isPointerType;
  		deny: arrayType isTypeAlias.
  
  	self
+ 		deny: contentType referentClass isNil;
+ 		assert: arrayType referentClass isNil.!
- 		"referentClass shared"
- 		assert: contentType referentClass
- 		identical: arrayType referentClass.!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfAliasesForPointers (in category 'tests - array types') -----
  testArrayOfAliasesForPointers
  
  	self specsForTypeAliasForPointer groupsDo: [:aliasClass :originalType |
  		| contentType arrayType |
  		contentType := aliasClass externalType.
  		arrayType := contentType asArrayType: 5.
  			
  		self assert: arrayType isArrayType.
  		self assert: contentType identical: arrayType contentType.
  		self assert: 5 equals: arrayType size.
  		self assert: 5 * contentType byteSize equals: arrayType byteSize.
  
  		self
  			assert: contentType
  			identical: arrayType contentType;
  			assert: contentType byteAlignment
  			equals: arrayType byteAlignment.
  		
  		self
  			assert: contentType isTypeAlias;
  			assert: contentType isPointerType;
  			deny: contentType isAtomic;
  			deny: contentType isStructureType;
  			deny: contentType isArrayType.
  		
  		self
  			deny: arrayType isAtomic;
  			deny: arrayType isStructureType;
  			deny: arrayType isPointerType;
  			deny: arrayType isTypeAlias.
  	
  		self
+ 			deny: contentType referentClass isNil;
+ 			assert: arrayType referentClass isNil].!
- 			"referentClass shared"
- 			assert: contentType referentClass
- 			identical: arrayType referentClass].!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfAliasesForPointersDereferenced (in category 'tests - array types') -----
  testArrayOfAliasesForPointersDereferenced
  	"It should be possible to use the non-pointer type of an alias-to-pointer type as contentType in an array/container."
  
  	self specsForTypeAliasForPointer groupsDo: [:aliasClass :originalType |
  		| contentType arrayType |
  		contentType := aliasClass externalType asNonPointerType.
  		contentType byteSize = 0 ifTrue: [^ self "Ignore void"].
  		arrayType := contentType asArrayType: 5.
  			
  		self assert: arrayType isArrayType.
  		self assert: contentType identical: arrayType contentType.
  		self assert: 5 equals: arrayType size.
  		self assert: 5 * contentType byteSize equals: arrayType byteSize.
  
  		self
  			assert: contentType
  			identical: arrayType contentType;
  			assert: contentType byteAlignment
  			equals: arrayType byteAlignment.
  		
  		self
  			deny: contentType isTypeAlias;
  			deny: contentType isPointerType;
  			assert: [contentType isAtomic
  				or: [contentType isStructureType
  				or: [contentType isArrayType]]].
  		
  		self
  			deny: arrayType isAtomic;
  			deny: arrayType isStructureType;
  			deny: arrayType isPointerType;
  			deny: arrayType isTypeAlias.
  	
  		self
+ 			deny: contentType referentClass isNil;
+ 			assert: arrayType referentClass isNil].!
- 			"referentClass shared"
- 			assert: contentType referentClass
- 			identical: arrayType referentClass].!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfPointersToStructs (in category 'tests - array types') -----
  testArrayOfPointersToStructs
  
  	self classesForStructures do: [:structClass |
  		| arrayType contentType |
  		contentType := structClass externalType asPointerType.
  		arrayType := contentType asArrayType: 5.
  		
  		self assert: arrayType isArrayType.
  		self assert: contentType identical: arrayType contentType.
  		self assert: 5 equals: arrayType size.
  		self assert: 5 * contentType byteSize equals: arrayType byteSize.
  		
  		self deny: arrayType isAtomic.
  		self deny: arrayType isStructureType.
  		self deny: arrayType isPointerType.
  		self deny: arrayType isTypeAlias.
  		
+ 		self assert: arrayType referentClass isNil].!
- 		self
- 			assert: structClass
- 			identical: arrayType referentClass].!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfStructs (in category 'tests - array types') -----
  testArrayOfStructs
  
  	self classesForStructures do: [:structClass |
  		| arrayType contentType |
  		contentType := structClass externalType.
  		arrayType := structClass externalType asArrayType: 5.
  		
  		self assert: arrayType isArrayType.
  		self assert: contentType identical: arrayType contentType.
  		self assert: 5 equals: arrayType size.
  		self assert: 5 * contentType byteSize equals: arrayType byteSize.	
  		
  		self deny: arrayType isAtomic.
  		self deny: arrayType isStructureType.
  		self deny: arrayType isPointerType.
  		self deny: arrayType isTypeAlias.
  		
+ 		self assert: arrayType referentClass isNil].!
- 		self
- 			assert: structClass
- 			identical: arrayType referentClass].!

Item was changed:
  ----- Method: ExternalTypeTests>>testArrayOfStructsEmpty (in category 'tests - array types') -----
  testArrayOfStructsEmpty
  
  	| structClass arrayType contentType |
  	structClass := FFITestEmptyStruct.
  	contentType := structClass externalType.
  	arrayType := structClass externalType asArrayType: 5.
  
  	self assert: contentType isEmpty.
  	self assert: 0 equals: contentType byteSize.
  	self assert: 0 equals: arrayType byteSize.	
  			
  	self assert: arrayType isArrayType.
  	self assert: contentType identical: arrayType contentType.
  	self assert: 5 equals: arrayType size.
  	
  	self deny: arrayType isAtomic.
  	self deny: arrayType isStructureType.
  	self deny: arrayType isPointerType.
  	self deny: arrayType isTypeAlias.
  	
+ 	self assert: arrayType referentClass isNil.!
- 	self
- 		assert: structClass
- 		identical: arrayType referentClass.!

Item was changed:
  ----- Method: ExternalTypeTests>>testPointerToAliasForArray (in category 'tests - pointer types') -----
  testPointerToAliasForArray
  
  	| type pointerType |
  	type := FFITestAliasForInt32Array externalType.
  	pointerType := type asPointerType.
  
  	self
  		assert: type isArrayType;
  		assert: type isTypeAlias.
  			
  	self
  		assert: pointerType isPointerType;
- 		assert: pointerType isPointerTypeForArray;
  		deny: pointerType isAtomic;
  		deny: pointerType isStructureType;
  		deny: pointerType isArrayType;
  		deny: pointerType isTypeAlias.
  	
+ 	self assert: pointerType referentClass notNil.!
- 	self
- 		"referentClass is nil to ensure ExternalData for return values from FFI calls"
- 		assert: pointerType referentClass isNil.!



More information about the Squeak-dev mailing list