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

commits at source.squeak.org commits at source.squeak.org
Wed Jun 17 09:48:14 UTC 2020


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

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

Name: FFI-Tests-mt.19
Author: mt
Time: 17 June 2020, 11:48:14.239028 am
UUID: 5b5f9c13-eb5c-2f45-8ecb-240a1dab2993
Ancestors: FFI-Tests-mt.18

Adds tests for ExternalType. Complements FFI-Kernel-mt.110.

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

Item was added:
+ TestCase subclass: #ExternalTypeTests
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: 'ExternalType'
+ 	category: 'FFI-Tests'!

Item was added:
+ ----- Method: ExternalTypeTests>>testAtomicType (in category 'tests') -----
+ testAtomicType
+ 
+ 	AtomicTypes keysAndValuesDo: [:typeName :type |
+ 		self
+ 			assert: type isAtomic;
+ 			assert: typeName equals: type atomicTypeName;
+ 			
+ 			deny: type isPointerType;
+ 			deny: type isStructureType;
+ 			deny: type isTypeAlias].!

Item was added:
+ ----- Method: ExternalTypeTests>>testAtomicTypeByName (in category 'tests') -----
+ testAtomicTypeByName
+ 
+ 	AtomicTypeNames do: [:typeName |
+ 		self
+ 			assert: (AtomicTypes at: typeName)
+ 			identical: (ExternalType typeNamed: typeName);
+ 			assert: (AtomicTypes at: typeName)
+ 			identical: (ExternalType atomicTypeNamed: typeName)].!

Item was added:
+ ----- Method: ExternalTypeTests>>testAtomicTypeBySelector (in category 'tests') -----
+ testAtomicTypeBySelector
+ 
+ 	AtomicTypeNames do: [:typeName |
+ 		self
+ 			assert: (AtomicTypes at: typeName)
+ 			identical: (ExternalType perform: typeName asSymbol)].!

Item was added:
+ ----- Method: ExternalTypeTests>>testIntegerPointerTypes (in category 'tests') -----
+ testIntegerPointerTypes
+ 
+ 	| wordSize |
+ 	wordSize := FFIPlatformDescription current wordSize.
+ 	
+ 	#(size_t ptrdiff_t uintptr_t intptr_t) do: [:typeName |
+ 		| type |
+ 		type := ExternalType typeNamed: typeName.
+ 		self
+ 			assert: type isIntegerType;
+ 			assert: wordSize equals: type byteSize].!

Item was added:
+ ----- Method: ExternalTypeTests>>testIntegerTypes (in category 'tests') -----
+ testIntegerTypes
+ 
+ 	#(
+ 		uint8_t 1 int8_t 1
+ 		uint16_t 2 int16_t 2
+ 		uint32_t 4 int32_t 4
+ 		uint64_t 8 int64_t 8
+ 	) pairsDo: [:typeName :byteSize |
+ 		| type |
+ 		type := ExternalType typeNamed: typeName.
+ 		self
+ 			assert: type isIntegerType;
+ 			assert: byteSize equals: type byteSize].!

Item was added:
+ ----- Method: ExternalTypeTests>>testSignFloatTypes (in category 'tests') -----
+ testSignFloatTypes
+ 
+ 	self
+ 		should: [ExternalType float isSigned] raise: Error;
+ 		should: [ExternalType float isUnsigned] raise: Error;
+ 		should: [ExternalType float asSigned] raise: Error;
+ 		should: [ExternalType float asUnsigned] raise: Error;
+ 		should: [ExternalType double isSigned] raise: Error;
+ 		should: [ExternalType double isUnsigned] raise: Error;
+ 		should: [ExternalType double asSigned] raise: Error;
+ 		should: [ExternalType double asUnsigned] raise: Error.!

Item was added:
+ ----- Method: ExternalTypeTests>>testSignIntegerTypes (in category 'tests') -----
+ testSignIntegerTypes
+ 
+ 	AtomicTypeNames do: [:typeName |
+ 		| type |
+ 		type := ExternalType atomicTypeNamed: typeName.
+ 		self
+ 			assert: type isIntegerType ==> [
+ 				(type isSigned and: [type asUnsigned isUnsigned])
+ 					or: [type isUnsigned and: [type asSigned isSigned]]]].!



More information about the Squeak-dev mailing list