76 lines
1.4 KiB
Smalltalk
76 lines
1.4 KiB
Smalltalk
//
|
|
// TEST CASES for basic methods
|
|
//
|
|
|
|
#include 'Moo.moo'.
|
|
|
|
////////////////////////////////////////////////////////////////#
|
|
// MAIN
|
|
////////////////////////////////////////////////////////////////#
|
|
|
|
class MyObject(Object)
|
|
{
|
|
var(#class) t1 := 20.
|
|
|
|
method(#class) test_terminate
|
|
{
|
|
| a s |
|
|
s := Semaphore new.
|
|
a := [ self.t1 := self.t1 * 9.
|
|
s signal.
|
|
Processor activeProcess terminate.
|
|
self.t1 := self.t1 + 20 ] fork.
|
|
s wait.
|
|
^self.t1
|
|
}
|
|
|
|
method(#class) test_sg
|
|
{
|
|
| sg s1 s2 s3 |
|
|
|
|
s1 := Semaphore new.
|
|
s2 := Semaphore new.
|
|
s3 := Semaphore new.
|
|
|
|
sg := SemaphoreGroup new.
|
|
|
|
sg addSemaphore: s1.
|
|
sg addSemaphore: s2.
|
|
sg addSemaphore: s3.
|
|
|
|
s1 signalOnInput: 0.
|
|
s2 signalOnInput: 0. // this should raise an exception as the same file descriptor is added to a different semaphore
|
|
s3 signalOnInput: 0.
|
|
|
|
[ sg wait. ] fork.
|
|
[ sg wait. ] fork.
|
|
[ sg wait. ] fork.
|
|
|
|
System sleepForSecs: 1.
|
|
sg wait.
|
|
sg removeSemaphore: s1.
|
|
"********** END OF TESTER *************" dump.
|
|
}
|
|
|
|
method(#class) main
|
|
{
|
|
| tc limit |
|
|
|
|
tc := ##(
|
|
// 0 - 4
|
|
[self test_terminate == 180],
|
|
[self test_sg == nil]
|
|
).
|
|
|
|
limit := tc size.
|
|
|
|
0 priorTo: limit by: 1 do: [ :idx |
|
|
| tb |
|
|
tb := tc at: idx.
|
|
System log(System.Log.INFO, idx asString, (if (tb value) { " PASS" } else { " FAIL" }), "\n").
|
|
].
|
|
|
|
"********** END OF MAIN PROGRAM *************" dump.
|
|
}
|
|
}
|