removed the containing subdir
This commit is contained in:
240
kernel/test-010.moo
Normal file
240
kernel/test-010.moo
Normal file
@ -0,0 +1,240 @@
|
||||
|
||||
#include 'Moo.moo'.
|
||||
|
||||
////////////////////////////////////////////////////////////////#
|
||||
// MAIN
|
||||
////////////////////////////////////////////////////////////////#
|
||||
|
||||
// TODO: use #define to define a class or use #class to define a class.
|
||||
// use #extend to extend a class
|
||||
// using #class for both feels confusing.
|
||||
|
||||
extend Apex
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
extend SmallInteger
|
||||
{
|
||||
method getTrue: anInteger
|
||||
{
|
||||
^anInteger + 9999.
|
||||
}
|
||||
|
||||
method inc
|
||||
{
|
||||
^self + 1.
|
||||
}
|
||||
}
|
||||
|
||||
class TestObject(Object)
|
||||
{
|
||||
var(#class) Q, R.
|
||||
var(#classinst) a1, a2.
|
||||
|
||||
method test999
|
||||
{
|
||||
^self.Q
|
||||
}
|
||||
}
|
||||
|
||||
class B.TestObject(Object)
|
||||
{
|
||||
var(#class) Q, R.
|
||||
var(#classinst) a1, a2.
|
||||
|
||||
method test000
|
||||
{
|
||||
^self.Q
|
||||
}
|
||||
}
|
||||
|
||||
pooldic ABC
|
||||
{
|
||||
KKK := 20.
|
||||
}
|
||||
|
||||
|
||||
class MyObject(TestObject)
|
||||
{
|
||||
method(#class) main111
|
||||
{
|
||||
| s3 |
|
||||
s3 := Semaphore new.
|
||||
System signal: s3 afterSecs: 1 nanosecs: 50.
|
||||
s3 wait.
|
||||
'END OF MAIN' dump.
|
||||
}
|
||||
|
||||
|
||||
method(#class) main987
|
||||
{
|
||||
|t1 t2 s1 s2 s3|
|
||||
|
||||
'START OF MAIN' dump.
|
||||
|
||||
s1 := Semaphore new.
|
||||
s2 := Semaphore forMutualExclusion.
|
||||
|
||||
t1 := [
|
||||
//1000 timesRepeat: ['BLOCK #1' dump].
|
||||
s2 critical: [
|
||||
10000 timesRepeat: ['BLOCK #1' dump ].
|
||||
Exception signal: 'Raised Exception at process t1'.
|
||||
]
|
||||
] newProcess.
|
||||
t2 := [
|
||||
//1000 timesRepeat: ['BLOCK #2' dump].
|
||||
s2 critical: [
|
||||
10000 timesRepeat: ['BLOCK #2' dump. ]
|
||||
].
|
||||
|
||||
s1 signal.
|
||||
] newProcess.
|
||||
|
||||
t1 resume.
|
||||
t2 resume.
|
||||
|
||||
s1 wait.
|
||||
|
||||
ABC.KKK dump.
|
||||
'END OF MAIN' dump.
|
||||
|
||||
|
||||
"
|
||||
|
||||
|s1|
|
||||
s1 := Semaphore new.
|
||||
s1 signal.
|
||||
'XXXXXXXXXXXXXXXX' dump.
|
||||
s1 wait.
|
||||
"
|
||||
|
||||
}
|
||||
|
||||
method(#class) aaa_123
|
||||
{
|
||||
| v1 |
|
||||
v1 := [
|
||||
| k |
|
||||
k := 99.
|
||||
[
|
||||
[
|
||||
//[ Exception signal: 'simulated error' ] ensure: [('ensure 1 ' & (k asString)) dump ].
|
||||
[ ^ 20 ] ensure: [ ('ensure 1 ' & (k asString)) dump. ].
|
||||
] ensure: ['ensure 2' dump ].
|
||||
] ensure: ['ensure 3' dump ].
|
||||
] on: Exception do: [:ex |
|
||||
('EXCETION - ' & ex messageText) dump.
|
||||
// Exception signal: 'qqq'.
|
||||
].
|
||||
^v1
|
||||
}
|
||||
method(#class) main
|
||||
{
|
||||
| v1 |
|
||||
'START OF MAIN' dump.
|
||||
//[1 xxx] ifCurtailed: ['XXXXXXXX CURTAILED XXXXXXXXX' dump].
|
||||
//['ENSURE TEST' dump] ensure: ['XXXXXXXXX ENSURE XXXXXXXXXXXXXx' dump].
|
||||
|
||||
//v1 := [ ['kkk' dump.] ensure: ['XXXXXXXXX ENSURE XXXXXXXXXXXXXx' dump. 30] ] on: Exception do: [:ex | 'EXCEPTION OUTSIDE ENSURE...' dump. ].
|
||||
//v1 dump.
|
||||
|
||||
|
||||
//[ Exception signal: 'simulated error' ] on: Exception do: [:ex | 'CAUGHT...' dump. Exception signal: 'jjjjjjj' ].
|
||||
|
||||
//[
|
||||
// [ Exception signal: 'simulated error' ] ensure: ['ensure 1' dump ].
|
||||
//] on: Exception do: [:ex | ('EXCETION - ' & ex messageText) dump. Exception signal: 'qqq'. ].
|
||||
|
||||
//[1 xxx] ifCurtailed: ['XXXXXXXX CURTAILED XXXXXXXXX' dump. Exception signal: 'jjjj'].
|
||||
|
||||
/*
|
||||
v1 := [
|
||||
| k |
|
||||
k := 99.
|
||||
[
|
||||
[
|
||||
//[ Exception signal: 'simulated error' ] ensure: [('ensure 1 ' & (k asString)) dump ].
|
||||
[ ^20 ] ensure: [('ensure 1 ' & (k asString)) dump ].
|
||||
] ensure: ['ensure 2' dump ].
|
||||
] ensure: ['ensure 3' dump ].
|
||||
] on: Exception do: [:ex |
|
||||
('EXCETION - ' & ex messageText) dump.
|
||||
// Exception signal: 'qqq'.
|
||||
].
|
||||
*/
|
||||
|
||||
v1 := self aaa_123.
|
||||
'--------------------------------' dump.
|
||||
v1 dump.
|
||||
'--------------------------------' dump.
|
||||
'END OF MAIN' dump.
|
||||
}
|
||||
|
||||
method(#class) main22222
|
||||
{
|
||||
|t1 t2 s1 s2 s3|
|
||||
|
||||
'START OF MAIN' dump.
|
||||
|
||||
s1 := Semaphore new.
|
||||
s2 := Semaphore new.
|
||||
s3 := Semaphore new.
|
||||
|
||||
t1 := [
|
||||
10 timesRepeat: ['BLOCK #1' dump. System sleepForSecs: 1.].
|
||||
s1 signal
|
||||
] newProcess.
|
||||
t2 := [
|
||||
5 timesRepeat: ['BLOCK #2' dump. "System sleepForSecs: 1." ].
|
||||
'SIGNALLING S2...' dump. s2 signal.
|
||||
] newProcess.
|
||||
|
||||
t1 resume.
|
||||
t2 resume.
|
||||
|
||||
System signal: s3 after: 10.
|
||||
|
||||
'STARTED t1 and t2' dump.
|
||||
|
||||
s2 wait.
|
||||
's2 WAITED....' dump.
|
||||
s1 wait.
|
||||
's1 WAITED....' dump.
|
||||
|
||||
|
||||
'WAITING ON S3...' dump.
|
||||
//System unsignal: s3.
|
||||
s3 wait.
|
||||
|
||||
10 timesRepeat: ['WAITED t1 and t2' dump].
|
||||
'END OF MAIN' dump.
|
||||
}
|
||||
|
||||
method(#class) test_semaphore_heap
|
||||
{
|
||||
| sempq a |
|
||||
sempq := SemaphoreHeap new.
|
||||
|
||||
'--------------------------' dump.
|
||||
|
||||
1 to: 200 by: 1 do: [ :i |
|
||||
| sem |
|
||||
sem := Semaphore new.
|
||||
sem fireTime: (200 - i).
|
||||
sempq insert: sem
|
||||
].
|
||||
|
||||
'--------------------------' dump.
|
||||
sempq removeAt: 40.
|
||||
sempq removeAt: 50.
|
||||
|
||||
[sempq size > 0] whileTrue: [
|
||||
| sem |
|
||||
sem := sempq popTop.
|
||||
sem fireTime dump.
|
||||
]
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user