[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
|