RegressionTests__ClassAndMethodCompilingTestCase.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 2159 ac22dacb01ab
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
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
TestCase subclass:#ClassAndMethodCompilingTestCase
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'classes'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'tests-Regression-Abstract'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!ClassAndMethodCompilingTestCase class methodsFor:'documentation'!
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
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
    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
    17
    Implementation of #setUp & #tearDown removes any class or method created during
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    the test.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    [author:]
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    21
	Jan Vrany <jan.vrany@fit.cvut.cz>
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    [instance variables:]
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
    [class 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
    [see also:]
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
"
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
!ClassAndMethodCompilingTestCase class methodsFor:'queries'!
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
isAbstract
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
    "Return if this class is an abstract class.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
     True is returned here for myself only; false for subclasses.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
     Abstract subclasses must redefine again."
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    ^ self == RegressionTests::ClassAndMethodCompilingTestCase.
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
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
!ClassAndMethodCompilingTestCase methodsFor:'change & update'!
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
update: aspect with: param from: sender
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    aspect == #newClass ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    46
	"remember the classes to be deleted on #tearDown"
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    47
	classes add: param.
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    ].
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "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
    51
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
2159
ac22dacb01ab #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    53
!ClassAndMethodCompilingTestCase methodsFor:'initialize / release'!
1127
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
setUp
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    Smalltalk addDependent: self.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    classes := Set new.
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    "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
    60
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
tearDown
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    63
    | removeBlock|
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    Smalltalk removeDependent: self.
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    66
    removeBlock := [:cls|
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    67
	| name realcls |
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    69
	name := cls name.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    70
	(name startsWith: 'Mock') ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    71
	    "/ Just to make sure no system class is removed, all test classes should
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    72
	    "/ begin with 'Mock'.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    73
	    self breakPoint:#jv.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    74
	    self breakPoint:#cg.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    75
	].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    76
	realcls := Smalltalk at: name.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    77
	realcls notNil ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    78
	    Smalltalk removeClass: realcls.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1286
diff changeset
    79
	].
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
1286
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    81
    classes select:[:each| each isPrivate] thenDo:removeBlock.
caf550ad0254 class: RegressionTests::ClassAndMethodCompilingTestCase
Stefan Vogel <sv@exept.de>
parents: 1283
diff changeset
    82
    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
    83
    classes select:[:each| each isNameSpace] thenDo:removeBlock.
1127
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "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
    86
    "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
    87
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
!ClassAndMethodCompilingTestCase class methodsFor:'documentation'!
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
version
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^ '$Header$'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
version_CVS
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    ^ '$Header$'
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
! !
3c7db84897fb initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98