Levente Uzonyi uploaded a new version of KernelTests to project The Trunk: http://source.squeak.org/trunk/KernelTests-ul.332.mcz
==================== Summary ====================
Name: KernelTests-ul.332 Author: ul Time: 5 February 2018, 8:42:17.266896 pm UUID: 93605545-3a6c-4059-9763-f8d733f1c218 Ancestors: KernelTests-tonyg.331
- added a test for object pinning - use the #excessSignals accessor in SemaphoreTest
=============== Diff against KernelTests-tonyg.331 ===============
Item was added: + ----- Method: ObjectTest>>testPinning (in category 'tests') ----- + testPinning + "Test pinning state changes for two objects. Iterate over all possible state transitions." + + | objects | + objects := { Object new. Object new }. + #((false false) (false true) (true false) (true true)) + combinations: 2 + atATimeDo: [ :transition | + | fromState toState | + fromState := transition first. + toState := transition second. + fromState with: objects do: [ :pinned :object | + pinned + ifTrue: [ object pin ] + ifFalse: [ object unpin ]. + self assert: pinned equals: object isPinned ]. + objects withIndexDo: [ :object :index | + | from to | + from := fromState at: index. + to := toState at: index. + self assert: from equals: (to + ifTrue: [ object pin ] + ifFalse: [ object unpin ]). + self assert: to equals: object isPinned ] ]!
Item was changed: ----- Method: SemaphoreTest>>testSemaAfterCriticalWait (in category 'testing') ----- testSemaAfterCriticalWait "self run: #testSemaAfterCriticalWait" "This tests whether a semaphore that has just left the wait in Semaphore>>critical: leaves it with signaling the associated semaphore." | s p | s := Semaphore new. p := [s critical:[]] forkAt: Processor activePriority-1. "wait until p entered the critical section" [p suspendingList == s] whileFalse:[(Delay forMilliseconds: 10) wait]. "Now that p entered it, signal the semaphore. p now 'owns' the semaphore but since we are running at higher priority than p it will not get to do anything." s signal. p terminate. + self assert: 1 equals: s excessSignals! - self assert: ((s instVarNamed: #excessSignals) = 1)!
Item was changed: ----- Method: SemaphoreTest>>testSemaInCriticalWait (in category 'testing') ----- testSemaInCriticalWait "self run: #testSemaInCriticalWait" "This tests whether a semaphore that has entered the wait in Semaphore>>critical: leaves it without signaling the associated semaphore." | s p | s := Semaphore new. p := [s critical:[]] fork. Processor yield. self assert:(p suspendingList == s). p terminate. + self assert: 0 equals: s excessSignals! - self assert:((s instVarNamed: #excessSignals) = 0)!
packages@lists.squeakfoundation.org