TestAsserter.st
author vrany
Tue, 02 Aug 2011 18:57:10 +0200
changeset 295 f41960a0ee97
parent 291 ca207bd1546d
child 317 81d237f7ac0c
permissions -rw-r--r--
added: #asTestCase
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/sunit' }"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#TestAsserter
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
     4
	instanceVariableNames:'startTime endTime backtrace exceptionInfoString'
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'SUnit-Base'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
TestAsserter comment:''
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
!TestAsserter class methodsFor:'asserting'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
assert: aBoolean description: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	"Minimal clone of the instance-side assert protocol so that class-side methods can use it."
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	aBoolean ifFalse:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
		[self logFailure: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		TestResult failure sunitSignalWith: aString].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!TestAsserter class methodsFor:'logging'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
failureLog
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	^SUnitNameResolver defaultLogDevice
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
isLogging
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	"By default, we're not logging failures. Override in subclasses as desired."
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	^false
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
logFailure: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	self isLogging ifTrue:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
		[self failureLog cr; nextPutAll: aString; flush].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
223
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    41
!TestAsserter class methodsFor:'queries'!
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    42
253
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    43
coveredClassNames
223
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    44
    "should be redefined to return a collection of classes which are tested by
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    45
     this suite/case. These classes can be instrumented for coverage analysis,
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    46
     before running the suite"
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    47
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    48
    ^ #()
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    49
253
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    50
    "Created: / 06-07-2011 / 21:27:03 / cg"
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    51
!
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    52
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    53
coveredClasses
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    54
    "return a collection of classes which are tested by this suite/case. 
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    55
     These classes can be instrumented for coverage analysis,
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    56
     before running the suite"
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    57
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    58
    ^ self coveredClassNames collect:[:each | Smalltalk classNamed:each]
65ab1136093d added: #coveredClassNames
Claus Gittinger <cg@exept.de>
parents: 223
diff changeset
    59
223
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    60
    "Created: / 04-07-2011 / 18:16:08 / cg"
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    61
! !
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    62
266
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    63
!TestAsserter methodsFor:'accessing'!
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    64
287
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    65
endTime
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    66
    "the end time as timestamp; nil if not yet executed or not yet finished"
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    67
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    68
    ^ endTime
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    69
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    70
    "Created: / 02-08-2011 / 17:43:11 / cg"
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    71
!
857eaf833661 class definition
Claus Gittinger <cg@exept.de>
parents: 286
diff changeset
    72
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    73
exceptionInfoString
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    74
    "the stack backtrace as a string (but only if executed and not passed).
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    75
     (I guess, there is no standard format for context information among
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    76
      the smalltalks, so a string containing the backtrace is the best we can
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    77
      do to keep things portable AND be able to present the backtrace in a hudson page)"
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
    78
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    79
    ^ exceptionInfoString
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
    80
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    81
    "Modified: / 01-08-2011 / 16:52:51 / cg"
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
    82
    "Created: / 02-08-2011 / 18:13:16 / cg"
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
    83
!
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
    84
266
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    85
executionTime
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    86
    "the execution time in millis; nil if not yet executed"
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    87
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    88
    startTime isNil ifTrue:[
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    89
        "/ not yet executed
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    90
        ^ nil
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    91
    ].
286
01b3ae052203 changed: #executionTime
Claus Gittinger <cg@exept.de>
parents: 284
diff changeset
    92
    ^ (endTime deltaFrom:startTime) getMilliseconds
266
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    93
286
01b3ae052203 changed: #executionTime
Claus Gittinger <cg@exept.de>
parents: 284
diff changeset
    94
    "Modified: / 01-08-2011 / 16:52:51 / cg"
266
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    95
!
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    96
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    97
startTime
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    98
    "the start time as timestamp; nil if not yet executed"
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    99
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   100
    ^ startTime
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   101
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   102
    "Created: / 30-07-2011 / 10:06:05 / cg"
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   103
! !
ca61f2c647f5 remember execution time (needed to generate prober reports)
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   104
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
!TestAsserter methodsFor:'asserting'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
assert: aBoolean
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    aBoolean ifFalse:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	[self logFailure: 'Assertion failed'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	TestResult failure sunitSignalWith: 'Assertion failed'].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    "Modified: / 05-12-2009 / 18:14:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
assert:aBoolean description:aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    ^self assert:aBoolean description:aString resumable: false.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "Modified: / 06-08-2006 / 22:56:27 / cg"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "Modified: / 11-09-2010 / 15:34:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
assert: aBoolean description: aString resumable: resumableBoolean
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    | exception |
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    aBoolean ifFalse:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	[self logFailure: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
		exception := resumableBoolean
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
			ifTrue: [TestResult resumableFailure]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
			ifFalse: [TestResult failure].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
		exception sunitSignalWith: aString].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    "Modified: / 05-12-2009 / 18:15:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
