[squeak-dev] The Trunk: Tests-ct.470.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Dec 29 00:50:56 UTC 2021


Christoph Thiede uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-ct.470.mcz

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

Name: Tests-ct.470
Author: ct
Time: 29 December 2021, 1:50:54.452067 am
UUID: e49fb892-38bd-4e4a-8d14-a7371a9d0158
Ancestors: Tests-ct.469

Tests new mirror primitives from Kernel-ct.1439.

Also tests #receiver:tryPrimitive:withArgs:, but marks this test as an expected failure for now. See: http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-November/216937.html

=============== Diff against Tests-ct.469 ===============

Item was changed:
  ----- Method: MirrorPrimitiveTests>>expectedFailures (in category 'failures') -----
  expectedFailures
  	"All versions of Cog provide mirror primitive support. For the interpreter VM,
  	support was added in version 4.7.19. Identify expected failures for older versions
  	of the interpreter VM."
  
  	^Smalltalk isRunningCog
+ 		ifTrue: [#(testMirrorTryPrimitive)]
- 		ifTrue: [#()]
  		ifFalse: [ | ver |
  			[ver := VersionNumber fromString: Smalltalk vm interpreterSourceVersion.
  			((ver numbers first * 1000) + ver numbers second) >= 4008
  				ifTrue: [^#() "version 4.7.19 or greater with mirror primitive support"]]
  					on: Warning
  					do: ["primitiveInterpreterSourceVersion not available"].
  			^#(testMirrorEqEq testMirrorPerform testMirrorSize) "older interpreter VMs"]
  !

Item was added:
+ ----- Method: MirrorPrimitiveTests>>testMirrorClone (in category 'tests') -----
+ testMirrorClone
+ 	| stackpBefore stackpAfter original copy |
+ 	stackpBefore := thisContext stackPtr.
+ 	
+ 	original := #(1 2 3).
+ 	copy := thisContext objectClone: original.
+ 	self deny: copy == original.
+ 	self assert: copy = original.
+ 	
+ 	stackpAfter := thisContext stackPtr.
+ 	self assert: stackpBefore = stackpAfter. "Make sure primitives pop all their arguments"!

Item was added:
+ ----- Method: MirrorPrimitiveTests>>testMirrorTryPrimitive (in category 'tests') -----
+ testMirrorTryPrimitive
+ 	{
+ 		{{1. 2. 3}. 61. {}}.
+ 		{6. 10. {2}}.
+ 		{self. 83. {#ifNil:ifNotNil:. [1]. [2]}}
+ 	} do: [:data |
+ 		| stackpBefore stackpAfter |
+ 		stackpBefore := thisContext stackPtr.
+ 		
+ 		self
+ 			assert: (data first tryPrimitive: data second withArgs: data third)
+ 			equals: (thisContext receiver: data first tryPrimitive: data second withArgs: data third).
+ 		
+ 		stackpAfter := thisContext stackPtr.
+ 		self assert: stackpBefore = stackpAfter. "Make sure primitives pop all their arguments"]!

Item was added:
+ ----- Method: MirrorPrimitiveTests>>testMirrorWriteBarrier (in category 'tests') -----
+ testMirrorWriteBarrier
+ 	| stackpBefore stackpAfter object |
+ 	stackpBefore := thisContext stackPtr.
+ 	
+ 	self assert: (thisContext objectIsReadOnly: nil).
+ 	self assert: (thisContext objectIsReadOnly: 1).
+ 	self assert: (thisContext objectIsReadOnly: #(1 2 3)).
+ 	self deny: (thisContext objectIsReadOnly: #(1 2 3) copy).
+ 	self deny: (thisContext objectIsReadOnly: self class).
+ 	
+ 	object := #(1 2 3) copy.
+ 	self shouldnt: object isReadOnlyObject.
+ 	self deny: (thisContext object: object setIsReadOnly: true).
+ 	self assert: object isReadOnlyObject.
+ 	self assert: (thisContext object: object setIsReadOnly: false).
+ 	self deny: object isReadOnlyObject.
+ 	self should: [1 beWritableObject] raise: Error.
+ 	
+ 	stackpAfter := thisContext stackPtr.
+ 	self assert: stackpBefore = stackpAfter. "Make sure primitives pop all their arguments"!



More information about the Squeak-dev mailing list