RegressionTests__ClassAndMethodCompilingTestCase.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 29 Jun 2016 21:40:53 +0100
branchjv
changeset 1499 26a16a04219b
parent 1286 caf550ad0254
child 1500 d406a10b2965
permissions -rw-r--r--
Package renamed from exept:regression to stx:goodies/regression. Hooray!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1283
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
     1
"{ Encoding: utf8 }"
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
     2
1499
26a16a04219b Package renamed from exept:regression to stx:goodies/regression. Hooray!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1286
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
TestCase subclass:#ClassAndMethodCompilingTestCase
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	instanceVariableNames:'classes'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	classVariableNames:''
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
	poolDictionaries:''
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
	category:'tests-Regression-Abstract'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
!ClassAndMethodCompilingTestCase class methodsFor:'documentation'!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
documentation
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    An abstract superclass for all tests that create classes and/or methods.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    Implementation of #setUp & #tearDown removes any class or method created during
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    the test.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    [author:]
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
        Jan Vrany <jan.vrany@fit.cvut.cz>
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    [instance variables:]
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
    [class variables:]
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    [see also:]
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
!ClassAndMethodCompilingTestCase class methodsFor:'queries'!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
isAbstract
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
    "Return if this class is an abstract class.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
     True is returned here for myself only; false for subclasses.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
     Abstract subclasses must redefine again."
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    ^ self == RegressionTests::ClassAndMethodCompilingTestCase.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!ClassAndMethodCompilingTestCase methodsFor:'change & update'!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
update: aspect with: param from: sender
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    aspect == #newClass ifTrue:[
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    48
        "remember the classes to be deleted on #tearDown"
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
        classes add: param.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    ].
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    "Created: / 20-11-2012 / 14:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
!ClassAndMethodCompilingTestCase methodsFor:'running'!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
setUp
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    Smalltalk addDependent: self.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    classes := Set new.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    "Created: / 20-11-2012 / 14:46:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
tearDown
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    65
    | removeBlock|
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    Smalltalk removeDependent: self.
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    68
    removeBlock := [:cls|
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
        | name realcls |
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
        name := cls name.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
        (name startsWith: 'Mock') ifFalse:[
1283
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
    73
            "/ Just to make sure no system class is removed, all test classes should 
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
            "/ begin with 'Mock'.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
            self breakPoint:#jv.  
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
            self breakPoint:#cg.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
        ].
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        realcls := Smalltalk at: name.
1283
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
    79
        realcls notNil ifTrue:[
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
    80
            Smalltalk removeClass: realcls.
bb15790e8cdc class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1127
diff changeset
    81
        ].
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    ].
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    83
    classes select:[:each| each isPrivate] thenDo:removeBlock.
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    84
    classes select:[:each| each isNameSpace not and:[each isPrivate not]] thenDo:removeBlock.
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    85
    classes select:[:each| each isNameSpace] thenDo:removeBlock.
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    "Created: / 20-11-2012 / 14:46:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    "Modified: / 13-05-2014 / 11:13:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
!ClassAndMethodCompilingTestCase class methodsFor:'documentation'!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
version
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    ^ '$Header$'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
version_CVS
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    ^ '$Header$'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100