packages/PackageSmalltalkManipulationTestCases.st
author james
Tue, 13 May 2003 08:04:48 +0200
changeset 1276 e7fe802b0f1f
parent 1273 daaf2c5c4b6a
child 1277 1d8752c224d1
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1266
a6392c856409 initial checkin
james
parents:
diff changeset
     1
"{ Package: 'stx:libbasic3' }"
a6392c856409 initial checkin
james
parents:
diff changeset
     2
a6392c856409 initial checkin
james
parents:
diff changeset
     3
"{ NameSpace: Packages }"
a6392c856409 initial checkin
james
parents:
diff changeset
     4
a6392c856409 initial checkin
james
parents:
diff changeset
     5
AbstractTestCases subclass:#PackageSmalltalkManipulationTestCases
a6392c856409 initial checkin
james
parents:
diff changeset
     6
	instanceVariableNames:'packageManager defaultPackage'
a6392c856409 initial checkin
james
parents:
diff changeset
     7
	classVariableNames:''
a6392c856409 initial checkin
james
parents:
diff changeset
     8
	poolDictionaries:''
a6392c856409 initial checkin
james
parents:
diff changeset
     9
	category:'Package'
a6392c856409 initial checkin
james
parents:
diff changeset
    10
!
a6392c856409 initial checkin
james
parents:
diff changeset
    11
a6392c856409 initial checkin
james
parents:
diff changeset
    12
a6392c856409 initial checkin
james
parents:
diff changeset
    13
!PackageSmalltalkManipulationTestCases methodsFor:'initialize / release'!
a6392c856409 initial checkin
james
parents:
diff changeset
    14
a6392c856409 initial checkin
james
parents:
diff changeset
    15
initialize
a6392c856409 initial checkin
james
parents:
diff changeset
    16
a6392c856409 initial checkin
james
parents:
diff changeset
    17
    packageManager ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    18
        packageManager := self packageManager.
a6392c856409 initial checkin
james
parents:
diff changeset
    19
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    20
a6392c856409 initial checkin
james
parents:
diff changeset
    21
    defaultPackage ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    22
        defaultPackage := packageManager defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    23
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    24
!
a6392c856409 initial checkin
james
parents:
diff changeset
    25
a6392c856409 initial checkin
james
parents:
diff changeset
    26
setUp
a6392c856409 initial checkin
james
parents:
diff changeset
    27
    "common setup - invoked before testing"
1273
daaf2c5c4b6a *** empty log message ***
james
parents: 1266
diff changeset
    28
    super setUp.
1266
a6392c856409 initial checkin
james
parents:
diff changeset
    29
    self setUpUsedClasses.
a6392c856409 initial checkin
james
parents:
diff changeset
    30
!
a6392c856409 initial checkin
james
parents:
diff changeset
    31
a6392c856409 initial checkin
james
parents:
diff changeset
    32
setUpAllForQWERTY
a6392c856409 initial checkin
james
parents:
diff changeset
    33
    | class copyQWERTYDic|
a6392c856409 initial checkin
james
parents:
diff changeset
    34
    
