[squeak-dev] The Trunk: Traits-ar.240.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Oct 22 04:40:24 UTC 2009
Andreas Raab uploaded a new version of Traits to project The Trunk:
http://source.squeak.org/trunk/Traits-ar.240.mcz
==================== Summary ====================
Name: Traits-ar.240
Author: ar
Time: 21 October 2009, 9:40:11 am
UUID: c257e896-367f-aa4b-a63c-d50b8a863c5d
Ancestors: Traits-nice.239
Tests for broken traits behavior.
=============== Diff against Traits-nice.239 ===============
Item was added:
+ ----- Method: TraitTest>>testTraitMethodSelector (in category 'testing') -----
+ testTraitMethodSelector
+ "Tests that the #selector of a trait method isn't screwed up when aliasing traits"
+ | baseTrait classA methodA classB methodB traitMethod |
+ [baseTrait := Trait named: #TraitTestBaseTrait uses:{} category: self class category.
+ baseTrait compileSilently: 'traitMethod' classified: 'tests'.
+ traitMethod := baseTrait compiledMethodAt: #traitMethod.
+ self assert: traitMethod selector == #traitMethod.
+
+ classA := Object subclass: #TraitTestMethodClassA
+ uses: {baseTrait @ {#methodA -> #traitMethod}}
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: self class category.
+ methodA := classA compiledMethodAt: #methodA.
+
+ self assert: traitMethod selector == #traitMethod.
+ self assert: methodA selector == #methodA.
+
+ classB := Object subclass: #TraitTestMethodClassB
+ uses: {baseTrait @ {#methodB -> #traitMethod}}
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: self class category.
+ methodB := classB compiledMethodAt: #methodB.
+
+
+ self assert: traitMethod selector == #traitMethod.
+ self assert: methodA selector == #methodA.
+ self assert: methodB selector == #methodB.
+
+ ] ensure:[
+ classA ifNotNil:[classA removeFromSystem: false].
+ classB ifNotNil:[classB removeFromSystem: false].
+ baseTrait ifNotNil:[baseTrait removeFromSystem: false].
+ ].!
Item was added:
+ ----- Method: TraitTest>>testTraitMethodClass (in category 'testing') -----
+ testTraitMethodClass
+ "Tests that the #methodClass of a trait method isn't screwed up"
+ | baseTrait classA methodA classB methodB traitMethod |
+ [baseTrait := Trait named: #TraitTestBaseTrait uses:{} category: self class category.
+ baseTrait compileSilently: 'traitMethod' classified: 'tests'.
+ traitMethod := baseTrait compiledMethodAt: #traitMethod.
+ self assert: traitMethod methodClass == baseTrait.
+
+ classA := Object subclass: #TraitTestMethodClassA
+ uses: baseTrait
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: self class category.
+ methodA := classA compiledMethodAt: #traitMethod.
+
+ self assert: traitMethod methodClass == baseTrait.
+ self assert: methodA methodClass == classA.
+
+ classB := Object subclass: #TraitTestMethodClassB
+ uses: baseTrait
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: self class category.
+ methodB := classB compiledMethodAt: #traitMethod.
+
+
+ self assert: traitMethod methodClass == baseTrait.
+ self assert: methodA methodClass == classA.
+ self assert: methodB methodClass == classB.
+
+ ] ensure:[
+ classA ifNotNil:[classA removeFromSystem: false].
+ classB ifNotNil:[classB removeFromSystem: false].
+ baseTrait ifNotNil:[baseTrait removeFromSystem: false].
+ ].!
More information about the Squeak-dev
mailing list
|