deny: aBoolean
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    self assert: aBoolean not.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    "Modified: / 05-12-2009 / 18:16:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
deny: aBoolean description: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    self assert: aBoolean not description: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    "Modified: / 05-12-2009 / 18:17:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
deny: aBoolean description: aString resumable: resumableBoolean
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    self assert: aBoolean not description: aString resumable: resumableBoolean.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    "Modified: / 05-12-2009 / 18:17:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
should: aBlock raise: anExceptionalEvent
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    self assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent).
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    "Modified: / 05-12-2009 / 18:18:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
should: aBlock raise: anExceptionalEvent description: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    self
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent)
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
	description: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    "Modified: / 05-12-2009 / 18:18:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
should: aBlock raise: anExceptionalEvent suchThat: condBlock
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    self assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent suchThat: condBlock).
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    "Created: / 05-05-2011 / 20:14:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
should: aBlock raise: anExceptionalEvent suchThat: condBlock description: description
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    self assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent suchThat: condBlock)
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
	 description: description
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    "Created: / 05-05-2011 / 20:14:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
shouldnt: aBlock raise: anExceptionalEvent
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    self
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
	assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent) not.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    "Modified: / 05-12-2009 / 18:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
shouldnt: aBlock raise: anExceptionalEvent description: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    self
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
	assert: (self executeShould: aBlock inScopeOf: anExceptionalEvent) not
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
	description: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    "Modified: / 05-12-2009 / 18:18:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
!TestAsserter methodsFor:'convenience'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
assert: anObject equals: anotherObject
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
	self assert: anObject = anotherObject
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
		description: anObject printString, ' is not equal to ', anotherObject printString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
!TestAsserter methodsFor:'logging'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   236
exceptionInfoString:exceptionInfoStringArg
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   237
    "remember the exception info, a string containing the stack backtrace
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   238
     (I guess, there is no standard format for context information among
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   239
      the smalltalks, so a string containing the backtrace is the best we can
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   240
      do to keep things portable AND be able to present the backtrace in a hudson page. 
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   241
      It is the caller's responsibility to generate something human readable)"
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
   242
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   243
    exceptionInfoString := exceptionInfoStringArg
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
   244
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   245
    "Created: / 02-08-2011 / 17:57:16 / cg"
289
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
   246
!
8ea3845bc179 class definition
Claus Gittinger <cg@exept.de>
parents: 287
diff changeset
   247
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
logFailure: aString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
	self class logFailure: aString.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
!TestAsserter methodsFor:'private'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
executeShould: execBlock inScopeOf: exceptionalEvent
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    <resource: #skipInDebuggersWalkBack>
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    ^ self
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
	executeShould: execBlock
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
	inScopeOf: exceptionalEvent
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
	suchThat: [:ex | true ]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    "Modified: / 05-05-2011 / 20:23:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
executeShould: execBlock inScopeOf: exceptionalEvent suchThat: conditionBlock
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
	^[execBlock value.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
	false]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
		sunitOn: exceptionalEvent
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
		do:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
		    [:ex |
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
		    ex sunitExitWith:(conditionBlock value: ex)]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    "Created: / 05-05-2011 / 20:08:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
!TestAsserter class methodsFor:'documentation'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
286
01b3ae052203 changed: #executionTime
Claus Gittinger <cg@exept.de>
parents: 284
diff changeset
   279
version
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   280
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.9 2011-08-02 16:14:37 cg Exp $'
286
01b3ae052203 changed: #executionTime
Claus Gittinger <cg@exept.de>
parents: 284
diff changeset
   281
!
01b3ae052203 changed: #executionTime
Claus Gittinger <cg@exept.de>
parents: 284
diff changeset
   282
223
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   283
version_CVS
291
ca207bd1546d class definition
Claus Gittinger <cg@exept.de>
parents: 289
diff changeset
   284
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.9 2011-08-02 16:14:37 cg Exp $'
223
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   285
!
354de0061492 initial checkin
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   286
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
version_SVN
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    ^ '§Id: TestAsserter.st 217 2011-05-05 19:33:11Z vranyj1 §'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
! !