a6392c856409 initial checkin
james
parents:
diff changeset
    35
    (class := Smalltalk at:#QWERTY) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    36
        self createClassNamed:#QWERTY. 
a6392c856409 initial checkin
james
parents:
diff changeset
    37
        (class := Smalltalk at:#QWERTY).
a6392c856409 initial checkin
james
parents:
diff changeset
    38
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    39
a6392c856409 initial checkin
james
parents:
diff changeset
    40
    (class compiledMethodAt:#aDummyMethod) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    41
        self createMethodFor:QWERTY source:'aDummyMethod 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    42
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    43
    (class compiledMethodAt:#aDummyMethod2) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    44
        self createMethodFor:QWERTY source:'aDummyMethod2 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    45
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    46
    (class compiledMethodAt:#aDummyMethod3) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    47
        self createMethodFor:QWERTY source:'aDummyMethod3 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    48
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    49
    copyQWERTYDic := QWERTY methodDictionary copy.
a6392c856409 initial checkin
james
parents:
diff changeset
    50
    copyQWERTYDic removeKey:#aDummyMethod.
a6392c856409 initial checkin
james
parents:
diff changeset
    51
    copyQWERTYDic removeKey:#aDummyMethod2.
a6392c856409 initial checkin
james
parents:
diff changeset
    52
    copyQWERTYDic removeKey:#aDummyMethod3.
a6392c856409 initial checkin
james
parents:
diff changeset
    53
    copyQWERTYDic keysAndValuesDo:[:key :value |
a6392c856409 initial checkin
james
parents:
diff changeset
    54
       QWERTY methodDictionary removeKey:key.
a6392c856409 initial checkin
james
parents:
diff changeset
    55
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    56
a6392c856409 initial checkin
james
parents:
diff changeset
    57
    packageManager moveClass:QWERTY toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    58
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    59
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod2) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    60
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod3) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    61
!
a6392c856409 initial checkin
james
parents:
diff changeset
    62
a6392c856409 initial checkin
james
parents:
diff changeset
    63
setUpAllForQWERTZ
a6392c856409 initial checkin
james
parents:
diff changeset
    64
    | class copyQWERTZDic|
a6392c856409 initial checkin
james
parents:
diff changeset
    65
    (class := Smalltalk at:#QWERTZ) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    66
        self createClassNamed:#QWERTZ.
a6392c856409 initial checkin
james
parents:
diff changeset
    67
        (class := Smalltalk at:#QWERTZ)
a6392c856409 initial checkin
james
parents:
diff changeset
    68
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    69
a6392c856409 initial checkin
james
parents:
diff changeset
    70
    (class compiledMethodAt:#aDummyMethod) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    71
        self createMethodFor:QWERTZ source:'aDummyMethod 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    72
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    73
    (class compiledMethodAt:#aDummyMethod2) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    74
        self createMethodFor:QWERTZ source:'aDummyMethod2 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    75
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    76
    (class compiledMethodAt:#aDummyMethod3) ifNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
    77
        self createMethodFor:QWERTZ source:'aDummyMethod3 1 + 1.'.
a6392c856409 initial checkin
james
parents:
diff changeset
    78
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    79
a6392c856409 initial checkin
james
parents:
diff changeset
    80
    copyQWERTZDic := QWERTZ methodDictionary copy.
a6392c856409 initial checkin
james
parents:
diff changeset
    81
    copyQWERTZDic removeKey:#aDummyMethod.
a6392c856409 initial checkin
james
parents:
diff changeset
    82
    copyQWERTZDic removeKey:#aDummyMethod2.
a6392c856409 initial checkin
james
parents:
diff changeset
    83
    copyQWERTZDic removeKey:#aDummyMethod3.
a6392c856409 initial checkin
james
parents:
diff changeset
    84
    copyQWERTZDic keysAndValuesDo:[:key :value |
a6392c856409 initial checkin
james
parents:
diff changeset
    85
       QWERTZ methodDictionary removeKey:key.
a6392c856409 initial checkin
james
parents:
diff changeset
    86
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
    87
a6392c856409 initial checkin
james
parents:
diff changeset
    88
    packageManager moveClass:QWERTZ toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    89
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    90
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod2) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    91
    packageManager moveMethod:(class compiledMethodAt:#aDummyMethod3) toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
    92
!
a6392c856409 initial checkin
james
parents:
diff changeset
    93
a6392c856409 initial checkin
james
parents:
diff changeset
    94
setUpUsedClasses
a6392c856409 initial checkin
james
parents:
diff changeset
    95
    "common setup - invoked before testing"
a6392c856409 initial checkin
james
parents:
diff changeset
    96
    |  |
a6392c856409 initial checkin
james
parents:
diff changeset
    97
    self setUpAllForQWERTZ.
a6392c856409 initial checkin
james
parents:
diff changeset
    98
    self setUpAllForQWERTY.                
a6392c856409 initial checkin
james
parents:
diff changeset
    99
!
a6392c856409 initial checkin
james
parents:
diff changeset
   100
a6392c856409 initial checkin
james
parents:
diff changeset
   101
tearDown
a6392c856409 initial checkin
james
parents:
diff changeset
   102
    "common cleanup - invoked after testing"
a6392c856409 initial checkin
james
parents:
diff changeset
   103
a6392c856409 initial checkin
james
parents:
diff changeset
   104
    "move class package to where it was"
a6392c856409 initial checkin
james
parents:
diff changeset
   105
    super tearDown
a6392c856409 initial checkin
james
parents:
diff changeset
   106
! !
a6392c856409 initial checkin
james
parents:
diff changeset
   107
a6392c856409 initial checkin
james
parents:
diff changeset
   108
!PackageSmalltalkManipulationTestCases methodsFor:'test - creation'!
a6392c856409 initial checkin
james
parents:
diff changeset
   109
a6392c856409 initial checkin
james
parents:
diff changeset
   110
testClassCreation
a6392c856409 initial checkin
james
parents:
diff changeset
   111
    "tests that new classes are automatically included in workingPackage"
a6392c856409 initial checkin
james
parents:
diff changeset
   112
     | packagedClass |
a6392c856409 initial checkin
james
parents:
diff changeset
   113
    [
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   114
        "prerequisites"
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   115
        self assert:(Smalltalk classNamed:#QWERTZ2) isNil.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   116
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   117
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   118
        self assert:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   119
        packagedClass := (packageManager workingPackage packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   120
        self assert:(packagedClass isInSmalltalk)
a6392c856409 initial checkin
james
parents:
diff changeset
   121
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   122
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   123
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   124
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   125
        self assert:(defaultPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   126
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   127
        packagedClass removeFromPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   128
a6392c856409 initial checkin
james
parents:
diff changeset
   129
        self shouldnt:(defaultPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   130
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   131
!
a6392c856409 initial checkin
james
parents:
diff changeset
   132
a6392c856409 initial checkin
james
parents:
diff changeset
   133
testClassCreation2
a6392c856409 initial checkin
james
parents:
diff changeset
   134
    "tests that new classes are automatically included in workingPackage"
a6392c856409 initial checkin
james
parents:
diff changeset
   135
     | packagedClass packageTestCases |
a6392c856409 initial checkin
james
parents:
diff changeset
   136
    Error handle:[:ex |
a6392c856409 initial checkin
james
parents:
diff changeset
   137
        self halt.
a6392c856409 initial checkin
james
parents:
diff changeset
   138
    ] do:[
a6392c856409 initial checkin
james
parents:
diff changeset
   139
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   140
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   141
        packageManager workingPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   142
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   143
        self assert:(QWERTZ2 package == packageManager workingPackage name).
a6392c856409 initial checkin
james
parents:
diff changeset
   144
a6392c856409 initial checkin
james
parents:
diff changeset
   145
a6392c856409 initial checkin
james
parents:
diff changeset
   146
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   147
        packagedClass := (packageTestCases packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   148
        self assert:(packagedClass isInSmalltalk)
a6392c856409 initial checkin
james
parents:
diff changeset
   149
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   150
        packageTestCases ifNotNil:[
a6392c856409 initial checkin
james
parents:
diff changeset
   151
            packageManager removePackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   152
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   153
a6392c856409 initial checkin
james
parents:
diff changeset
   154
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   155
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   156
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   157
a6392c856409 initial checkin
james
parents:
diff changeset
   158
        packageManager workingPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   159
a6392c856409 initial checkin
james
parents:
diff changeset
   160
        self shouldnt:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   161
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   162
a6392c856409 initial checkin
james
parents:
diff changeset
   163
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   164
!
a6392c856409 initial checkin
james
parents:
diff changeset
   165
a6392c856409 initial checkin
james
parents:
diff changeset
   166
testClassRedefine
a6392c856409 initial checkin
james
parents:
diff changeset
   167
    "tests that new classes are automatically included in workingPackage"
a6392c856409 initial checkin
james
parents:
diff changeset
   168
     | packagedClass packageTestCases workingPackage newPackage |
a6392c856409 initial checkin
james
parents:
diff changeset
   169
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   170
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   171
        workingPackage := packageManager workingPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   172
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   173
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   174
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   175
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   176
        self assert:(QWERTZ2 package == packageManager workingPackage name).
a6392c856409 initial checkin
james
parents:
diff changeset
   177
a6392c856409 initial checkin
james
parents:
diff changeset
   178
        packageManager moveClass:QWERTZ2 toPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   179
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   180
        packagedClass := (packageTestCases packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   181
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   182
a6392c856409 initial checkin
james
parents:
diff changeset
   183
        self shouldnt:(workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   184
a6392c856409 initial checkin
james
parents:
diff changeset
   185
        self createClassNamed:#QWERTZ2 inheritsFrom:#Collection.
a6392c856409 initial checkin
james
parents:
diff changeset
   186
        newPackage := packageManager packageNamed:QWERTZ2 package.  
a6392c856409 initial checkin
james
parents:
diff changeset
   187
a6392c856409 initial checkin
james
parents:
diff changeset
   188
        self assert:(newPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   189
        packagedClass := (newPackage packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   190
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   191
a6392c856409 initial checkin
james
parents:
diff changeset
   192
        workingPackage ~= newPackage ifTrue:[
a6392c856409 initial checkin
james
parents:
diff changeset
   193
            self shouldnt:(workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   194
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   195
a6392c856409 initial checkin
james
parents:
diff changeset
   196
a6392c856409 initial checkin
james
parents:
diff changeset
   197
        packageManager moveClass:QWERTZ2 toPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   198
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   199
        packageManager unloadPackageNamed:#'packageTestCases'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   200
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   201
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   202
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   203
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   204
!
a6392c856409 initial checkin
james
parents:
diff changeset
   205
a6392c856409 initial checkin
james
parents:
diff changeset
   206
testMethodCreation
a6392c856409 initial checkin
james
parents:
diff changeset
   207
    "tests that new methods are automatically included in workingPackage"
a6392c856409 initial checkin
james
parents:
diff changeset
   208
    self createMethodFor:QWERTZ source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   209
    self assert:(packageManager workingPackage definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ)
a6392c856409 initial checkin
james
parents:
diff changeset
   210
!
a6392c856409 initial checkin
james
parents:
diff changeset
   211
a6392c856409 initial checkin
james
parents:
diff changeset
   212
testMethodRedefine
a6392c856409 initial checkin
james
parents:
diff changeset
   213
    "tests that redefined are automatically included in workingPackage when they are added to
a6392c856409 initial checkin
james
parents:
diff changeset
   214
    another package"
a6392c856409 initial checkin
james
parents:
diff changeset
   215
     | package1 method1 packageClassIsIn packageMethodIsIn |
a6392c856409 initial checkin
james
parents:
diff changeset
   216
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   217
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   218
a6392c856409 initial checkin
james
parents:
diff changeset
   219
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   220
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   221
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   222
a6392c856409 initial checkin
james
parents:
diff changeset
   223
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   224
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   225
a6392c856409 initial checkin
james
parents:
diff changeset
   226
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   227
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   228
a6392c856409 initial checkin
james
parents:
diff changeset
   229
        packageManager addMethod:method1 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   230
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   231
        self assert:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   232
a6392c856409 initial checkin
james
parents:
diff changeset
   233
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   234
a6392c856409 initial checkin
james
parents:
diff changeset
   235
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   236
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   237
a6392c856409 initial checkin
james
parents:
diff changeset
   238
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   239
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   240
        "sometimes the #keep is done automatically. #keep meaning when a method is created a signal is asked for
a6392c856409 initial checkin
james
parents:
diff changeset
   241
        and if not returned the method is either keep in the current project OR put into another one OR put into
a6392c856409 initial checkin
james
parents:
diff changeset
   242
        the working package"
a6392c856409 initial checkin
james
parents:
diff changeset
   243
        package1 ~=  packageMethodIsIn ifTrue:[
a6392c856409 initial checkin
james
parents:
diff changeset
   244
            self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   245
            self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   246
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   247
a6392c856409 initial checkin
james
parents:
diff changeset
   248
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   249
        packageManager unloadPackageNamed:#'package1'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   250
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   251
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   252
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   253
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   254
!
a6392c856409 initial checkin
james
parents:
diff changeset
   255
a6392c856409 initial checkin
james
parents:
diff changeset
   256
testMethodRedefine2
a6392c856409 initial checkin
james
parents:
diff changeset
   257
    "tests that redefined are automatically included in workingPackage when they are moved to
a6392c856409 initial checkin
james
parents:
diff changeset
   258
    another package"
a6392c856409 initial checkin
james
parents:
diff changeset
   259
     | package1 method1 packageClassIsIn packageMethodIsIn |
a6392c856409 initial checkin
james
parents:
diff changeset
   260
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   261
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   262
a6392c856409 initial checkin
james
parents:
diff changeset
   263
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   264
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   265
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   266
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   267
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   268
a6392c856409 initial checkin
james
parents:
diff changeset
   269
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   270
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   271
a6392c856409 initial checkin
james
parents:
diff changeset
   272
        packageManager moveMethod:method1 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   273
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   274
        self assert:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   275
a6392c856409 initial checkin
james
parents:
diff changeset
   276
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   277
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   278
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   279
a6392c856409 initial checkin
james
parents:
diff changeset
   280
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   281
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   282
        package1 ~= packageMethodIsIn ifTrue:[
a6392c856409 initial checkin
james
parents:
diff changeset
   283
            self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   284
            self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   285
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   286
a6392c856409 initial checkin
james
parents:
diff changeset
   287
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   288
        packageManager unloadPackageNamed:#'package1'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   289
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   290
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   291
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   292
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   293
!
a6392c856409 initial checkin
james
parents:
diff changeset
   294
a6392c856409 initial checkin
james
parents:
diff changeset
   295
testMethodRedefine3_cancel
a6392c856409 initial checkin
james
parents:
diff changeset
   296
    "tests that redefined methods that want to be kept in the cuurent package do so!!
a6392c856409 initial checkin
james
parents:
diff changeset
   297
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   298
     | package1 method1 method2 packageClassIsIn packageMethodIsIn packageMethodWasIn |
a6392c856409 initial checkin
james
parents:
diff changeset
   299
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   300
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   301
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   302
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   303
a6392c856409 initial checkin
james
parents:
diff changeset
   304
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   305
a6392c856409 initial checkin
james
parents:
diff changeset
   306
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   307
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   308
a6392c856409 initial checkin
james
parents:
diff changeset
   309
a6392c856409 initial checkin
james
parents:
diff changeset
   310
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   311
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   312
a6392c856409 initial checkin
james
parents:
diff changeset
   313
        packageManager moveMethod:method1 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   314
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   315
a6392c856409 initial checkin
james
parents:
diff changeset
   316
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   317
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   318
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   319
a6392c856409 initial checkin
james
parents:
diff changeset
   320
        packageMethodWasIn := packageMethodIsIn.
a6392c856409 initial checkin
james
parents:
diff changeset
   321
a6392c856409 initial checkin
james
parents:
diff changeset
   322
     method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
1273
daaf2c5c4b6a *** empty log message ***
james
parents: 1266
diff changeset
   323
     (Class methodRedefinitionSignal) handle:[:ex | 
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   324
                ex proceedWith:#cancel
a6392c856409 initial checkin
james
parents:
diff changeset
   325
        ] do:[
a6392c856409 initial checkin
james
parents:
diff changeset
   326
            self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   327
            method2 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   328
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   329
1273
daaf2c5c4b6a *** empty log message ***
james
parents: 1266
diff changeset
   330
        self shouldnt:(method2 package = method1 package).
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   331
a6392c856409 initial checkin
james
parents:
diff changeset
   332
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   333
        packageManager unloadPackageNamed:#'package1'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   334
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   335
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   336
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   337
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   338
!
a6392c856409 initial checkin
james
parents:
diff changeset
   339
a6392c856409 initial checkin
james
parents:
diff changeset
   340
testMethodRedefine3_continue
a6392c856409 initial checkin
james
parents:
diff changeset
   341
    "tests that redefined methods that want to be kept in the cuurent package do so!!
a6392c856409 initial checkin
james
parents:
diff changeset
   342
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   343
     | package1 method1 packageClassIsIn packageMethodIsIn packageMethodWasIn |
a6392c856409 initial checkin
james
parents:
diff changeset
   344
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   345
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   346
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   347
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   348
a6392c856409 initial checkin
james
parents:
diff changeset
   349
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   350
a6392c856409 initial checkin
james
parents:
diff changeset
   351
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   352
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   353
a6392c856409 initial checkin
james
parents:
diff changeset
   354
a6392c856409 initial checkin
james
parents:
diff changeset
   355
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   356
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   357
a6392c856409 initial checkin
james
parents:
diff changeset
   358
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   359
        packageManager moveMethod:method1 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   360
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   361
a6392c856409 initial checkin
james
parents:
diff changeset
   362
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   363
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   364
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   365
a6392c856409 initial checkin
james
parents:
diff changeset
   366
        packageMethodWasIn := packageMethodIsIn.
a6392c856409 initial checkin
james
parents:
diff changeset
   367
a6392c856409 initial checkin
james
parents:
diff changeset
   368
       (Class methodRedefinitionSignal) handle:[:ex |
a6392c856409 initial checkin
james
parents:
diff changeset
   369
                ex proceedWith:#continue
a6392c856409 initial checkin
james
parents:
diff changeset
   370
        ] do:[
a6392c856409 initial checkin
james
parents:
diff changeset
   371
            self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   372
            method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   373
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   374
a6392c856409 initial checkin
james
parents:
diff changeset
   375
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   376
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   377
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   378
a6392c856409 initial checkin
james
parents:
diff changeset
   379
        packageMethodWasIn ~= packageMethodIsIn ifTrue:[
a6392c856409 initial checkin
james
parents:
diff changeset
   380
            self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   381
            self shouldnt:(packageMethodWasIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   382
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   383
a6392c856409 initial checkin
james
parents:
diff changeset
   384
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   385
        packageManager unloadPackageNamed:#'package1'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   386
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   387
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   388
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   389
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   390
!
a6392c856409 initial checkin
james
parents:
diff changeset
   391
a6392c856409 initial checkin
james
parents:
diff changeset
   392
testMethodRedefine3_keep
a6392c856409 initial checkin
james
parents:
diff changeset
   393
    "tests that redefined methods that want to be kept in the cuurent package do so!!
a6392c856409 initial checkin
james
parents:
diff changeset
   394
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   395
     | package1 method1 packageClassIsIn packageMethodIsIn packageMethodWasIn |
a6392c856409 initial checkin
james
parents:
diff changeset
   396
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   397
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   398
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   399
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   400
a6392c856409 initial checkin
james
parents:
diff changeset
   401
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   402
a6392c856409 initial checkin
james
parents:
diff changeset
   403
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   404
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   405
a6392c856409 initial checkin
james
parents:
diff changeset
   406
a6392c856409 initial checkin
james
parents:
diff changeset
   407
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   408
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   409
a6392c856409 initial checkin
james
parents:
diff changeset
   410
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   411
        packageManager moveMethod:method1 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   412
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   413
a6392c856409 initial checkin
james
parents:
diff changeset
   414
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   415
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   416
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   417
a6392c856409 initial checkin
james
parents:
diff changeset
   418
        packageMethodWasIn := packageMethodIsIn.
a6392c856409 initial checkin
james
parents:
diff changeset
   419
a6392c856409 initial checkin
james
parents:
diff changeset
   420
       (Class methodRedefinitionSignal) handle:[:ex |
a6392c856409 initial checkin
james
parents:
diff changeset
   421
                ex proceedWith:#keep
a6392c856409 initial checkin
james
parents:
diff changeset
   422
        ] do:[
a6392c856409 initial checkin
james
parents:
diff changeset
   423
            self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   424
            method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   425
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   426
a6392c856409 initial checkin
james
parents:
diff changeset
   427
        packageMethodIsIn := packageManager packageNamed:method1 package.
a6392c856409 initial checkin
james
parents:
diff changeset
   428
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   429
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   430
a6392c856409 initial checkin
james
parents:
diff changeset
   431
        packageMethodWasIn ~= packageMethodIsIn ifTrue:[
a6392c856409 initial checkin
james
parents:
diff changeset
   432
            self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   433
            self shouldnt:(packageMethodWasIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   434
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   435
a6392c856409 initial checkin
james
parents:
diff changeset
   436
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   437
        packageManager unloadPackageNamed:#'package1'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   438
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   439
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   440
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   441
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   442
! !
a6392c856409 initial checkin
james
parents:
diff changeset
   443
a6392c856409 initial checkin
james
parents:
diff changeset
   444
!PackageSmalltalkManipulationTestCases methodsFor:'test - moving'!
a6392c856409 initial checkin
james
parents:
diff changeset
   445
a6392c856409 initial checkin
james
parents:
diff changeset
   446
obsolete_test_moveClass1
a6392c856409 initial checkin
james
parents:
diff changeset
   447
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   448
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   449
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   450
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   451
    | package1 package2 aName  |
a6392c856409 initial checkin
james
parents:
diff changeset
   452
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   453
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   454
        package2 :=  packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   455
a6392c856409 initial checkin
james
parents:
diff changeset
   456
        packageManager addClass:QWERTZ toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   457
a6392c856409 initial checkin
james
parents:
diff changeset
   458
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   459
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   460
a6392c856409 initial checkin
james
parents:
diff changeset
   461
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   462
        self shouldnt:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   463
a6392c856409 initial checkin
james
parents:
diff changeset
   464
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   465
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   466
            self assert:(aName := QWERTZ package) == package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   467
            QWERTZ setPackage:package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   468
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   469
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   470
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   471
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   472
        self assert:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.      
a6392c856409 initial checkin
james
parents:
diff changeset
   473
        self shouldnt:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.        
a6392c856409 initial checkin
james
parents:
diff changeset
   474
        self assert:(package2 isDependentOnClassNamed:#QWERTZ).     
a6392c856409 initial checkin
james
parents:
diff changeset
   475
        self shouldnt:(package1 isDependentOnClassNamed:#QWERTZ).       
a6392c856409 initial checkin
james
parents:
diff changeset
   476
a6392c856409 initial checkin
james
parents:
diff changeset
   477
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   478
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   479
a6392c856409 initial checkin
james
parents:
diff changeset
   480
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   481
            self assert:(aName := QWERTZ package) == package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   482
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   483
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   484
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   485
        self shouldnt:(package2 isDependentOnClassNamed:#QWERTZ).    
a6392c856409 initial checkin
james
parents:
diff changeset
   486
        self assert:(package1 isDependentOnClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   487
a6392c856409 initial checkin
james
parents:
diff changeset
   488
        self assert:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk. 
a6392c856409 initial checkin
james
parents:
diff changeset
   489
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   490
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   491
        self assert:((package1 blockedMethodsAtClassNamed:#QWERTZ) size == 0).
a6392c856409 initial checkin
james
parents:
diff changeset
   492
        packageManager addClass:QWERTZ toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   493
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   494
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   495
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   496
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   497
!
a6392c856409 initial checkin
james
parents:
diff changeset
   498
a6392c856409 initial checkin
james
parents:
diff changeset
   499
obsolete_test_moveClass2
a6392c856409 initial checkin
james
parents:
diff changeset
   500
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   501
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   502
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   503
    "Move QWERTZ class to a new package named the same as the old package
a6392c856409 initial checkin
james
parents:
diff changeset
   504
    but with a 1 on the end. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   505
    | package1 package2 aName package3 |
a6392c856409 initial checkin
james
parents:
diff changeset
   506
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   507
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   508
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   509
        package3 := packageManager newPackageNamed:#'package3'.
a6392c856409 initial checkin
james
parents:
diff changeset
   510
a6392c856409 initial checkin
james
parents:
diff changeset
   511
        packageManager addClass:QWERTZ toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   512
        packageManager addClass:QWERTZ toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   513
        packageManager addClass:QWERTZ toPackage:package3.
a6392c856409 initial checkin
james
parents:
diff changeset
   514
a6392c856409 initial checkin
james
parents:
diff changeset
   515
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   516
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   517
        self assert:(package3 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   518
a6392c856409 initial checkin
james
parents:
diff changeset
   519
        self shouldnt:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   520
        self shouldnt:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   521
        self assert:(package3 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   522
a6392c856409 initial checkin
james
parents:
diff changeset
   523
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   524
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   525
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   526
a6392c856409 initial checkin
james
parents:
diff changeset
   527
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   528
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   529
            self assert:(aName := QWERTZ package) == package3 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   530
            QWERTZ setPackage:package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   531
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   532
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   533
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   534
        self assert:(package3 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   535
a6392c856409 initial checkin
james
parents:
diff changeset
   536
        self assert:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.         
a6392c856409 initial checkin
james
parents:
diff changeset
   537
        self shouldnt:(package3 packagedClassNamed:#QWERTZ) isInSmalltalk.         
a6392c856409 initial checkin
james
parents:
diff changeset
   538
a6392c856409 initial checkin
james
parents:
diff changeset
   539
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   540
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   541
a6392c856409 initial checkin
james
parents:
diff changeset
   542
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   543
            self assert:(aName := QWERTZ package) == package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   544
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   545
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   546
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   547
        self assert:(package2 includesPackagedClassNamed:QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   548
        self assert:(package1 includesPackagedClassNamed:QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   549
a6392c856409 initial checkin
james
parents:
diff changeset
   550
        self assert:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.    
a6392c856409 initial checkin
james
parents:
diff changeset
   551
        self shouldnt:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.  
a6392c856409 initial checkin
james
parents:
diff changeset
   552
a6392c856409 initial checkin
james
parents:
diff changeset
   553
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   554
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   555
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   556
a6392c856409 initial checkin
james
parents:
diff changeset
   557
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   558
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   559
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   560
        packageManager unloadPackageNamed:#'package3'.
a6392c856409 initial checkin
james
parents:
diff changeset
   561
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   562
!
a6392c856409 initial checkin
james
parents:
diff changeset
   563
a6392c856409 initial checkin
james
parents:
diff changeset
   564
test_moveClass1
a6392c856409 initial checkin
james
parents:
diff changeset
   565
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   566
    | package1 aName  |
a6392c856409 initial checkin
james
parents:
diff changeset
   567
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   568
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   569
a6392c856409 initial checkin
james
parents:
diff changeset
   570
a6392c856409 initial checkin
james
parents:
diff changeset
   571
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   572
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   573
            self assert:(aName := QWERTZ package) == defaultPackage name.
a6392c856409 initial checkin
james
parents:
diff changeset
   574
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   575
            self should:[ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName] raise:Error.
a6392c856409 initial checkin
james
parents:
diff changeset
   576
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   577
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   578
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   579
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   580
!
a6392c856409 initial checkin
james
parents:
diff changeset
   581
a6392c856409 initial checkin
james
parents:
diff changeset
   582
test_moveMethod1
a6392c856409 initial checkin
james
parents:
diff changeset
   583
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   584
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   585
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   586
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   587
    | package1 aName  theMethod methodOwnedClass|
a6392c856409 initial checkin
james
parents:
diff changeset
   588
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   589
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   590
        theMethod :=(QWERTZ compiledMethodAt:#'aDummyMethod').
a6392c856409 initial checkin
james
parents:
diff changeset
   591
        methodOwnedClass := QWERTZ.
a6392c856409 initial checkin
james
parents:
diff changeset
   592
a6392c856409 initial checkin
james
parents:
diff changeset
   593
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   594
            "This change always moves the method away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   595
            self assert:(aName := theMethod package) == defaultPackage name.
a6392c856409 initial checkin
james
parents:
diff changeset
   596
            theMethod setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   597
            self should:[ChangeFaker methodMovePackageChangeWithMethod:theMethod class:methodOwnedClass oldPackageName:aName.]
a6392c856409 initial checkin
james
parents:
diff changeset
   598
                    raise:Error.
a6392c856409 initial checkin
james
parents:
diff changeset
   599
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   600
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   601
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   602
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   603
! !
a6392c856409 initial checkin
james
parents:
diff changeset
   604
a6392c856409 initial checkin
james
parents:
diff changeset
   605
!PackageSmalltalkManipulationTestCases methodsFor:'test - removing'!
a6392c856409 initial checkin
james
parents:
diff changeset
   606
a6392c856409 initial checkin
james
parents:
diff changeset
   607
testClassRemove
a6392c856409 initial checkin
james
parents:
diff changeset
   608
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   609
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   610
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   611
     | packagedClass packageTestCases|
a6392c856409 initial checkin
james
parents:
diff changeset
   612
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   613
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   614
        packageManager workingPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   615
a6392c856409 initial checkin
james
parents:
diff changeset
   616
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   617
a6392c856409 initial checkin
james
parents:
diff changeset
   618
        self assert:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   619
        packagedClass := (packageManager workingPackage packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   620
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   621
a6392c856409 initial checkin
james
parents:
diff changeset
   622
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   623
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   624
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   625
a6392c856409 initial checkin
james
parents:
diff changeset
   626
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   627
        self assert:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   628
a6392c856409 initial checkin
james
parents:
diff changeset
   629
a6392c856409 initial checkin
james
parents:
diff changeset
   630
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   631
        packageManager unloadPackageNamed:#'packageTestCases'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   632
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   633
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   634
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   635
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   636
!
a6392c856409 initial checkin
james
parents:
diff changeset
   637
a6392c856409 initial checkin
james
parents:
diff changeset
   638
testClassRemove2
a6392c856409 initial checkin
james
parents:
diff changeset
   639
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   640
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   641
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   642
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   643
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   644
     | packagedClass packageTestCases packagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   645
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   646
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   647
        packageManager workingPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   648
a6392c856409 initial checkin
james
parents:
diff changeset
   649
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   650
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   651
a6392c856409 initial checkin
james
parents:
diff changeset
   652
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   653
        self assert:(packageTestCases definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   654
        packagedClass := (packageTestCases packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   655
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   656
a6392c856409 initial checkin
james
parents:
diff changeset
   657
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   658
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   659
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   660
        "test that the CLASS is removed from Smalltalk BUT the package still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   661
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   662
        self assert:(packageTestCases definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   663
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   664
a6392c856409 initial checkin
james
parents:
diff changeset
   665
        "test that the METHOD is removed from Smalltalk BUT the package still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   666
        packagedMethod := (packageTestCases packagedMethodNamed:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   667
        self assert:(packagedMethod notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   668
        self shouldnt:(packagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   669
        
a6392c856409 initial checkin
james
parents:
diff changeset
   670
a6392c856409 initial checkin
james
parents:
diff changeset
   671
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   672
        packageManager workingPackage:packageManager defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   673
        packageManager unloadPackageNamed:#'packageTestCases'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   674
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   675
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   676
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   677
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   678
!
a6392c856409 initial checkin
james
parents:
diff changeset
   679
a6392c856409 initial checkin
james
parents:
diff changeset
   680
testClassRemove3
a6392c856409 initial checkin
james
parents:
diff changeset
   681
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   682
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   683
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   684
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   685
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   686
     | packagedClass package1 package2 packagedMethod1 packagedMethod2 method1 method2 |
a6392c856409 initial checkin
james
parents:
diff changeset
   687
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   688
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   689
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   690
a6392c856409 initial checkin
james
parents:
diff changeset
   691
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   692
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   693
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   694
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   695
        method2 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation2.
a6392c856409 initial checkin
james
parents:
diff changeset
   696
a6392c856409 initial checkin
james
parents:
diff changeset
   697
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   698
        "This blocks method2 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   699
        packageManager moveMethod:method2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   700
a6392c856409 initial checkin
james
parents:
diff changeset
   701
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   702
        "package1 stores method2 as blocked"
a6392c856409 initial checkin
james
parents:
diff changeset
   703
        self shouldnt:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   704
a6392c856409 initial checkin
james
parents:
diff changeset
   705
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   706
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   707
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   708
a6392c856409 initial checkin
james
parents:
diff changeset
   709
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   710
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   711
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   712
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   713
        self assert:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   714
a6392c856409 initial checkin
james
parents:
diff changeset
   715
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   716
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   717
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   718
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   719
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   720
        self assert:(package1 definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   721
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   722
a6392c856409 initial checkin
james
parents:
diff changeset
   723
        "test that the METHOD is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   724
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   725
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   726
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   727
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   728
a6392c856409 initial checkin
james
parents:
diff changeset
   729
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   730
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   731
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   732
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   733
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   734
a6392c856409 initial checkin
james
parents:
diff changeset
   735
a6392c856409 initial checkin
james
parents:
diff changeset
   736
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   737
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   738
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   739
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   740
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   741
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   742
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   743
!
a6392c856409 initial checkin
james
parents:
diff changeset
   744
a6392c856409 initial checkin
james
parents:
diff changeset
   745
testClassRemove4
a6392c856409 initial checkin
james
parents:
diff changeset
   746
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   747
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   748
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   749
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   750
     | packagedClass package1 package2 packagedMethod1 packagedMethod2 method1 method2 |
a6392c856409 initial checkin
james
parents:
diff changeset
   751
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   752
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   753
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   754
a6392c856409 initial checkin
james
parents:
diff changeset
   755
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   756
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   757
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   758
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   759
        method2 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation2.
a6392c856409 initial checkin
james
parents:
diff changeset
   760
a6392c856409 initial checkin
james
parents:
diff changeset
   761
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   762
        "This blocks method2 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   763
        packageManager addMethod:method2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   764
        "method2 has been overridden in package1 by package2!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   765
a6392c856409 initial checkin
james
parents:
diff changeset
   766
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   767
        packagedClass := (package1 packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   768
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   769
a6392c856409 initial checkin
james
parents:
diff changeset
   770
        "Method1 in package1 "
a6392c856409 initial checkin
james
parents:
diff changeset
   771
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   772
        self assert:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   773
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   774
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   775
a6392c856409 initial checkin
james
parents:
diff changeset
   776
        "Method2 in package1 is overridden but still own's a copy which it is not dependant on"
a6392c856409 initial checkin
james
parents:
diff changeset
   777
        self assert:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   778
        self shouldnt:(package1 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   779
        packagedMethod2 := (package1 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   780
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   781
a6392c856409 initial checkin
james
parents:
diff changeset
   782
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   783
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   784
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   785
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   786
        self assert:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   787
a6392c856409 initial checkin
james
parents:
diff changeset
   788
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   789
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   790
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   791
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   792
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   793
        packagedClass := (package1 packagedClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   794
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   795
a6392c856409 initial checkin
james
parents:
diff changeset
   796
        "test that the METHOD1 is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   797
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   798
        self shouldnt:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   799
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   800
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   801
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   802
a6392c856409 initial checkin
james
parents:
diff changeset
   803
        "This that method2 is still overridden but still own's a copy which it is not dependant on"
a6392c856409 initial checkin
james
parents:
diff changeset
   804
        self assert:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   805
        self shouldnt:(package1 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   806
        packagedMethod2 := (package1 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   807
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   808
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   809
a6392c856409 initial checkin
james
parents:
diff changeset
   810
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   811
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   812
        self shouldnt:(package2 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   813
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   814
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   815
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   816
a6392c856409 initial checkin
james
parents:
diff changeset
   817
a6392c856409 initial checkin
james
parents:
diff changeset
   818
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   819
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   820
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   821
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   822
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   823
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   824
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   825
!
a6392c856409 initial checkin
james
parents:
diff changeset
   826
a6392c856409 initial checkin
james
parents:
diff changeset
   827
testClassRemove5
a6392c856409 initial checkin
james
parents:
diff changeset
   828
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   829
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   830
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   831
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   832
     | packagedClass package1 package2 method1 |
a6392c856409 initial checkin
james
parents:
diff changeset
   833
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   834
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   835
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   836
a6392c856409 initial checkin
james
parents:
diff changeset
   837
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   838
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   839
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   840
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   841
a6392c856409 initial checkin
james
parents:
diff changeset
   842
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   843
a6392c856409 initial checkin
james
parents:
diff changeset
   844
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   845
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   846
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   847
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   848
a6392c856409 initial checkin
james
parents:
diff changeset
   849
        packageManager addClass:QWERTZ2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   850
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   851
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   852
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   853
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   854
            self assert:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   855
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   856
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   857
a6392c856409 initial checkin
james
parents:
diff changeset
   858
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   859
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   860
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   861
        "package1 still has all the information it had before"
a6392c856409 initial checkin
james
parents:
diff changeset
   862
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   863
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   864
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   865
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   866
            self shouldnt:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   867
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   868
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   869
a6392c856409 initial checkin
james
parents:
diff changeset
   870
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   871
        packagedClass := (package2 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   872
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   873
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   874
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   875
            self shouldnt:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   876
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   877
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   878
a6392c856409 initial checkin
james
parents:
diff changeset
   879
a6392c856409 initial checkin
james
parents:
diff changeset
   880
a6392c856409 initial checkin
james
parents:
diff changeset
   881
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   882
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   883
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   884
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   885
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   886
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   887
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   888
!
a6392c856409 initial checkin
james
parents:
diff changeset
   889
a6392c856409 initial checkin
james
parents:
diff changeset
   890
testMethodRemove
a6392c856409 initial checkin
james
parents:
diff changeset
   891
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   892
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   893
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   894
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   895
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   896
     | package1 package2 packagedMethod1 method1  |
a6392c856409 initial checkin
james
parents:
diff changeset
   897
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   898
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   899
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   900
a6392c856409 initial checkin
james
parents:
diff changeset
   901
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   902
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   903
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   904
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   905
a6392c856409 initial checkin
james
parents:
diff changeset
   906
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   907
        "This blocks method1 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   908
        packageManager moveMethod:method1 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   909
a6392c856409 initial checkin
james
parents:
diff changeset
   910
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   911
        "package1 stores method2 as blocked"
a6392c856409 initial checkin
james
parents:
diff changeset
   912
        self shouldnt:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   913
a6392c856409 initial checkin
james
parents:
diff changeset
   914
a6392c856409 initial checkin
james
parents:
diff changeset
   915
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   916
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   917
        self assert:(package2 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   918
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   919
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   920
a6392c856409 initial checkin
james
parents:
diff changeset
   921
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[        
a6392c856409 initial checkin
james
parents:
diff changeset
   922
            QWERTZ2 removeSelector:method1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   923
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   924
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   925
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   926
        self shouldnt:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   927
a6392c856409 initial checkin
james
parents:
diff changeset
   928
        "test that the METHOD is still blocked in package1!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   929
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   930
a6392c856409 initial checkin
james
parents:
diff changeset
   931
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   932
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   933
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   934
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   935
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   936
a6392c856409 initial checkin
james
parents:
diff changeset
   937
a6392c856409 initial checkin
james
parents:
diff changeset
   938
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   939
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   940
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   941
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   942
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   943
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   944
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   945
!
a6392c856409 initial checkin
james
parents:
diff changeset
   946
a6392c856409 initial checkin
james
parents:
diff changeset
   947
testMethodRemove2
a6392c856409 initial checkin
james
parents:
diff changeset
   948
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   949
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
a6392c856409 initial checkin
james
parents:
diff changeset
   950
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   951
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   952
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   953
     | package1 package2 packagedMethod1 method1  |
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   954
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   955
    [
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   956
        "prerequisites"
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   957
        self assert:(Smalltalk classNamed:#QWERTZ2) isNil.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   958
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   959
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   960
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   961
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   962
        self createClassNamed:#QWERTZ2.   
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   963
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   964
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   965
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   966
a6392c856409 initial checkin
james
parents:
diff changeset
   967
        packageManager moveClass:QWERTZ2 toPackage:package1.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   968
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   969
        self assert:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   970
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   971
        "This blocks method1 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   972
        packageManager addMethod:method1 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   973
a6392c856409 initial checkin
james
parents:
diff changeset
   974
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   975
        "package1 stores method2 as overridden"
a6392c856409 initial checkin
james
parents:
diff changeset
   976
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   977
        self shouldnt:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   978
a6392c856409 initial checkin
james
parents:
diff changeset
   979
a6392c856409 initial checkin
james
parents:
diff changeset
   980
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   981
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   982
        self assert:(package2 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   983
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   984
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   985
a6392c856409 initial checkin
james
parents:
diff changeset
   986
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[        
a6392c856409 initial checkin
james
parents:
diff changeset
   987
            QWERTZ2 removeSelector:method1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   988
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   989
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   990
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   991
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   992
        self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   993
a6392c856409 initial checkin
james
parents:
diff changeset
   994
        "test that the METHOD is still defined but overridden in package1!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   995
a6392c856409 initial checkin
james
parents:
diff changeset
   996
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   997
        self shouldnt:(package2 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   998
a6392c856409 initial checkin
james
parents:
diff changeset
   999
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1000
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1001
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1002
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
  1003
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
  1004
a6392c856409 initial checkin
james
parents:
diff changeset
  1005
a6392c856409 initial checkin
james
parents:
diff changeset
  1006
    ] ensure:[
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1007
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1008
                (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1009
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1010
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1011
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1012
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
  1013
! !
a6392c856409 initial checkin
james
parents:
diff changeset
  1014
a6392c856409 initial checkin
james
parents:
diff changeset
  1015
!PackageSmalltalkManipulationTestCases class methodsFor:'documentation'!
a6392c856409 initial checkin
james
parents:
diff changeset
  1016
a6392c856409 initial checkin
james
parents:
diff changeset
  1017
version
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1018
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageSmalltalkManipulationTestCases.st,v 1.3 2003-05-13 06:04:48 james Exp $'
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1019
! !