RegressionTests__Win32OperatingSystemTest.st
author Stefan Vogel <sv@exept.de>
Mon, 07 May 2012 16:13:34 +0200
changeset 675 f98a0bb2f639
parent 355 d86e28afd549
child 1161 3d9b4eaddcf3
permissions -rw-r--r--
changed: #testMutex
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'exept:regression' }"
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#Win32OperatingSystemTest
675
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
     6
	instanceVariableNames:''
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
     7
	classVariableNames:''
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
     8
	poolDictionaries:''
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
     9
	category:'tests-Regression'
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!Win32OperatingSystemTest methodsFor:'release'!
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
tearDown
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
! !
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
!Win32OperatingSystemTest methodsFor:'tests'!
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
testMutex
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    |handle alreadyExists lastErrorCode handleAndLastErrorCode|
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
675
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
    23
    OperatingSystem isMSWINDOWSlike ifFalse:[
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
    24
        ^ self.
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
    25
    ].
f98a0bb2f639 changed: #testMutex
Stefan Vogel <sv@exept.de>
parents: 355
diff changeset
    26
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
    handleAndLastErrorCode := Win32OperatingSystem createMutexNamed: '8906f5e0-54ed-11dd-9da4-001558137da0'.
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    handle := handleAndLastErrorCode first.
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
    handle isNil ifTrue:[^ self].
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    lastErrorCode := handleAndLastErrorCode second.
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
    self assert: lastErrorCode == 0.
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    alreadyExists := (lastErrorCode == 5 "ERROR_ACCESS_DENIED" or:[ lastErrorCode == 183 "ERROR_ALREADY_EXISTS"]).
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
    alreadyExists ifTrue:[
355
d86e28afd549 changed #testMutex
Claus Gittinger <cg@exept.de>
parents: 354
diff changeset
    34
        Transcript showCR: 'Mutex already exists!!'.
d86e28afd549 changed #testMutex
Claus Gittinger <cg@exept.de>
parents: 354
diff changeset
    35
        ^ self.
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    ].
354
Claus Gittinger <cg@exept.de>
parents: 344
diff changeset
    37
    Transcript showCR: 'Mutex created!!'.
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    Win32OperatingSystem waitForSingleObject: handle.
355
d86e28afd549 changed #testMutex
Claus Gittinger <cg@exept.de>
parents: 354
diff changeset
    39
    Delay waitForSeconds:0.5. "/ self halt.
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    Win32OperatingSystem releaseMutex: handle.
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    Win32OperatingSystem primCloseHandle: handle.
354
Claus Gittinger <cg@exept.de>
parents: 344
diff changeset
    42
    Transcript showCR: 'Mutex closed!!'.
344
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    "
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
     self new testMutex
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    "
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!Win32OperatingSystemTest class methodsFor:'documentation'!
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
version
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    ^ '$Header$'
21c39da58029 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
! !