Eliot Miranda uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-eem.219.mcz ==================== Summary ==================== Name: CollectionsTests-eem.219 Author: eem Time: 16 July 2014, 3:43:48.337 pm UUID: 308275d9-8274-498f-9556-09f2e0d63367 Ancestors: CollectionsTests-nice.218 Fix DictionaryTest>>testKeyAtValue for hashing (i.e. Spur) =============== Diff against CollectionsTests-nice.218 =============== Item was changed: ----- Method: DictionaryTest>>testKeyAtValue (in category 'keys and value tests') ----- testKeyAtValue "self run: #testKeyAtValue" "self debug: #testKeyAtValue" | dict | dict := Dictionary new. dict at: #a put: 1. dict at: #b put: 2. dict at: #c put: 1. self assert: (dict keyAtValue: 2) = #b. + "which ever is answered depends on hashing, and hashing is improved in Spur." + self assert: ((dict keyAtValue: 1) = #a or: [(dict keyAtValue: 1) = #c]). + "ugly may be a bug, why not have a set #a and #c? cuz that would be keys at value." - self assert: (dict keyAtValue: 1) = #c. - "ugly may be a bug, why not having a set #a and #c" self should: [dict keyAtValue: 0] raise: Error ! |
On 16 July 2014 23:44, <[hidden email]> wrote:
> Eliot Miranda uploaded a new version of CollectionsTests to project The Trunk: > http://source.squeak.org/trunk/CollectionsTests-eem.219.mcz > > ==================== Summary ==================== > > Name: CollectionsTests-eem.219 > Author: eem > Time: 16 July 2014, 3:43:48.337 pm > UUID: 308275d9-8274-498f-9556-09f2e0d63367 > Ancestors: CollectionsTests-nice.218 > > Fix DictionaryTest>>testKeyAtValue for hashing (i.e. Spur) > > =============== Diff against CollectionsTests-nice.218 =============== > > Item was changed: > ----- Method: DictionaryTest>>testKeyAtValue (in category 'keys and value tests') ----- > testKeyAtValue > "self run: #testKeyAtValue" > "self debug: #testKeyAtValue" > > | dict | > dict := Dictionary new. > dict at: #a put: 1. > dict at: #b put: 2. > dict at: #c put: 1. > > self assert: (dict keyAtValue: 2) = #b. > + "which ever is answered depends on hashing, and hashing is improved in Spur." > + self assert: ((dict keyAtValue: 1) = #a or: [(dict keyAtValue: 1) = #c]). > + "ugly may be a bug, why not have a set #a and #c? cuz that would be keys at value." > - self assert: (dict keyAtValue: 1) = #c. > - "ugly may be a bug, why not having a set #a and #c" > > self should: [dict keyAtValue: 0] raise: Error > > > ! So this looks, to me at least, to highlight the difference between testing the implementation and testing the interface: given a non-bijective mapping, what preimage should you get for a value? Well, it depends - if you insist on _a_ value rather than _the values_, then the choice is arbitrary: both #a and #c are consistent with the semantics, and asserting that _only one_ preimage maps to the value is actually a bug in the test. Improving the hashing algorithm shouldn't make a test suddenly fail. Nice! frank |
Free forum by Nabble | Edit this page |