Nicolas Cellier uploaded a new version of KernelTests to project The Trunk: http://source.squeak.org/trunk/KernelTests-nice.253.mcz
==================== Summary ====================
Name: KernelTests-nice.253 Author: nice Time: 28 July 2013, 4:14:45.361 pm UUID: ea192381-eb68-4388-96a8-36b50701e57c Ancestors: KernelTests-fbs.252
Add tests for superclass class variable vs global variable scope precedence See http://bugs.squeak.org/view.php?id=1554
=============== Diff against KernelTests-fbs.252 ===============
Item was added: + TestCase subclass: #ClassVarScopeTest + instanceVariableNames: 'parent child grandchild foo' + classVariableNames: '' + poolDictionaries: '' + category: 'KernelTests-Classes'! + + !ClassVarScopeTest commentStamp: 'nice 7/28/2013 16:05' prior: 0! + Test that a class variable defined in a superclass takes precedence over a global variable of same name. + + In #setUp: + + Three classes are defined: parent, child and grandchild. + A class variable is defined in child. + A global with the same name is defined in Smalltalk globals. + Methods are defined in all classes getting and setting this class or global variable. + + Test whether methods referencing the variable with that name + access the correct variable.!
Item was added: + ----- Method: ClassVarScopeTest>>setUp (in category 'command') ----- + setUp + + parent := Object + subclass: #ClassVarScopeParent + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'Dummy-Tests-Class'. + child := parent + subclass: #ClassVarScopeChild + instanceVariableNames: '' + classVariableNames: 'ClassVarScopeFoo' + poolDictionaries: '' + category: 'Dummy-Tests-Class'. + grandchild := child + subclass: #ClassVarScopeGrandchild + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'Dummy-Tests-Class'. + foo := Smalltalk globals at: #ClassVarScopeFoo put: Object basicNew. + + parent compile: self sourceOfParentGetFoo. + parent compile: self sourceOfParentSetFoo. + + parent class compile: self sourceOfParentGetFoo. + parent class compile: self sourceOfParentSetFoo. + + child compile: self sourceOfChildGetFoo. + child compile: self sourceOfChildSetFoo. + + child class compile: self sourceOfChildGetFoo. + child class compile: self sourceOfChildSetFoo. + + grandchild compile: self sourceOfGrandchildGetFoo. + grandchild compile: self sourceOfGrandchildSetFoo. + + grandchild class compile: self sourceOfGrandchildGetFoo. + grandchild class compile: self sourceOfGrandchildSetFoo. + !
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfChildGetFoo (in category 'query') ----- + sourceOfChildGetFoo + ^'childGetFoo + ^ClassVarScopeFoo'!
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfChildSetFoo (in category 'query') ----- + sourceOfChildSetFoo + ^'childSetFoo: anObject + ClassVarScopeFoo := anObject'!
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfGrandchildGetFoo (in category 'query') ----- + sourceOfGrandchildGetFoo + ^'grandchildGetFoo + ^ClassVarScopeFoo'!
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfGrandchildSetFoo (in category 'query') ----- + sourceOfGrandchildSetFoo + ^'grandchildSetFoo: anObject + ClassVarScopeFoo := anObject'!
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfParentGetFoo (in category 'query') ----- + sourceOfParentGetFoo + ^'parentGetFoo + ^ClassVarScopeFoo'!
Item was added: + ----- Method: ClassVarScopeTest>>sourceOfParentSetFoo (in category 'query') ----- + sourceOfParentSetFoo + ^'parentSetFoo: anObject + ClassVarScopeFoo := anObject'!
Item was added: + ----- Method: ClassVarScopeTest>>tearDown (in category 'command') ----- + tearDown + grandchild removeFromChanges; removeFromSystemUnlogged . + child removeFromChanges; removeFromSystemUnlogged . + parent removeFromChanges; removeFromSystemUnlogged . + Smalltalk globals removeKey: #ClassVarScopeFoo!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedClassMethodInChild (in category 'test') ----- + testDefinedClassMethodInChild + self assert: child childGetFoo == nil. + child childSetFoo: #bar. + self assert: child childGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedClassMethodInGrandchild (in category 'test') ----- + testDefinedClassMethodInGrandchild + self assert: grandchild grandchildGetFoo == nil. + grandchild grandchildSetFoo: #bar. + self assert: grandchild grandchildGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedClassMethodInParent (in category 'test') ----- + testDefinedClassMethodInParent + self assert: parent parentGetFoo == foo. + parent parentSetFoo: #bar. + self assert: parent parentGetFoo = #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedInstanceMethodInChild (in category 'test') ----- + testDefinedInstanceMethodInChild + self assert: child basicNew childGetFoo == nil. + child basicNew childSetFoo: #bar. + self assert: child basicNew childGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedInstanceMethodInGrandchild (in category 'test') ----- + testDefinedInstanceMethodInGrandchild + self assert: grandchild basicNew grandchildGetFoo == nil. + grandchild basicNew grandchildSetFoo: #bar. + self assert: grandchild basicNew grandchildGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testDefinedInstanceMethodInParent (in category 'test') ----- + testDefinedInstanceMethodInParent + self assert: parent basicNew parentGetFoo == foo. + parent basicNew parentSetFoo: #bar. + self assert: parent basicNew parentGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testInheritedClassMethodInChild (in category 'test') ----- + testInheritedClassMethodInChild + self assert: child parentGetFoo == foo. + child parentSetFoo: #bar. + self assert: child parentGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testInheritedClassMethodInGrandchild (in category 'test') ----- + testInheritedClassMethodInGrandchild + self assert: grandchild childGetFoo == nil. + grandchild childSetFoo: #bar. + self assert: grandchild childGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testInheritedInstanceMethodInChild (in category 'test') ----- + testInheritedInstanceMethodInChild + self assert: child basicNew parentGetFoo == foo. + child basicNew parentSetFoo: #bar. + self assert: child basicNew parentGetFoo == #bar!
Item was added: + ----- Method: ClassVarScopeTest>>testInheritedInstanceMethodInGrandchild (in category 'test') ----- + testInheritedInstanceMethodInGrandchild + self assert: grandchild basicNew childGetFoo == nil. + grandchild basicNew childSetFoo: #bar. + self assert: grandchild basicNew childGetFoo == #bar!
squeak-dev@lists.squeakfoundation.org