Nicolas Cellier uploaded a new version of Tests to project The Trunk: http://source.squeak.org/trunk/Tests-nice.154.mcz
==================== Summary ====================
Name: Tests-nice.154 Author: nice Time: 27 July 2012, 8:14:03.431 pm UUID: fa846130-25ce-4a75-bcee-212b658a274a Ancestors: Tests-cwp.153
Use a workaround for testBecomeIdentityHash knowing that two objects created consecutively may share same identityHash.
=============== Diff against Tests-cwp.153 ===============
Item was changed: ----- Method: BecomeTest>>testBecomeIdentityHash (in category 'Testing') ----- testBecomeIdentityHash | a b c d numberOfRetry newAIdentityHash newBIdentityHash oldAIdentityHash oldBIdentityHash | numberOfRetry := 0. [a := 'ab' copy. + c := IdentitySet new: 1000. b := 'cd' copy. + d := IdentitySet new: 1000. "Note: the sets are allocated with enough room to reduce probability that two different hash lead to same slot" + "Note2: a & b creation are interleaved with c & d, because some VM allocate the same identityHash for two consecutively created objects" + c add: a; add: b. + d add: a. - (c := IdentitySet new: 1000) add: a; add: b. - (d := IdentitySet new: 1000) add: a. oldAIdentityHash := a identityHash. oldBIdentityHash := b identityHash. oldAIdentityHash = oldBIdentityHash and: [numberOfRetry < 10]] whileTrue: [numberOfRetry := numberOfRetry + 1]. self assert: oldAIdentityHash ~= oldBIdentityHash description: 'The VM is spawning too many equal identityHash to be honest'. a become: b. newAIdentityHash := a identityHash. newBIdentityHash := b identityHash. self "The set c & d can still retrieve their elements because elements did not change their expected position" assert: (c includes: a); assert: (c includes: b); assert: (d includes: a); deny: (d includes: b); "Elements didn't change their expected position because identityHash did not change" assert: oldAIdentityHash = newAIdentityHash; assert: oldBIdentityHash = newBIdentityHash!
packages@lists.squeakfoundation.org