[squeak-dev] The Trunk: KernelTests-eem.224.mcz

Levente Uzonyi leves at elte.hu
Mon May 28 13:33:47 UTC 2012


On Mon, 28 May 2012, Frank Shearar wrote:

> On 27 May 2012 23:16,  <commits at source.squeak.org> wrote:
>> Eliot Miranda uploaded a new version of KernelTests to project The Trunk:
>> http://source.squeak.org/trunk/KernelTests-eem.224.mcz
>>
>> ==================== Summary ====================
>>
>> Name: KernelTests-eem.224
>> Author: eem
>> Time: 27 May 2012, 3:16:16.618 pm
>> UUID: 2d674fd0-22e3-4b5c-82ae-af5642c9614f
>> Ancestors: KernelTests-nice.223
>>
>> Add a long test case for CompiledMethod = & hash
>>
>> =============== Diff against KernelTests-nice.223 ===============
>>
>> Item was added:
>> + LongTestCase subclass: #CompiledMethodComparisonTest
>> +       instanceVariableNames: ''
>> +       classVariableNames: ''
>> +       poolDictionaries: ''
>> +       category: 'KernelTests-Methods'!
>>
>> Item was added:
>> + ----- Method: CompiledMethodComparisonTest>>testHash (in category 'tests') -----
>> + testHash
>> +       | ai |
>> +       ai := CompiledMethod allInstances.
>> +       ai do:
>> +               [:a|
>> +               ai do:
>> +                       [:b|
>> +                       a = b ifTrue: [self assert: a hash = b hash]]]!
>>
>>
>
> Not necessarily here, but it'd be good to see that (a = b) ifFalse:
> [self deny: a hash = b hash] holds.

That would be a nice property, but hash functions are not injective. If 
they were, then either the codomain would be too large (not SmallInteger 
in our case, which makes hashing impractical) or there were no need for 
the use of hashing at all, since there were no collisions.


Levente

>
> frank
>
>


More information about the Squeak-dev mailing list