packages/PackageSmalltalkManipulationTestCases.st
author james
Tue, 13 May 2003 11:43:44 +0200
changeset 1277 1d8752c224d1
parent 1276 e7fe802b0f1f
child 1283 37869bb1dbe1
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
1277
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   444
!PackageSmalltalkManipulationTestCases methodsFor:'test - fileIn type'!
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   445
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   446
testMethod_FileIn
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   447
    "I can across an error in the GUI builder when it tried to recompile a method on the class side!!
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   448
    it decided to change the package of the old class confusing the package completely!!
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   449
    "
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   450
     | package1 method1 packageClassIsIn packageMethodIsIn |
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   451
    [
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   452
        package1 := packageManager newPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   453
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   454
        self createClassNamed:#QWERTZ2.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   455
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   456
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   457
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   458
        packageClassIsIn := packageManager packageNamed:QWERTZ2 package.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   459
        packageMethodIsIn := packageManager packageNamed:method1 package.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   460
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   461
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   462
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   463
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   464
        packageManager addMethod:method1 toPackage:package1.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   465
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   466
        self assert:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   467
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   468
       " The test!!!!!! "
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   469
        method1 sourceCode halt.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   470
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   471
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   472
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   473
        packageMethodIsIn := packageManager packageNamed:method1 package.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   474
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   475
        self assert:(packageMethodIsIn definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   476
        self assert:(packageMethodIsIn isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   477
        "sometimes the #keep is done automatically. #keep meaning when a method is created a signal is asked for
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   478
        and if not returned the method is either keep in the current project OR put into another one OR put into
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   479
        the working package"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   480
        package1 ~=  packageMethodIsIn ifTrue:[
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   481
            self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   482
            self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   483
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   484
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   485
    ] ensure:[
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   486
        packageManager unloadPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   487
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   488
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   489
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   490
    ]
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   491
! !
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
   492
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   493
!PackageSmalltalkManipulationTestCases methodsFor:'test - moving'!
a6392c856409 initial checkin
james
parents:
diff changeset
   494
a6392c856409 initial checkin
james
parents:
diff changeset
   495
obsolete_test_moveClass1
a6392c856409 initial checkin
james
parents:
diff changeset
   496
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   497
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   498
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   499
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   500
    | package1 package2 aName  |
a6392c856409 initial checkin
james
parents:
diff changeset
   501
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   502
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   503
        package2 :=  packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   504
a6392c856409 initial checkin
james
parents:
diff changeset
   505
        packageManager addClass:QWERTZ toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   506
a6392c856409 initial checkin
james
parents:
diff changeset
   507
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   508
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   509
a6392c856409 initial checkin
james
parents:
diff changeset
   510
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   511
        self shouldnt:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   512
a6392c856409 initial checkin
james
parents:
diff changeset
   513
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   514
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   515
            self assert:(aName := QWERTZ package) == package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   516
            QWERTZ setPackage:package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   517
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   518
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   519
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   520
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   521
        self assert:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.      
a6392c856409 initial checkin
james
parents:
diff changeset
   522
        self shouldnt:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.        
a6392c856409 initial checkin
james
parents:
diff changeset
   523
        self assert:(package2 isDependentOnClassNamed:#QWERTZ).     
a6392c856409 initial checkin
james
parents:
diff changeset
   524
        self shouldnt:(package1 isDependentOnClassNamed:#QWERTZ).       
a6392c856409 initial checkin
james
parents:
diff changeset
   525
a6392c856409 initial checkin
james
parents:
diff changeset
   526
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   527
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   528
a6392c856409 initial checkin
james
parents:
diff changeset
   529
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   530
            self assert:(aName := QWERTZ package) == package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   531
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   532
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   533
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   534
        self shouldnt:(package2 isDependentOnClassNamed:#QWERTZ).    
a6392c856409 initial checkin
james
parents:
diff changeset
   535
        self assert:(package1 isDependentOnClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   536
a6392c856409 initial checkin
james
parents:
diff changeset
   537
        self assert:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk. 
a6392c856409 initial checkin
james
parents:
diff changeset
   538
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   539
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   540
        self assert:((package1 blockedMethodsAtClassNamed:#QWERTZ) size == 0).
a6392c856409 initial checkin
james
parents:
diff changeset
   541
        packageManager addClass:QWERTZ toPackage:defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   542
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   543
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   544
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   545
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   546
!
a6392c856409 initial checkin
james
parents:
diff changeset
   547
a6392c856409 initial checkin
james
parents:
diff changeset
   548
obsolete_test_moveClass2
a6392c856409 initial checkin
james
parents:
diff changeset
   549
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   550
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   551
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   552
    "Move QWERTZ class to a new package named the same as the old package
a6392c856409 initial checkin
james
parents:
diff changeset
   553
    but with a 1 on the end. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   554
    | package1 package2 aName package3 |
a6392c856409 initial checkin
james
parents:
diff changeset
   555
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   556
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   557
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   558
        package3 := packageManager newPackageNamed:#'package3'.
a6392c856409 initial checkin
james
parents:
diff changeset
   559
a6392c856409 initial checkin
james
parents:
diff changeset
   560
        packageManager addClass:QWERTZ toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   561
        packageManager addClass:QWERTZ toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   562
        packageManager addClass:QWERTZ toPackage:package3.
a6392c856409 initial checkin
james
parents:
diff changeset
   563
a6392c856409 initial checkin
james
parents:
diff changeset
   564
        self assert:(package1 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   565
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   566
        self assert:(package3 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   567
a6392c856409 initial checkin
james
parents:
diff changeset
   568
        self shouldnt:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   569
        self shouldnt:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   570
        self assert:(package3 packagedClassNamed:#QWERTZ) isInSmalltalk.
a6392c856409 initial checkin
james
parents:
diff changeset
   571
a6392c856409 initial checkin
james
parents:
diff changeset
   572
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   573
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   574
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   575
a6392c856409 initial checkin
james
parents:
diff changeset
   576
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   577
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   578
            self assert:(aName := QWERTZ package) == package3 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   579
            QWERTZ setPackage:package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   580
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   581
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   582
        self assert:(package2 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   583
        self assert:(package3 includesPackagedClassNamed:#QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   584
a6392c856409 initial checkin
james
parents:
diff changeset
   585
        self assert:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.         
a6392c856409 initial checkin
james
parents:
diff changeset
   586
        self shouldnt:(package3 packagedClassNamed:#QWERTZ) isInSmalltalk.         
a6392c856409 initial checkin
james
parents:
diff changeset
   587
a6392c856409 initial checkin
james
parents:
diff changeset
   588
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   589
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   590
a6392c856409 initial checkin
james
parents:
diff changeset
   591
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   592
            self assert:(aName := QWERTZ package) == package2 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   593
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   594
            ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName. 
a6392c856409 initial checkin
james
parents:
diff changeset
   595
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   596
        self assert:(package2 includesPackagedClassNamed:QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   597
        self assert:(package1 includesPackagedClassNamed:QWERTZ).
a6392c856409 initial checkin
james
parents:
diff changeset
   598
a6392c856409 initial checkin
james
parents:
diff changeset
   599
        self assert:(package1 packagedClassNamed:#QWERTZ) isInSmalltalk.    
a6392c856409 initial checkin
james
parents:
diff changeset
   600
        self shouldnt:(package2 packagedClassNamed:#QWERTZ) isInSmalltalk.  
a6392c856409 initial checkin
james
parents:
diff changeset
   601
a6392c856409 initial checkin
james
parents:
diff changeset
   602
        self assert:(package3 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   603
        self assert:(package2 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   604
        self assert:(package1 isDirty).
a6392c856409 initial checkin
james
parents:
diff changeset
   605
a6392c856409 initial checkin
james
parents:
diff changeset
   606
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   607
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   608
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   609
        packageManager unloadPackageNamed:#'package3'.
a6392c856409 initial checkin
james
parents:
diff changeset
   610
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   611
!
a6392c856409 initial checkin
james
parents:
diff changeset
   612
a6392c856409 initial checkin
james
parents:
diff changeset
   613
test_moveClass1
a6392c856409 initial checkin
james
parents:
diff changeset
   614
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   615
    | package1 aName  |
a6392c856409 initial checkin
james
parents:
diff changeset
   616
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   617
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   618
a6392c856409 initial checkin
james
parents:
diff changeset
   619
a6392c856409 initial checkin
james
parents:
diff changeset
   620
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   621
            "This change always moves the class away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   622
            self assert:(aName := QWERTZ package) == defaultPackage name.
a6392c856409 initial checkin
james
parents:
diff changeset
   623
            QWERTZ setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   624
            self should:[ChangeFaker classMovePackageChangeWithClass:QWERTZ oldPackageName:aName] raise:Error.
a6392c856409 initial checkin
james
parents:
diff changeset
   625
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   626
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   627
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   628
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   629
!
a6392c856409 initial checkin
james
parents:
diff changeset
   630
a6392c856409 initial checkin
james
parents:
diff changeset
   631
test_moveMethod1
a6392c856409 initial checkin
james
parents:
diff changeset
   632
    "moving classes via change notification is now deprecated as i found it best to try and seperate
a6392c856409 initial checkin
james
parents:
diff changeset
   633
    the functionality on Smalltalk and the functionality of package handling.
a6392c856409 initial checkin
james
parents:
diff changeset
   634
    "
a6392c856409 initial checkin
james
parents:
diff changeset
   635
    "Move QWERTZ class from package1 to package 2. Then move the class back."
a6392c856409 initial checkin
james
parents:
diff changeset
   636
    | package1 aName  theMethod methodOwnedClass|
a6392c856409 initial checkin
james
parents:
diff changeset
   637
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   638
        package1 :=  packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   639
        theMethod :=(QWERTZ compiledMethodAt:#'aDummyMethod').
a6392c856409 initial checkin
james
parents:
diff changeset
   640
        methodOwnedClass := QWERTZ.
a6392c856409 initial checkin
james
parents:
diff changeset
   641
a6392c856409 initial checkin
james
parents:
diff changeset
   642
        "<simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   643
            "This change always moves the method away from the classes current owner"
a6392c856409 initial checkin
james
parents:
diff changeset
   644
            self assert:(aName := theMethod package) == defaultPackage name.
a6392c856409 initial checkin
james
parents:
diff changeset
   645
            theMethod setPackage:package1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   646
            self should:[ChangeFaker methodMovePackageChangeWithMethod:theMethod class:methodOwnedClass oldPackageName:aName.]
a6392c856409 initial checkin
james
parents:
diff changeset
   647
                    raise:Error.
a6392c856409 initial checkin
james
parents:
diff changeset
   648
        "</simulatedChangeInBrowser>"
a6392c856409 initial checkin
james
parents:
diff changeset
   649
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   650
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   651
    ].
a6392c856409 initial checkin
james
parents:
diff changeset
   652
! !
a6392c856409 initial checkin
james
parents:
diff changeset
   653
a6392c856409 initial checkin
james
parents:
diff changeset
   654
!PackageSmalltalkManipulationTestCases methodsFor:'test - removing'!
a6392c856409 initial checkin
james
parents:
diff changeset
   655
a6392c856409 initial checkin
james
parents:
diff changeset
   656
testClassRemove
a6392c856409 initial checkin
james
parents:
diff changeset
   657
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   658
    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
   659
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   660
     | packagedClass packageTestCases|
a6392c856409 initial checkin
james
parents:
diff changeset
   661
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   662
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   663
        packageManager workingPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   664
a6392c856409 initial checkin
james
parents:
diff changeset
   665
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   666
a6392c856409 initial checkin
james
parents:
diff changeset
   667
        self assert:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   668
        packagedClass := (packageManager workingPackage packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   669
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   670
a6392c856409 initial checkin
james
parents:
diff changeset
   671
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   672
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   673
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   674
a6392c856409 initial checkin
james
parents:
diff changeset
   675
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   676
        self assert:(packageManager workingPackage includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   677
a6392c856409 initial checkin
james
parents:
diff changeset
   678
a6392c856409 initial checkin
james
parents:
diff changeset
   679
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   680
        packageManager unloadPackageNamed:#'packageTestCases'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   681
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   682
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   683
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   684
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   685
!
a6392c856409 initial checkin
james
parents:
diff changeset
   686
a6392c856409 initial checkin
james
parents:
diff changeset
   687
testClassRemove2
a6392c856409 initial checkin
james
parents:
diff changeset
   688
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   689
    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
   690
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   691
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   692
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   693
     | packagedClass packageTestCases packagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   694
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   695
        packageTestCases := packageManager newPackageNamed:#'packageTestCases'.
a6392c856409 initial checkin
james
parents:
diff changeset
   696
        packageManager workingPackage:packageTestCases.
a6392c856409 initial checkin
james
parents:
diff changeset
   697
a6392c856409 initial checkin
james
parents:
diff changeset
   698
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   699
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   700
a6392c856409 initial checkin
james
parents:
diff changeset
   701
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   702
        self assert:(packageTestCases definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   703
        packagedClass := (packageTestCases packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   704
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   705
a6392c856409 initial checkin
james
parents:
diff changeset
   706
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   707
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   708
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   709
        "test that the CLASS is removed from Smalltalk BUT the package still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   710
        self assert:(packageTestCases includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   711
        self assert:(packageTestCases definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   712
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   713
a6392c856409 initial checkin
james
parents:
diff changeset
   714
        "test that the METHOD is removed from Smalltalk BUT the package still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   715
        packagedMethod := (packageTestCases packagedMethodNamed:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   716
        self assert:(packagedMethod notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   717
        self shouldnt:(packagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   718
        
a6392c856409 initial checkin
james
parents:
diff changeset
   719
a6392c856409 initial checkin
james
parents:
diff changeset
   720
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   721
        packageManager workingPackage:packageManager defaultPackage.
a6392c856409 initial checkin
james
parents:
diff changeset
   722
        packageManager unloadPackageNamed:#'packageTestCases'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   723
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   724
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   725
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   726
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   727
!
a6392c856409 initial checkin
james
parents:
diff changeset
   728
a6392c856409 initial checkin
james
parents:
diff changeset
   729
testClassRemove3
a6392c856409 initial checkin
james
parents:
diff changeset
   730
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   731
    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
   732
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   733
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   734
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   735
     | packagedClass package1 package2 packagedMethod1 packagedMethod2 method1 method2 |
a6392c856409 initial checkin
james
parents:
diff changeset
   736
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   737
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   738
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   739
a6392c856409 initial checkin
james
parents:
diff changeset
   740
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   741
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   742
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   743
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   744
        method2 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation2.
a6392c856409 initial checkin
james
parents:
diff changeset
   745
a6392c856409 initial checkin
james
parents:
diff changeset
   746
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   747
        "This blocks method2 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   748
        packageManager moveMethod:method2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   749
a6392c856409 initial checkin
james
parents:
diff changeset
   750
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   751
        "package1 stores method2 as blocked"
a6392c856409 initial checkin
james
parents:
diff changeset
   752
        self shouldnt:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   753
a6392c856409 initial checkin
james
parents:
diff changeset
   754
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   755
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   756
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   757
a6392c856409 initial checkin
james
parents:
diff changeset
   758
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   759
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   760
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   761
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   762
        self assert:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   763
a6392c856409 initial checkin
james
parents:
diff changeset
   764
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   765
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   766
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   767
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   768
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   769
        self assert:(package1 definesSelector:#'testBasicMethodCreation' forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   770
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   771
a6392c856409 initial checkin
james
parents:
diff changeset
   772
        "test that the METHOD is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   773
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   774
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   775
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   776
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   777
a6392c856409 initial checkin
james
parents:
diff changeset
   778
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   779
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   780
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   781
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   782
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   783
a6392c856409 initial checkin
james
parents:
diff changeset
   784
a6392c856409 initial checkin
james
parents:
diff changeset
   785
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   786
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   787
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   788
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   789
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   790
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   791
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   792
!
a6392c856409 initial checkin
james
parents:
diff changeset
   793
a6392c856409 initial checkin
james
parents:
diff changeset
   794
testClassRemove4
a6392c856409 initial checkin
james
parents:
diff changeset
   795
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   796
    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
   797
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   798
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   799
     | packagedClass package1 package2 packagedMethod1 packagedMethod2 method1 method2 |
a6392c856409 initial checkin
james
parents:
diff changeset
   800
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   801
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   802
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   803
a6392c856409 initial checkin
james
parents:
diff changeset
   804
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   805
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   806
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   807
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   808
        method2 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation2.
a6392c856409 initial checkin
james
parents:
diff changeset
   809
a6392c856409 initial checkin
james
parents:
diff changeset
   810
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   811
        "This blocks method2 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   812
        packageManager addMethod:method2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   813
        "method2 has been overridden in package1 by package2!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   814
a6392c856409 initial checkin
james
parents:
diff changeset
   815
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   816
        packagedClass := (package1 packagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   817
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   818
a6392c856409 initial checkin
james
parents:
diff changeset
   819
        "Method1 in package1 "
a6392c856409 initial checkin
james
parents:
diff changeset
   820
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   821
        self assert:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   822
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   823
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   824
a6392c856409 initial checkin
james
parents:
diff changeset
   825
        "Method2 in package1 is overridden but still own's a copy which it is not dependant on"
a6392c856409 initial checkin
james
parents:
diff changeset
   826
        self assert:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   827
        self shouldnt:(package1 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   828
        packagedMethod2 := (package1 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   829
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   830
a6392c856409 initial checkin
james
parents:
diff changeset
   831
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   832
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   833
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   834
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   835
        self assert:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   836
a6392c856409 initial checkin
james
parents:
diff changeset
   837
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   838
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   839
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   840
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   841
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   842
        packagedClass := (package1 packagedClassNamed:#QWERTZ2).  
a6392c856409 initial checkin
james
parents:
diff changeset
   843
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   844
a6392c856409 initial checkin
james
parents:
diff changeset
   845
        "test that the METHOD1 is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   846
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   847
        self shouldnt:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   848
        packagedMethod1 := (package1 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   849
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   850
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   851
a6392c856409 initial checkin
james
parents:
diff changeset
   852
        "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
   853
        self assert:(package1 definesSelector:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   854
        self shouldnt:(package1 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   855
        packagedMethod2 := (package1 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   856
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   857
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   858
a6392c856409 initial checkin
james
parents:
diff changeset
   859
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   860
        self assert:(package2 definesSelector:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   861
        self shouldnt:(package2 isDependentOnMethodNamed:method2 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   862
        packagedMethod2 := (package2 packagedMethodNamed:method2 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   863
        self assert:(packagedMethod2 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   864
        self shouldnt:(packagedMethod2 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   865
a6392c856409 initial checkin
james
parents:
diff changeset
   866
a6392c856409 initial checkin
james
parents:
diff changeset
   867
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   868
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   869
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   870
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   871
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   872
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   873
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   874
!
a6392c856409 initial checkin
james
parents:
diff changeset
   875
a6392c856409 initial checkin
james
parents:
diff changeset
   876
testClassRemove5
a6392c856409 initial checkin
james
parents:
diff changeset
   877
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   878
    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
   879
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   880
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   881
     | packagedClass package1 package2 method1 |
a6392c856409 initial checkin
james
parents:
diff changeset
   882
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   883
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   884
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   885
a6392c856409 initial checkin
james
parents:
diff changeset
   886
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   887
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   888
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   889
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   890
a6392c856409 initial checkin
james
parents:
diff changeset
   891
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   892
a6392c856409 initial checkin
james
parents:
diff changeset
   893
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   894
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   895
        self assert:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   896
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   897
a6392c856409 initial checkin
james
parents:
diff changeset
   898
        packageManager addClass:QWERTZ2 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   899
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   900
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   901
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   902
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   903
            self assert:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   904
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   905
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   906
a6392c856409 initial checkin
james
parents:
diff changeset
   907
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
a6392c856409 initial checkin
james
parents:
diff changeset
   908
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
a6392c856409 initial checkin
james
parents:
diff changeset
   909
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   910
        "package1 still has all the information it had before"
a6392c856409 initial checkin
james
parents:
diff changeset
   911
        packagedClass := (package1 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   912
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   913
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   914
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   915
            self shouldnt:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   916
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   917
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   918
a6392c856409 initial checkin
james
parents:
diff changeset
   919
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   920
        packagedClass := (package2 packagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   921
        self assert:packagedClass notNil.    
a6392c856409 initial checkin
james
parents:
diff changeset
   922
        self assert:(packagedClass packagedMethods size == 2).
a6392c856409 initial checkin
james
parents:
diff changeset
   923
        packagedClass packagedMethods do:[:aPackagedMethod |
a6392c856409 initial checkin
james
parents:
diff changeset
   924
            self shouldnt:(aPackagedMethod isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   925
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   926
        self shouldnt:(packagedClass isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   927
a6392c856409 initial checkin
james
parents:
diff changeset
   928
a6392c856409 initial checkin
james
parents:
diff changeset
   929
a6392c856409 initial checkin
james
parents:
diff changeset
   930
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   931
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   932
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   933
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   934
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   935
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   936
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   937
!
a6392c856409 initial checkin
james
parents:
diff changeset
   938
a6392c856409 initial checkin
james
parents:
diff changeset
   939
testMethodRemove
a6392c856409 initial checkin
james
parents:
diff changeset
   940
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   941
    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
   942
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   943
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
   944
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   945
     | package1 package2 packagedMethod1 method1  |
a6392c856409 initial checkin
james
parents:
diff changeset
   946
    [
a6392c856409 initial checkin
james
parents:
diff changeset
   947
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   948
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
   949
a6392c856409 initial checkin
james
parents:
diff changeset
   950
        self createClassNamed:#QWERTZ2.
a6392c856409 initial checkin
james
parents:
diff changeset
   951
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   952
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   953
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
   954
a6392c856409 initial checkin
james
parents:
diff changeset
   955
        packageManager moveClass:QWERTZ2 toPackage:package1.
a6392c856409 initial checkin
james
parents:
diff changeset
   956
        "This blocks method1 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
   957
        packageManager moveMethod:method1 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
   958
a6392c856409 initial checkin
james
parents:
diff changeset
   959
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   960
        "package1 stores method2 as blocked"
a6392c856409 initial checkin
james
parents:
diff changeset
   961
        self shouldnt:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
   962
a6392c856409 initial checkin
james
parents:
diff changeset
   963
a6392c856409 initial checkin
james
parents:
diff changeset
   964
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   965
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   966
        self assert:(package2 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   967
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   968
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   969
a6392c856409 initial checkin
james
parents:
diff changeset
   970
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[        
a6392c856409 initial checkin
james
parents:
diff changeset
   971
            QWERTZ2 removeSelector:method1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
   972
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
   973
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   974
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   975
        self shouldnt:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   976
a6392c856409 initial checkin
james
parents:
diff changeset
   977
        "test that the METHOD is still blocked in package1!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   978
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   979
a6392c856409 initial checkin
james
parents:
diff changeset
   980
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
   981
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   982
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
   983
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
   984
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
   985
a6392c856409 initial checkin
james
parents:
diff changeset
   986
a6392c856409 initial checkin
james
parents:
diff changeset
   987
    ] ensure:[
a6392c856409 initial checkin
james
parents:
diff changeset
   988
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
   989
        packageManager unloadPackageNamed:#'package2'.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   990
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[ 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   991
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
   992
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
   993
    ]
a6392c856409 initial checkin
james
parents:
diff changeset
   994
!
a6392c856409 initial checkin
james
parents:
diff changeset
   995
a6392c856409 initial checkin
james
parents:
diff changeset
   996
testMethodRemove2
a6392c856409 initial checkin
james
parents:
diff changeset
   997
    "Changes caught my the manager should not affect the packages state.
a6392c856409 initial checkin
james
parents:
diff changeset
   998
    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
   999
    entire definition INCLUDING the methods it requires!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1000
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
a6392c856409 initial checkin
james
parents:
diff changeset
  1001
    "WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DONT correct during the debugger otherwise changes made could be removed!!!!!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1002
     | package1 package2 packagedMethod1 method1  |
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1003
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1004
    [
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1005
        "prerequisites"
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1006
        self assert:(Smalltalk classNamed:#QWERTZ2) isNil.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1007
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1008
        package1 := packageManager newPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1009
        package2 := packageManager newPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1010
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1011
        self createClassNamed:#QWERTZ2.   
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1012
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1013
        self createMethodFor:QWERTZ2 source:'testBasicMethodCreation2 1 + 1'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1014
        method1 := QWERTZ2 compiledMethodAt:#testBasicMethodCreation.
a6392c856409 initial checkin
james
parents:
diff changeset
  1015
a6392c856409 initial checkin
james
parents:
diff changeset
  1016
        packageManager moveClass:QWERTZ2 toPackage:package1.
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1017
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1018
        self assert:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1019
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1020
        "This blocks method1 from package1"
a6392c856409 initial checkin
james
parents:
diff changeset
  1021
        packageManager addMethod:method1 toPackage:package2.
a6392c856409 initial checkin
james
parents:
diff changeset
  1022
a6392c856409 initial checkin
james
parents:
diff changeset
  1023
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1024
        "package1 stores method2 as overridden"
a6392c856409 initial checkin
james
parents:
diff changeset
  1025
        self assert:(package1 definesSelector:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1026
        self shouldnt:(package1 isDependentOnMethodNamed:method1 name forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1027
a6392c856409 initial checkin
james
parents:
diff changeset
  1028
a6392c856409 initial checkin
james
parents:
diff changeset
  1029
        "Package2 should NOT define the class QWERTZ2 but should define method2 which should also be in Smalltalk!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1030
        self shouldnt:(package2 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1031
        self assert:(package2 definesSelector:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1032
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1033
        self assert:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
  1034
a6392c856409 initial checkin
james
parents:
diff changeset
  1035
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[        
a6392c856409 initial checkin
james
parents:
diff changeset
  1036
            QWERTZ2 removeSelector:method1 name.
a6392c856409 initial checkin
james
parents:
diff changeset
  1037
        ].
a6392c856409 initial checkin
james
parents:
diff changeset
  1038
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1039
        self assert:(package1 includesPackagedClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1040
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1041
        self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1042
a6392c856409 initial checkin
james
parents:
diff changeset
  1043
        "test that the METHOD is still defined but overridden in package1!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1044
a6392c856409 initial checkin
james
parents:
diff changeset
  1045
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1046
        self shouldnt:(package2 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2). 
a6392c856409 initial checkin
james
parents:
diff changeset
  1047
a6392c856409 initial checkin
james
parents:
diff changeset
  1048
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
a6392c856409 initial checkin
james
parents:
diff changeset
  1049
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1050
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:#QWERTZ2).
a6392c856409 initial checkin
james
parents:
diff changeset
  1051
        self assert:(packagedMethod1 notNil).
a6392c856409 initial checkin
james
parents:
diff changeset
  1052
        self shouldnt:(packagedMethod1 isInSmalltalk).
a6392c856409 initial checkin
james
parents:
diff changeset
  1053
a6392c856409 initial checkin
james
parents:
diff changeset
  1054
a6392c856409 initial checkin
james
parents:
diff changeset
  1055
    ] ensure:[
1276
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1056
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1057
                (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
e7fe802b0f1f *** empty log message ***
james
parents: 1273
diff changeset
  1058
        ].
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1059
        packageManager unloadPackageNamed:#'package1'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1060
        packageManager unloadPackageNamed:#'package2'.
a6392c856409 initial checkin
james
parents:
diff changeset
  1061
    ]
1277
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1062
!
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1063
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1064
testMethodRemoveClassSide
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1065
    "Changes caught my the manager should not affect the packages state.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1066
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1067
    entire definition INCLUDING the methods it requires!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1068
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1069
     | package1 package2 packagedMethod1 method1  theClassName  workingPackage |
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1070
    [
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1071
        package1 := packageManager newPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1072
        package2 := packageManager newPackageNamed:#'package2'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1073
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1074
        self createClassNamed:#QWERTZ2.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1075
        workingPackage := packageManager packageNamed:QWERTZ2 package.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1076
        self createMethodFor:QWERTZ2 class source:'testBasicMethodCreation 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1077
        self createMethodFor:QWERTZ2 class source:'testBasicMethodCreation2 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1078
        method1 := QWERTZ2 class compiledMethodAt:#testBasicMethodCreation.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1079
        theClassName := (QWERTZ2 class name asSymbol).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1080
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1081
        packageManager moveClass:QWERTZ2 toPackage:package1.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1082
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1083
        self assert:(package1 includesPackagedClassNamed:theClassName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1084
        self assert:(package1 definesSelector:method1 name forClassNamed:theClassName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1085
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1086
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1087
        "This blocks method1 from package1"       
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1088
        packageManager moveMethod:method1 toPackage:package2.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1089
        self assert:(package1 includesPackagedClassNamed:theClassName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1090
        "package1 stores method2 as blocked"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1091
        self shouldnt:(package1 definesSelector:method1 name forClassNamed:theClassName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1092
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1093
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1094
        "Package2 should NOT define the class QWERTZ2 class but should define method2 which should also be in Smalltalk!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1095
        self shouldnt:(package2 includesPackagedClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1096
        self assert:(package2 definesSelector:method1 name forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1097
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1098
        self assert:(packagedMethod1 isInSmalltalk).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1099
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1100
        (Smalltalk classNamed:theClassName) ifNotNil:[        
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1101
           (Smalltalk classNamed:theClassName) removeSelector:method1 name.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1102
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1103
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1104
        self assert:(package1 includesPackagedClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1105
        self shouldnt:(package1 definesSelector:#testBasicMethodCreation forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1106
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1107
        "test that the METHOD is still blocked in package1!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1108
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1109
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1110
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1111
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1112
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:theClassName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1113
        self assert:(packagedMethod1 notNil).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1114
        self shouldnt:(packagedMethod1 isInSmalltalk).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1115
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1116
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1117
    ] ensure:[
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1118
        packageManager unloadPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1119
        packageManager unloadPackageNamed:#'package2'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1120
        (Smalltalk classNamed:theClassName) ifNotNil:[ 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1121
            (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1122
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1123
    ]
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1124
!
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1125
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1126
testMethodRemoveClassSide2
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1127
    "Changes caught my the manager should not affect the packages state.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1128
    So a class removal should remove the class in Smalltalk yet the package should still keep hold of the
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1129
    entire definition INCLUDING the methods it requires!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1130
    "This one tests if the methods are still kept within the pacakge as packagedMethods"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1131
     | package1 package2 packagedMethod1 method1  theClassSideName |
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1132
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1133
    [
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1134
        "prerequisites"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1135
        self assert:(Smalltalk classNamed:#QWERTZ2) isNil.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1136
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1137
        package1 := packageManager newPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1138
        package2 := packageManager newPackageNamed:#'package2'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1139
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1140
        self createClassNamed:#QWERTZ2.   
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1141
        theClassSideName := QWERTZ2 class name asSymbol.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1142
        self createMethodFor:QWERTZ2 class source:'testBasicMethodCreation 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1143
        self createMethodFor:QWERTZ2 class source:'testBasicMethodCreation2 1 + 1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1144
        method1 := QWERTZ2 class compiledMethodAt:#testBasicMethodCreation.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1145
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1146
        packageManager moveClass:QWERTZ2 toPackage:package1.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1147
        self assert:(package1 definesSelector:method1 name forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1148
        self assert:(package1 isDependentOnMethodNamed:method1 name forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1149
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1150
        "This blocks method1 from package1"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1151
        packageManager addMethod:method1 toPackage:package2.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1152
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1153
        self assert:(package1 includesPackagedClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1154
        "package1 stores method2 as overridden"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1155
        self assert:(package1 definesSelector:method1 name forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1156
        self shouldnt:(package1 isDependentOnMethodNamed:method1 name forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1157
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1158
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1159
        "Package2 should NOT define the class but should define method2 which should also be in Smalltalk!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1160
        self shouldnt:(package2 includesPackagedClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1161
        self assert:(package2 definesSelector:method1 name forClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1162
        packagedMethod1 := (package2 packagedMethodNamed:method1 name forClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1163
        self assert:(packagedMethod1 isInSmalltalk).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1164
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1165
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[        
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1166
            QWERTZ2 class removeSelector:method1 name. 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1167
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1168
        "test that the CLASS is removed from Smalltalk BUT the package1 still retains it!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1169
        self assert:(package1 includesPackagedClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1170
        self assert:(package1 definesSelector:#testBasicMethodCreation forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1171
        self shouldnt:(package1 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1172
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1173
        "test that the METHOD is still defined but overridden in package1!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1174
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1175
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1176
        self shouldnt:(package2 isDependentOnMethodNamed:#testBasicMethodCreation forClassNamed:theClassSideName). 
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1177
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1178
        "test that the METHOD is removed from Smalltalk BUT the package2 still retains it!!"
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1179
        self assert:(package2 definesSelector:#testBasicMethodCreation forClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1180
        packagedMethod1 := (package2 packagedMethodNamed:#testBasicMethodCreation forClassNamed:theClassSideName).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1181
        self assert:(packagedMethod1 notNil).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1182
        self shouldnt:(packagedMethod1 isInSmalltalk).
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1183
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1184
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1185
    ] ensure:[
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1186
        (Smalltalk classNamed:#QWERTZ2) ifNotNil:[
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1187
                (Smalltalk classNamed:#QWERTZ2) removeFromSystem.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1188
        ].
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1189
        packageManager unloadPackageNamed:#'package1'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1190
        packageManager unloadPackageNamed:#'package2'.
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1191
    ]
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1192
! !
a6392c856409 initial checkin
james
parents:
diff changeset
  1193
a6392c856409 initial checkin
james
parents:
diff changeset
  1194
!PackageSmalltalkManipulationTestCases class methodsFor:'documentation'!
a6392c856409 initial checkin
james
parents:
diff changeset
  1195
a6392c856409 initial checkin
james
parents:
diff changeset
  1196
version
1277
1d8752c224d1 *** empty log message ***
james
parents: 1276
diff changeset
  1197
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageSmalltalkManipulationTestCases.st,v 1.4 2003-05-13 09:43:44 james Exp $'
1266
a6392c856409 initial checkin
james
parents:
diff changeset
  1198
! !