Regenerated to fix dependency problem.
"{ Package: 'stx:goodies/monticello' }"
MCTestCase subclass:#MCClassDefinitionTest
instanceVariableNames:'previousChangeSet'
classVariableNames:''
poolDictionaries:''
category:'Monticello-Tests'
!
!MCClassDefinitionTest class methodsFor:'as yet unclassified'!
classAComment
^ 'This is a mock class. The Monticello tests manipulated it to simulate a developer modifying code in the image.'
!
classACommentStamp
^ 'cwp 8/10/2003 16:43'
!
restoreClassAComment
Smalltalk
at: #MCMockClassA
ifPresent: [:a | a classComment: self classAComment stamp: self classACommentStamp]
! !
!MCClassDefinitionTest methodsFor:'as yet unclassified'!
classAComment
^ self class classAComment
!
creationMessage
^ MessageSend
receiver: MCClassDefinition
selector: #name:superclassName:category:instVarNames:classVarNames:poolDictionaryNames:classInstVarNames:type:comment:commentStamp:
!
tearDown
Smalltalk at: #'MCMockClassC' ifPresent: [:c | c removeFromSystem]
"Modified: / 09-09-2010 / 15:23:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testCannotLoad
| d |
d := self mockClass: 'MCMockClassC' super: 'NotAnObject'.
self should: [d load] raise: Error.
self deny: (Smalltalk hasClassNamed: 'MCMockClassC').
!
testComparison
| d1 d2 d3 d4 |
d1 := self mockClass: 'A' super: 'X'.
d2 := self mockClass: 'A' super: 'Y'.
d3 := self mockClass: 'B' super: 'X'.
d4 := self mockClass: 'B' super: 'X'.
self assert: (d1 isRevisionOf: d2).
self deny: (d1 isSameRevisionAs: d2).
self assert: (d3 isRevisionOf: d4).
self assert: (d3 isSameRevisionAs: d4).
self deny: (d1 isRevisionOf: d3).
self deny: (d4 isRevisionOf: d2).
!
testCreation
| d |
d := self mockClassA asClassDefinition.
self assert: d className = #MCMockClassA.
self assert: d superclassName = #MCMock.
self assert: d type = #normal.
self assert: d category = self mockCategoryName.
self assert: d instVarNames asArray = #('ivar').
self assert: d classVarNames asArray = #('CVar').
self assert: d classInstVarNames asArray = #().
self assert: d comment isString.
self assert: d comment = self classAComment.
"/TODO: Fix it later
"/self assert: d commentStamp = self mockClassA organization commentStamp
"Modified: / 11-09-2010 / 18:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testDefinitionString
| d |
d := self mockClassA asClassDefinition.
self assert: d definitionString = self mockClassA mcDefinition.
"Modified: / 11-09-2010 / 18:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testEquals
| a b |
a := self mockClass: 'ClassA' super: 'SuperA'.
b := self mockClass: 'ClassA' super: 'SuperA'.
self assert: a = b
!
testEqualsSensitivity
| message a b defA args defB |
message := self creationMessage.
a := #(ClassA SuperA CategoryA #(iVarA) #(CVarA) #(PoolA) #(ciVarA)
typeA 'A comment' 'A').
b := #(ClassB SuperB CategoryB #(iVarB) #(CVarB) #(PoolB) #(ciVarB)
typeB 'B comment' 'B').
defA := message valueWithArguments: a.
1 to: 8 do: [:index |
args := a copy.
args at: index put: (b at: index).
defB := message valueWithArguments: args.
self deny: defA = defB.]
!
testKindOfSubclass
| classes d |
classes := Array
with: self mockClassA
with: String
with: Context
with: WeakArray
with: Float.
classes do: [:c |
d := c asClassDefinition.
self assert: d kindOfSubclass = c kindOfSubclass.
].
"Modified: / 28-08-2010 / 23:03:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testLoadAndUnload
| d c |
d := self mockClass: 'MCMockClassC' super: 'Object'.
d load.
self assert: (Smalltalk hasClassNamed: 'MCMockClassC').
c := (Smalltalk classNamed: 'MCMockClassC').
self assert: (c isKindOf: Class).
self assert: c superclass = Object.
self assert: c instVarNames isEmpty.
self assert: c classVarNames isEmpty.
self assert: c sharedPools isEmpty.
self assert: c category = self mockCategoryName.
self assert: c organization classComment = (self commentForClass: 'MCMockClassC').
"/Fix it later
"/self assert: c organization commentStamp = (self commentStampForClass: 'MCMockClassC').
d unload.
self deny: (Smalltalk hasClassNamed: 'MCMockClassC').
"Modified: / 11-09-2010 / 17:54:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!MCClassDefinitionTest class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinitionTest.st,v 1.1 2011-08-20 12:03:37 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinitionTest.st,v 1.1 2011-08-20 12:03:37 cg Exp $'
!
version_SVN
^ '§Id: MCClassDefinitionTest.st 7 2010-09-12 07:18:55Z vranyj1 §'
! !