RegressionTests__Win32OperatingSystemTest.st
author Claus Gittinger <cg@exept.de>
Thu, 17 Jul 2014 15:23:53 +0200
changeset 1161 3d9b4eaddcf3
parent 675 f98a0bb2f639
child 1352 e0d857144dbf
permissions -rw-r--r--
category changes
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:''
1161
3d9b4eaddcf3 category changes
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
     9
	category:'tests-Regression-RuntimeSystem'
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
! !
1161
3d9b4eaddcf3 category changes
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    54