RegressionTests__Win32OperatingSystemTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 28 Dec 2016 22:46:11 +0000
branchjv
changeset 1566 2ca58098256d
parent 1500 d406a10b2965
child 1974 f2eaf05205d6
permissions -rw-r--r--
Issue #109: Added tests for registry key creation / deletion See https://swing.fit.cvut.cz/projects/stx-jv/ticket/109

"{ Package: 'stx:goodies/regression' }"

"{ NameSpace: RegressionTests }"

TestCase subclass:#Win32OperatingSystemTest
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'tests-Regression-RuntimeSystem'
!


!Win32OperatingSystemTest methodsFor:'release'!

setUp
    self skipIf: OperatingSystem isMSWINDOWSlike not description: 'Windows specific tests'.
    super setUp

    "Created: / 28-12-2016 / 22:12:14 / jv"
! !

!Win32OperatingSystemTest methodsFor:'tests'!

testMutex
    |handle alreadyExists lastErrorCode handleAndLastErrorCode|

    handleAndLastErrorCode := Win32OperatingSystem createMutexNamed: '8906f5e0-54ed-11dd-9da4-001558137da0'.
    handle := handleAndLastErrorCode first.
    handle isNil ifTrue:[^ self].
    lastErrorCode := handleAndLastErrorCode second.
    self assert: lastErrorCode == 0.
    alreadyExists := (lastErrorCode == 5 "ERROR_ACCESS_DENIED" or:[ lastErrorCode == 183 "ERROR_ALREADY_EXISTS"]).
    alreadyExists ifTrue:[
        Transcript showCR: 'Mutex already exists!!'.
        ^ self.
    ].
    Transcript showCR: 'Mutex created!!'.
    Win32OperatingSystem waitForSingleObject: handle.
    Delay waitForSeconds:0.5. "/ self halt.
    Win32OperatingSystem releaseMutex: handle.
    Win32OperatingSystem primCloseHandle: handle.
    Transcript showCR: 'Mutex closed!!'.

    "
     self new testMutex
    "

    "Modified: / 28-12-2016 / 22:13:37 / jv"
!

testRegistry
    |k hasContentType|

    k := OperatingSystem registryEntry key:'HKEY_CLASSES_ROOT\MIME\Database\'.
    self assert:(k notNil).

    hasContentType := false.
    k subKeyNamesAndClassesDo:[:nm :clsNm |
        "/ Transcript showCR:nm.
        nm = 'Content Type' ifTrue:[hasContentType := true].
    ].
    self assert:hasContentType.

    "/ k subKeysDo:[:k | Transcript showCR:k].

    "
     self new testRegistry
    "

    "Modified: / 28-12-2016 / 22:13:43 / jv"
!

testRegistry02a
    | root key |

    root :=OperatingSystem registryEntry key:'HKEY_CURRENT_USER'.
    root deleteSubKeyNamed: testSelector.

    self assert:(root subKeyNamed: testSelector) isNil.
    self deny: (root deleteSubKeyNamed: testSelector).

    key := root createSubKeyNamed:testSelector.
    self assert: key notNil.
    self assert:(root subKeyNamed: testSelector) notNil.

    self assert: (root deleteSubKeyNamed:testSelector).
    self assert:(root subKeyNamed: testSelector) isNil.
    self deny: (root deleteSubKeyNamed: testSelector).

    "Created: / 28-12-2016 / 23:14:15 / jv"
    "Modified: / 05-01-2017 / 21:45:20 / jv"
! !

!Win32OperatingSystemTest class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_HG

    ^ '$Changeset: <not expanded> $'
! !