SimpleTestResourceTestCase.st
author Claus Gittinger <cg@exept.de>
Wed, 29 May 2019 01:12:49 +0200
changeset 747 1dcb53cf964d
parent 222 8e6f482297fa
child 611 1eecc860f4a5
child 664 e31b2e7b658d
permissions -rw-r--r--
#FEATURE by cg class: TestCase added: #invokeTestMethod changed: #performTest support timeout annotation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/sunit' }"
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
TestCase subclass:#SimpleTestResourceTestCase
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'resource'
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
	category:'SUnit-Tests'
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    11
!SimpleTestResourceTestCase class methodsFor:'accessing'!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
resources
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    14
	^Array with: SimpleTestResource
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
! !
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
!SimpleTestResourceTestCase methodsFor:'Not categorized'!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
testRan
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
	| case |
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
	case := self class selector: #setRun.
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
	case run.
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
	self assert: resource hasSetup.
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
	self assert: resource hasRun
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    26
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
testResourceInitRelease
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
	| result suite error failure |
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
	suite := TestSuite new.
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
	suite addTest: (error := self class selector: #error).
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
	suite addTest: (failure := self class selector: #fail).
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
	suite addTest: (self class selector: #dummy).
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
	result := suite run.
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
	self assert: resource hasSetup
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
! !
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    40
!SimpleTestResourceTestCase methodsFor:'private'!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    42
dummy
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    43
	self assert: resource hasSetup
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    44
		description: 'This test uses a resource but it was not set up'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    45
	self setRun.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    46
	self assert: resource hasRun
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    47
		description: 'This test uses a resource but we could not interact with it'.
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    50
error
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    51
	'foo' odd
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    52
!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    54
fail
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    55
	self assert: false
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    56
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    57
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    58
setRun
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    59
	resource setRun
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    60
! !
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    61
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    62
!SimpleTestResourceTestCase methodsFor:'running'!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    63
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    64
setUp
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    65
	"Ensure that we error, not just fail, if resource is nil so that #should:raise: checks cannot mistake such an error for what they are trapping."
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    66
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    67
	resource := SimpleTestResource rawCurrentForTest.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    68
	self deny: resource isNil
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    69
		description: 'SimpleTestResource has no current value in test'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    70
	self assert: resource class == SimpleTestResource
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    71
		description: 'SimpleTestResource current is not an instance of itself'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    72
	self assert: resource hasSetup
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    73
		description: 'This test uses a resource but it was not set up'.
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    76
testDebugTestWithResource
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    77
	"The debug will raise an error if the resource is not set up properly."
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    79
	self clearOuterResourceStateDuring:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    80
		[(self class selector: #setRun) debug].
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    83
testResourceCollection
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    84
	self assert: self class buildSuiteFromSelectors resources size = self resources size
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    85
		description: 'The suite should have the same number of resources as its test'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    86
	self class buildSuiteFromSelectors resources do:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    87
		[:each |
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    88
		self assert: (self resources includes: each)
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    89
			description: each name, ':  I have this resource but my suite does not'].
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    92
testRunSuiteWithResource
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    93
	| suite |
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    94
	suite := TestSuite new.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    95
	suite addTest: (SimpleTestResourceTestCase selector: #error).
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    96
	suite addTest: (SimpleTestResourceTestCase selector: #fail).
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    97
	suite addTest: (self class selector: #dummy).
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    98
	self clearOuterResourceStateDuring:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
    99
		[self assert: suite run printString = '3 run, 1 passed, 1 failed, 1 error'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   100
			description: 'A suite of tests needing SimpleTestResource did not run as expected'].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   101
!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   103
testRunTestWithResource
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   104
	self clearOuterResourceStateDuring:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   105
		[self assert: (self class selector: #dummy) run printString
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   106
					= '1 run, 1 passed, 0 failed, 0 errors'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   107
			description: 'A dummy test that needed a resource did not pass'].
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
! !
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   109
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   110
!SimpleTestResourceTestCase methodsFor:'utility'!
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   111
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   112
clearOuterResourceStateDuring: aBlock
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   113
	"This self-testing test must clear the outer state of its resources before starting and after finishing, so that it can construct test cases and suites of itself and test them."
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   115
	self assert: SimpleTestResource isAlreadyAvailable
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   116
		description: 'The resource was not set up for the test'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   117
	SimpleTestResource reset.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   118
	self deny: SimpleTestResource isAlreadyAvailable
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   119
		description: 'The resource was still set up before we began the run'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   120
	^aBlock sunitEnsure:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   121
		[self deny: SimpleTestResource isAlreadyAvailable
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   122
			description: 'The resource was still set up after we finished the run'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   123
		SimpleTestResource isAvailable.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   124
		self assert: SimpleTestResource isAlreadyAvailable
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   125
			description: 'The resource was not set up again after the test'].
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
! !
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
!SimpleTestResourceTestCase class methodsFor:'documentation'!
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
version
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   131
    ^ '$Header: /cvs/stx/stx/goodies/sunit/SimpleTestResourceTestCase.st,v 1.2 2011-06-29 19:15:49 cg Exp $'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   132
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   133
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   134
version_SVN
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 108
diff changeset
   135
    ^ '§Id: SimpleTestResourceTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
108
7509607479f5 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
! !