TestCase subclass: #FFINimTest instanceVariableNames: 'nim' classVariableNames: '' poolDictionaries: '' category: 'Nim-Tests'! !FFINimTest methodsFor: 'as yet unclassified' stamp: 'gk 11/2/2014 15:08'! setUp nim := FFINimTestLibrary ! ! !FFINimTest methodsFor: 'as yet unclassified' stamp: 'gk 11/3/2014 01:11'! testBasics "getting an int back" self assert: (nim ffiHello = 42). "sending ints and getting back too" self assert: ((nim ffiAdd: 3 with: 4) = 7). "getting a string" self assert: (nim ffiFoo = 'hey'). "sending a string and getting an int back" self assert: ((nim ffiLength: 'abc') = 3) . ! ! "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "! FFINimTest class instanceVariableNames: ''! !FFINimTest class methodsFor: 'as yet unclassified' stamp: 'gk 11/3/2014 01:12'! stress "self stress" | rand | rand := Random new. ^[10000000 timesRepeat: [ FFINimTestLibrary ffiHello; ffiFoo; ffiAdd: rand next with: rand next; ffiConcat: 'abc' with: '123'; ffiLength: 'abcde']] timeToRun! ! ExternalLibrary subclass: #FFINimTestLibrary instanceVariableNames: 'nim' classVariableNames: '' poolDictionaries: '' category: 'Nim-Tests'! "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "! FFINimTestLibrary class instanceVariableNames: ''! !FFINimTestLibrary class methodsFor: 'primitives' stamp: 'gk 11/2/2014 13:05'! ffiAdd: a with: b "self ffiAdd: 13 with: 29" ^self externalCallFailed! ! !FFINimTestLibrary class methodsFor: 'primitives' stamp: 'gk 11/2/2014 22:49'! ffiConcat: a with: b "self ffiConcat: 'a' with: 'b' " ^self externalCallFailed! ! !FFINimTestLibrary class methodsFor: 'primitives' stamp: 'gk 11/3/2014 01:10'! ffiFoo "self ffiFoo" ^self externalCallFailed! ! !FFINimTestLibrary class methodsFor: 'primitives' stamp: 'gk 11/2/2014 13:06'! ffiHello "self ffiHello" "long is int in Nim" ^self externalCallFailed! ! !FFINimTestLibrary class methodsFor: 'primitives' stamp: 'gk 11/3/2014 01:10'! ffiLength: x "self ffiLen: 'hey' " ^self externalCallFailed! ! !FFINimTestLibrary class methodsFor: 'accessing' stamp: 'gk 10/31/2014 21:45'! moduleName "Use the fully qualified VM name so we ensure testing loading a library" ^'testlib'! !