[squeak-dev] The Inbox: KernelTests-ul.400.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 14 10:21:17 UTC 2021
Levente Uzonyi uploaded a new version of KernelTests to project The Inbox:
http://source.squeak.org/inbox/KernelTests-ul.400.mcz
==================== Summary ====================
Name: KernelTests-ul.400
Author: ul
Time: 14 April 2021, 12:14:51.757056 pm
UUID: 6234d088-bf14-4d00-8734-dde043b756ba
Ancestors: KernelTests-nice.399
WriteBarrierTest changes:
- removed symbol mutator methods
- both #testMutateByteSymbolUsingPrivateAtPut and #testMutateWideSymbolUsingPrivateAtPut reference a non-existent #privateAt:put: method, and make the accessed symbol permanently writeable
- with the removal of #pvtAt:put: from ByteSymbol and WideSymbol, the tests seem to be unnecessary (see Collections-ul.939)
- fix copy-paste error in #testMutateObjectInstVarUsingBasicAtPut: test #basicAt:put: instead of #at:put:
- avoid having MirrorPrimitives in Undeclared by removing direct references to it in WriteBarrierTest. Perhaps MirrorPrimitives should be moved to the Trunk from VMMaker
- use temporaries in CompiledMethodComparisonTest >> #testHash to improve legibility
=============== Diff against KernelTests-nice.399 ===============
Item was changed:
----- Method: CompiledMethodComparisonTest>>testHash (in category 'tests') -----
testHash
<timeout: 120>
| ai |
ai := CompiledMethod allInstances.
"We assume here that if two CompiledMethods are equal then they have the same size and header."
(ai groupBy: [ :method | { method size. method header } ]) values
replace: [ :each | each asArray ];
do: [ :methods |
1 to: methods size do: [ :i |
+ | firstMethod |
+ firstMethod := methods at: i.
i to: methods size do: [ :j |
+ | secondMethod |
+ secondMethod := methods at: j.
+ firstMethod = secondMethod ifTrue: [
+ self assert: firstMethod hash equals: secondMethod hash ] ] ] ]
- (methods at: i) = (methods at: j) ifTrue: [
- self assert: (methods at: i) hash equals: (methods at: j) hash ] ] ] ]
displayingProgress: 'Testing hashes'.
self assert: (ai collect: [ :cm | cm hash ] as: Set) size * 2 >= ai asSet size!
Item was changed:
----- Method: WriteBarrierTest>>expectedFailures (in category 'expected failures') -----
expectedFailures
Smalltalk supportsReadOnlyObjects ifFalse:
[^self class testSelectors].
^#( testMutateByteArrayUsingDoubleAtPut testMutateByteArrayUsingFloatAtPut ),
+ (self mirrorPrimitives
- ((Smalltalk classNamed: #MirrorPrimitives)
ifNil: [#(testBasicProxyReadOnly testBasicProxyWritable testSetIsReadOnlySuccessProxy)]
ifNotNil: [#()])!
Item was added:
+ ----- Method: WriteBarrierTest>>mirrorPrimitives (in category 'tests - helper') -----
+ mirrorPrimitives
+
+ ^Smalltalk classNamed: #MirrorPrimitives!
Item was changed:
----- Method: WriteBarrierTest>>testBasicProxyReadOnly (in category 'tests - proxy') -----
testBasicProxyReadOnly
self alwaysReadOnlyObjects do: [ :each |
+ self assert: (self mirrorPrimitives isObjectReadOnly: each) equals: true ]!
- self assert: (MirrorPrimitives isObjectReadOnly: each) equals: true ]!
Item was changed:
----- Method: WriteBarrierTest>>testBasicProxyWritable (in category 'tests - proxy') -----
testBasicProxyWritable
self alwaysWritableObjects , self maybeReadOnlyObjects do: [ :each |
+ self assert: (self mirrorPrimitives isObjectReadOnly: each) equals: false ]!
- self assert: (MirrorPrimitives isObjectReadOnly: each) equals: false ]!
Item was removed:
- ----- Method: WriteBarrierTest>>testMutateByteSymbolUsingPrivateAtPut (in category 'tests - object') -----
- testMutateByteSymbolUsingPrivateAtPut
- | guineaPig |
- [guineaPig := #hello.
- guineaPig beReadOnlyObject.
-
- self
- should: ((guineaPig class includesSelector: #pvtAt:put:)
- ifTrue: [[ guineaPig perform: #pvtAt:put: with: 1 with: $q ]] "Squeak refuses to compile non-self sends of pvt* selectors."
- ifFalse: [[ guineaPig privateAt: 1 put: $q ]])
- raise: ModificationForbidden ]
- ensure:
- [ guineaPig beWritableObject ].
-
- self assert: guineaPig first equals: $h!
Item was changed:
----- Method: WriteBarrierTest>>testMutateObjectInstVarUsingBasicAtPut (in category 'tests - object') -----
testMutateObjectInstVarUsingBasicAtPut
| guineaPig |
guineaPig := Array new: 5.
guineaPig beReadOnlyObject.
self
should: [ guineaPig basicAt: 1 put: #test ]
raise: ModificationForbidden.
+ [ guineaPig basicAt: 1 put: #test ]
- [ guineaPig at: 1 put: #test ]
on: ModificationForbidden
do: [:modification |
self assert: modification fieldIndex equals: 1.
modification object beWritableObject.
modification retryModification ].
self assert: guineaPig first equals: #test!
Item was removed:
- ----- Method: WriteBarrierTest>>testMutateWideSymbolUsingPrivateAtPut (in category 'tests - object') -----
- testMutateWideSymbolUsingPrivateAtPut
- | guineaPig |
- [ guineaPig := ('hello', (Character codePoint: 8002) asString) asSymbol.
- guineaPig beReadOnlyObject.
-
- self
- should: ((guineaPig class includesSelector: #pvtAt:put:)
- ifTrue: [[ guineaPig perform: #pvtAt:put: with: 1 with: $A ]] "Squeak refuses to compile non-self sends of pvt* selectors."
- ifFalse: [[ guineaPig privateAt: 1 put: $A ]])
- raise: ModificationForbidden ]
- ensure: [ guineaPig beWritableObject ].
-
- self assert: guineaPig first equals: $h!
Item was changed:
----- Method: WriteBarrierTest>>testProxyObject:initialState:tuples: (in category 'tests - helper') -----
testProxyObject: object initialState: initialState tuples: tuples
self
testObject: object
initialState: initialState
tuples: tuples
setReadOnlyBlock: [ :value |
+ self mirrorPrimitives makeObject: object readOnly: value ]!
- MirrorPrimitives makeObject: object readOnly: value ]!
More information about the Squeak-dev
mailing list
|