The Trunk: KernelTests-ul.332.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: KernelTests-ul.332.mcz

commits-2
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)!