added some test scripts
This commit is contained in:
parent
77f0bfad5d
commit
e52fe398c7
68
stix/kernel/test-001.st
Normal file
68
stix/kernel/test-001.st
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
#method(#class) xxxx
|
||||||
|
{
|
||||||
|
| g1 g2 |
|
||||||
|
t1 dump.
|
||||||
|
t2 := [ g1 := 50. g2 := 100. ^g1 + g2 ].
|
||||||
|
(t1 < 100) ifFalse: [ ^self ].
|
||||||
|
t1 := t1 + 1.
|
||||||
|
^self xxxx.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) zzz
|
||||||
|
{
|
||||||
|
'zzzzzzzzzzzzzzzzzz' dump.
|
||||||
|
^self.
|
||||||
|
}
|
||||||
|
#method(#class) yyy
|
||||||
|
{
|
||||||
|
^[123456789 dump. ^200].
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
['1111111' dump. '111111111' dump. '22222222222' dump.
|
||||||
|
'3333333' dump. '444444444' dump. '55555555555' dump] newProcess resume.
|
||||||
|
'EDN OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
87
stix/kernel/test-002.st
Normal file
87
stix/kernel/test-002.st
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
#method(#class) xxxx
|
||||||
|
{
|
||||||
|
| g1 g2 |
|
||||||
|
t1 dump.
|
||||||
|
t2 := [ g1 := 50. g2 := 100. ^g1 + g2 ].
|
||||||
|
(t1 < 100) ifFalse: [ ^self ].
|
||||||
|
t1 := t1 + 1.
|
||||||
|
^self xxxx.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) zzz
|
||||||
|
{
|
||||||
|
'zzzzzzzzzzzzzzzzzz' dump.
|
||||||
|
^self.
|
||||||
|
}
|
||||||
|
#method(#class) yyy
|
||||||
|
{
|
||||||
|
^[123456789 dump. ^200].
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main2
|
||||||
|
{
|
||||||
|
'START OF MAIN2' dump.
|
||||||
|
##[thisContext dump. ^100] newProcess resume.
|
||||||
|
[ |k| thisContext dump. self zzz. "k := self yyy. k value." ['ok' dump. ^100] value] newProcess resume.
|
||||||
|
'1111' dump.
|
||||||
|
'1111' dump.
|
||||||
|
'1111' dump.
|
||||||
|
'1111' dump.
|
||||||
|
'1111' dump.
|
||||||
|
'EDN OF MAIN2' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main1
|
||||||
|
{
|
||||||
|
'START OF MAIN1' dump.
|
||||||
|
self main2.
|
||||||
|
'END OF MAIN1' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
self main1.
|
||||||
|
'EDN OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
56
stix/kernel/test-003.st
Normal file
56
stix/kernel/test-003.st
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
#method(#class) xxxx
|
||||||
|
{
|
||||||
|
| g1 g2 |
|
||||||
|
t1 dump.
|
||||||
|
t2 := [ g1 := 50. g2 := 100. ^g1 + g2 ].
|
||||||
|
(t1 < 100) ifFalse: [ ^self ].
|
||||||
|
t1 := t1 + 1.
|
||||||
|
^self xxxx.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
'EDN OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
57
stix/kernel/test-004.st
Normal file
57
stix/kernel/test-004.st
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
#method(#class) xxxx
|
||||||
|
{
|
||||||
|
| g1 g2 |
|
||||||
|
t1 dump.
|
||||||
|
t2 := [ g1 := 50. g2 := 100. ^g1 + g2 ].
|
||||||
|
(t1 < 100) ifFalse: [ ^self ].
|
||||||
|
t1 := t1 + 1.
|
||||||
|
^self xxxx.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
Processor activeProcess terminate.
|
||||||
|
'EDN OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
105
stix/kernel/test-006.st
Normal file
105
stix/kernel/test-006.st
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) t1 t2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#dcl(#class) C B A.
|
||||||
|
|
||||||
|
#method getTrue
|
||||||
|
{
|
||||||
|
^true.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method getTrue: anInteger
|
||||||
|
{
|
||||||
|
^ anInteger
|
||||||
|
}
|
||||||
|
#method getFalse
|
||||||
|
{
|
||||||
|
^false
|
||||||
|
}
|
||||||
|
|
||||||
|
#method a { ^ 10 }
|
||||||
|
#method b { ^ 20 }
|
||||||
|
#method c { ^ 30 }
|
||||||
|
|
||||||
|
#method(#class) a: a b: b c: c
|
||||||
|
{
|
||||||
|
^ a + b + c.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) getBlock
|
||||||
|
{
|
||||||
|
| a |
|
||||||
|
a := 7777777.
|
||||||
|
"
|
||||||
|
^[1 + [^a]].
|
||||||
|
1234567 dump.
|
||||||
|
"
|
||||||
|
|
||||||
|
^[self a: a b: 3 c: ([[[^6] value] value ] value)].
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
"
|
||||||
|
| k |
|
||||||
|
|
||||||
|
k := 30.
|
||||||
|
k := k + 10; + 20.
|
||||||
|
k dump.
|
||||||
|
(self a: 1 b: 2 c: 3) dump.
|
||||||
|
[self a: 1 b: 2 c: 3] value dump.
|
||||||
|
[self a: 1 b: 2 c: 3] value dump.
|
||||||
|
[self a: 9 b: 10 c: 11] value dump.
|
||||||
|
|
||||||
|
|
||||||
|
((k = 2) ifTrue: [11111] ifFalse: [2222])dump.
|
||||||
|
|
||||||
|
self getBlock value dump.
|
||||||
|
|
||||||
|
[10 + [^20]] value dump.
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
[2 + 3 + 1 + [[[^6] value] value ] value] value dump.
|
||||||
|
## ^(self a: (self new a) b: ([:a :b | a + b] value: 10 value: 20) c: (self new c)) dump.
|
||||||
|
##self getBlock value dump.
|
||||||
|
'END OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
98
stix/kernel/test-007.st
Normal file
98
stix/kernel/test-007.st
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) t1 t2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#dcl(#class) C B A.
|
||||||
|
|
||||||
|
#method getTrue
|
||||||
|
{
|
||||||
|
^true.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method getTrue: anInteger
|
||||||
|
{
|
||||||
|
^ anInteger
|
||||||
|
}
|
||||||
|
#method getFalse
|
||||||
|
{
|
||||||
|
^false
|
||||||
|
}
|
||||||
|
|
||||||
|
#method a { ^ 10 }
|
||||||
|
#method b { ^ 20 }
|
||||||
|
#method c { ^ 30 }
|
||||||
|
|
||||||
|
#method(#class) a: a b: b c: c
|
||||||
|
{
|
||||||
|
^ a + b + c.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
| p p2 |
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
##p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ^10. ] newProcessWith: #(abc def 10 20).
|
||||||
|
p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ] newProcessWith: #(abc def 10 20).
|
||||||
|
p2 := [ :a :b :c :d | a dump. b dump. a dump. b dump. (c + d) dump. ^10000 ] newProcessWith: #(
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
||||||
|
1000000000000000
|
||||||
|
299999999999999999999999999999999999999999
|
||||||
|
).
|
||||||
|
|
||||||
|
p resume.
|
||||||
|
p2 resume.
|
||||||
|
|
||||||
|
'MIDDLE OF MAIN' dump.
|
||||||
|
Processor activeProcess terminate.
|
||||||
|
|
||||||
|
##p terminate.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
## p resume.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'999999999999999999' dump.
|
||||||
|
'END OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
60
stix/kernel/test-008.st
Normal file
60
stix/kernel/test-008.st
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
#method(#class) xxxx
|
||||||
|
{
|
||||||
|
| g1 g2 |
|
||||||
|
t1 dump.
|
||||||
|
t2 := [ g1 := 50. g2 := 100. ^g1 + g2 ].
|
||||||
|
(t1 < 10) ifFalse: [ ^self ].
|
||||||
|
t1 := t1 + 1.
|
||||||
|
^self xxxx.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
t1 := 1.
|
||||||
|
self xxxx.
|
||||||
|
'END OF XXX' dump.
|
||||||
|
t2 := t2 value.
|
||||||
|
'END OF t2 value' dump.
|
||||||
|
t2 dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
65
stix/kernel/test-009.st
Normal file
65
stix/kernel/test-009.st
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#declare(#classinst) t1 t2.
|
||||||
|
|
||||||
|
#method(#class) main2
|
||||||
|
{
|
||||||
|
'START OF MAIN2' dump.
|
||||||
|
t1 value.
|
||||||
|
'END OF MAIN2' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main1
|
||||||
|
{
|
||||||
|
'START OF MAIN1' dump.
|
||||||
|
self main2.
|
||||||
|
t2 := [ 'BLOCK #2' dump. ^200].
|
||||||
|
'END OF MAIN1' dump.
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
t1 := ['BLOCK #1' dump. ^100].
|
||||||
|
self main1.
|
||||||
|
'END OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
106
stix/kernel/test-010.st
Normal file
106
stix/kernel/test-010.st
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
#method(#class) main111
|
||||||
|
{
|
||||||
|
| s3 |
|
||||||
|
s3 := Semaphore new.
|
||||||
|
Processor signal: s3 after: 1 and: 50.
|
||||||
|
s3 wait.
|
||||||
|
'END OF MAIN' dump.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
|t1 t2 s1 s2 s3|
|
||||||
|
|
||||||
|
'START OF MAIN' dump.
|
||||||
|
|
||||||
|
s1 := Semaphore new.
|
||||||
|
s2 := Semaphore new.
|
||||||
|
s3 := Semaphore new.
|
||||||
|
|
||||||
|
t1 := [
|
||||||
|
10 timesRepeat: ['BLOCK #1' dump. Processor activeProcess sleep: 1.].
|
||||||
|
s1 signal
|
||||||
|
] newProcess.
|
||||||
|
t2 := [ 5 timesRepeat: ['BLOCK #2' dump]. s2 signal. ] newProcess.
|
||||||
|
|
||||||
|
t1 resume.
|
||||||
|
t2 resume.
|
||||||
|
|
||||||
|
Processor signal: s3 after: 10.
|
||||||
|
|
||||||
|
'STARTED t1 and t2' dump.
|
||||||
|
s1 wait.
|
||||||
|
s2 wait.
|
||||||
|
|
||||||
|
##Processor 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 deleteAt: 40.
|
||||||
|
sempq deleteAt: 50.
|
||||||
|
|
||||||
|
[sempq size > 0] whileTrue: [
|
||||||
|
| sem |
|
||||||
|
sem := sempq popTop.
|
||||||
|
sem fireTime dump.
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
44
stix/kernel/test-011.st
Normal file
44
stix/kernel/test-011.st
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
#include 'Stix.st'.
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
## 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)
|
||||||
|
{
|
||||||
|
#dcl(#class) Q R.
|
||||||
|
#dcl(#classinst) a1 a2.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#class MyObject(TestObject)
|
||||||
|
{
|
||||||
|
|
||||||
|
#method(#class) main
|
||||||
|
{
|
||||||
|
['this is test-011' dump. Exception signal. ] on: Exception do: [ :ex | 'Exception occurred' dump ].
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user