[squeak-dev] The Inbox: KernelTests-ct.409.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Nov 10 00:45:42 UTC 2021


A new version of KernelTests was added to project The Inbox:
http://source.squeak.org/inbox/KernelTests-ct.409.mcz

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

Name: KernelTests-ct.409
Author: ct
Time: 10 November 2021, 1:45:40.105242 am
UUID: ab3db7b1-d980-5b4b-80a2-8c08bef9b23b
Ancestors: KernelTests-mt.407

Adds new simulation tests for the reflection primitives 117 (primitiveExternalCall), 118 (primitiveDoPrimitiveWithArgs), and 218 (primitiveDoNamedPrimitiveWithArgs) and revises existing tests for the primitives 83 (primitivePerform), 84 (primitivePerformWithArgs), and 100 (primitivePerformInSuperclass) which do not need to be dispatched via primitive 118.

=============== Diff against KernelTests-mt.407 ===============

Item was changed:
  ----- Method: ContextTest>>testPrimitive100 (in category 'tests') -----
  testPrimitive100
  
  	{
  		{#isNil. {}. Object}. "valid 0-arg message"
  		{#=. {true}. UndefinedObject}. "valid unary message"
  		{#ifNil:ifNotNil:. {[2]. [:x | x]}. Object}. "valid binary message"
  		{{}. #=. {true}. SequenceableCollection}. "mirror primitive"
+ 		{'not a selector'. {}. Object}. "invalid selector"
+ 		{#isNil. 'not an array'. Object}. "invalid arguments"
- 		{#isNil}. "missing arguments"
- 		{#isNil. 'not an array'}. "invalid arguments"
- 		{#isNil. {}}. "missing lookupClass"
  		{#isNil. {'excess arg'}. Object}. "too many arguments"
  		{#=. {}. UndefinedObject}. "missing argument"
+ 		{#isNil. {}. 'not a class'}. "invalid lookupClass"
  		{#isNil. {}. Boolean}. "lookupClass not in inheritance chain"
+ 	} do: [:args | | block |
+ 		block := [[nil
+ 			perform: args first
+ 			withArguments: args second
+ 			inSuperclass: args third]
+ 				on: Error do: [:ex | ex messageText]].
- 	} do: [:args |
  		self
+ 			assert: block value
+ 			equals: (Context runSimulated: block).
+ 		
+ 		block := [[thisContext
+ 			object: nil
+ 			perform: args first
+ 			withArguments: args second
+ 			inClass: args third]
+ 				on: Error do: [:ex | ex messageText]].
+ 		self
+ 			assert: block value
+ 			equals: (Context runSimulated: block)].!
- 			assert: (nil tryPrimitive: 100 withArgs: args)
- 			equals: (Context runSimulated: [nil tryPrimitive: 100 withArgs: args])].!

Item was added:
+ ----- Method: ContextTest>>testPrimitive117 (in category 'tests') -----
+ testPrimitive117
+ 
+ 	| input1 input2 |
+ 	"valid 0-arg primitive"
+ 	self
+ 		assert: #isNil size
+ 		equals: (Context runSimulated: [#isNil size]).
+ 	
+ 	"valid unary primitive"
+ 	self
+ 		assert: 6 + 9
+ 		equals: (Context runSimulated: [6 + 9]).
+ 	
+ 	"superfluous arguments"
+ 	self "cascade!!"
+ 		assert: 6 + 9
+ 			equals: (Context runSimulated: [6 + 9]);
+ 		assert: true.
+ 	
+ 	self
+ 		assert: ((input1 := {1. 2. 3}) at: 2 put: 4)
+ 			equals: (Context runSimulated: [(input2 := {1. 2. 3}) at: 2 put: 4]);
+ 		assert: input1
+ 			equals: input2.!

Item was added:
+ ----- Method: ContextTest>>testPrimitive118 (in category 'tests') -----
+ testPrimitive118
+ 
+ 	self testPrimitive118: [:receiver :primitiveIndex :arguments |
+ 		receiver tryPrimitive: primitiveIndex withArgs: arguments].
+ 	
+ 	self testPrimitive118: [:receiver :primitiveIndex :arguments |
+ 		thisContext receiver: receiver tryPrimitive: primitiveIndex withArgs: arguments].!

Item was added:
+ ----- Method: ContextTest>>testPrimitive118: (in category 'tests') -----
+ testPrimitive118: primitiveBlock
+ 
+ 	| input1 input2 |
+ 	{
+ 		{#isNil. 62. {}}. "valid 0-arg primitive"
+ 		{6. 9. {7}}. "valid unary primitive"
+ 		{6. 62. {7}}. "failing primitive"
+ 		{6. 'not a primitive'. {7}}. "invalid primitive"
+ 		{6. 9. 'not an array'}. "invalid arguments"
+ 		{#isNil. 62. {1}}. "too many arguments"
+ 		{6. 9. {}}. "missing argument"
+ 		
+ 		{nil. 83. {#=. true}}. "primitivePerform"
+ 		{nil. 83. {#isNil. 'excess arg'}}. "primitivePerform - too many arguments"
+ 		{nil. 84. {#=. {true}}}. "primitivePerformWithArgs"
+ 		{nil. 84. {#isNil. 'excess arg'}}. "primitivePerformWithArgs - invalid arguments"
+ 		{nil. 100. {#=. true. Object}}. "primitivePerformInSuperclass"
+ 		{nil. 100. {#isNil. {'excess arg'}. Object}}. "primitivePerformInSuperclass - too many arguments"
+ 		
+ 		{6. 118. {9. {7}}}. "primitiveDoPrimitiveWithArgs"
+ 		{6. 118. {9. {7. 13}}}. "primitiveDoPrimitiveWithArgs - superfluous arguments"
+ 		{6. 118. {118. {9. {7}}}}. "primitiveDoPrimitiveWithArgs - M3"
+ 		{thisContext. 218. {Float32Array >> #sum. Float32Array withAll: {2.0. 3.0}. {}}}. "primitiveDoNamedPrimitiveWithArgs"
+ 		{thisContext. 218. {Float32Array >> #sum. Float32Array withAll: {2.0. 3.0}. {4.0}}}. "primitiveDoNamedPrimitiveWithArgs - superfluous arguments"
+ 	} do: [:args | | block |
+ 		block := [primitiveBlock valueWithArguments: args].
+ 		self
+ 			assert: block value
+ 			equals: (Context runSimulated: block)].
+ 	
+ 	self
+ 		assert: (primitiveBlock value: (input1 := {1. 2. 3}) value: 61 value: {2. 4})
+ 			equals: (Context runSimulated: [primitiveBlock value: (input2 := {1. 2. 3}) value: 61 value: {2. 4}]);
+ 		assert: input1
+ 			equals: input2.!

Item was added:
+ ----- Method: ContextTest>>testPrimitive218 (in category 'tests') -----
+ testPrimitive218
+ 
+ 	"valid 0-arg primitive"
+ 	self
+ 		assert: (Float32Array withAll: {2.0. 3.0}) sum
+ 		equals: (Context runSimulated: [(Float32Array withAll: {2.0. 3.0}) sum]).
+ 	
+ 	"valid unary primitive"
+ 	self
+ 		assert: 'wiffy' = 'wiffy' copy
+ 			equals: (Context runSimulated: ['wiffy' = 'wiffy' copy]);
+ 		assert: 'wiffy' = 'ziffy'
+ 			equals: (Context runSimulated: ['wiffy' = 'ziffy']).
+ 	
+ 	"superfluous arguments"
+ 	self "cascade!!"
+ 		assert: 'wiffy' = 'wiffy' copy
+ 			equals: (Context runSimulated: ['wiffy' = 'wiffy' copy]);
+ 		assert: true.!

Item was changed:
  ----- Method: ContextTest>>testPrimitive83 (in category 'tests') -----
  testPrimitive83
  
  	{
+ 		[nil perform: #isNil]. "valid 0-arg message"
+ 		[nil perform: #= with: true]. "valid unary message"
+ 		[nil perform: #ifNil:ifNotNil: with: [2] with: [:x | x]]. "valid binary message"
+ 		[nil perform: #isNil with: 'excess arg']. "too many arguments"
+ 		[nil perform: #=]
+ 	} do: [:block |
- 		{#isNil}. "valid 0-arg message"
- 		{#=. true}. "valid unary message"
- 		{#ifNil:ifNotNil:. [2]. [:x | x]}. "valid binary message"
- 		{#isNil. 'excess arg'}. "too many arguments"
- 		{#=}. "missing argument"
- 	} do: [:args |
  		self
+ 			assert: (block on: Error do: [:ex | ex messageText])
+ 			equals: (Context runSimulated: [block on: Error do: [:ex | ex messageText]])].!
- 			assert: (nil tryPrimitive: 83 withArgs: args)
- 			equals: (Context runSimulated: [nil tryPrimitive: 83 withArgs: args])].!

Item was changed:
  ----- Method: ContextTest>>testPrimitive84 (in category 'tests') -----
  testPrimitive84
  
  	{
  		{#isNil. {}}. "valid 0-arg message"
  		{#=. {true}}. "valid unary message"
  		{#ifNil:ifNotNil:. {[2]. [:x | x]}}. "valid binary message"
- 		{#isNil}. "missing arguments"
  		{#isNil. 'not an array'}. "invalid arguments"
  		{#isNil. {'excess arg'}}. "too many arguments"
  		{#=. {}}. "missing argument"
  	} do: [:args |
  		self
+ 			assert: ([nil perform: args first withArguments: args second] on: Error do: [:ex | ex messageText])
+ 			equals: (Context runSimulated: [[nil perform: args first withArguments: args second] on: Error do: [:ex | ex messageText]])].!
- 			assert: (nil tryPrimitive: 84 withArgs: args)
- 			equals: (Context runSimulated: [nil tryPrimitive: 84 withArgs: args])].!



More information about the Squeak-dev mailing list