RegressionTests__SharedQueueTest.st
author Stefan Vogel <sv@exept.de>
Tue, 11 Jun 2019 10:34:41 +0200
changeset 2321 32ea6329f5ad
parent 1447 2351db93aa5b
child 1500 d406a10b2965
permissions -rw-r--r--
class: stx_goodies_regression class changed: #classNamesAndAttributes make classes autoloaded that stc cannot compile (yet)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
     3
"{ NameSpace: RegressionTests }"
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
     4
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
TestCase subclass:#SharedQueueTest
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
1059
4de9c131338f category
Claus Gittinger <cg@exept.de>
parents: 209
diff changeset
     9
	category:'tests-Regression-Collections'
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
!SharedQueueTest methodsFor:'Testing'!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
test2Readers
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
    |q scale p1 p2 s1 s2 next1 next2|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
    scale := 10000.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
    q := SharedQueue new:10.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
    s1 := ReadWriteStream on:(Array new:1000).
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
    s2 := ReadWriteStream on:(Array new:1000).
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
    p1 := [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    26
	[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    27
	    s1 nextPut:q next
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    28
	] loop.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
    p2 := [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    32
	[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    33
	    s2 nextPut:q next
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    34
	] loop.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
    1 to:1000 do:[:i|
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    38
	q nextPut:i
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
    Delay waitForMilliseconds:20.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
    p1 terminate.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
    p2 terminate.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
209
eff283f4ddd5 Fix position handling (assumed 1-based positions)
Stefan Vogel <sv@exept.de>
parents: 181
diff changeset
    46
    self assert:s1 position0Based + s2 position0Based == 1000.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
    s1 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
    s2 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
    next1 := s1 next.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
    next2 := s2 next.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
    1 to: 1000 do:[:i|
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    55
	self should:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    56
	    next1 == i ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    57
		next1 := s1 next.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    58
		true.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    59
	    ] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    60
		next2 == i ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    61
		    next2 := s2 next.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    62
		    true
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    63
		].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    64
	    ]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    65
	]
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    66
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    67
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
test2ReadersAndWriters
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    71
    |q scale p1 p2 pw s1 s2 next1 next2 all|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
    scale := 100000.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
    q := SharedQueue new:10.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    76
    s1 := ReadWriteStream on:(Array new:20000).
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    77
    s2 := ReadWriteStream on:(Array new:20000).
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
    p1 := [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    80
	[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    81
	    s1 nextPut:q next
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    82
	] loop.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
    p2 := [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    86
	[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    87
	    s2 nextPut:q next
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    88
	] loop.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
    pw := [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    92
	1 to:10000 do:[:i|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    93
	    q nextPut:i+scale
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    94
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    97
    1 to:10000 do:[:i|
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
    98
	q nextPut:i
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
    pw waitUntilTerminated.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
    Delay waitForMilliseconds:20.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
    p1 terminate.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
    p2 terminate.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
209
eff283f4ddd5 Fix position handling (assumed 1-based positions)
Stefan Vogel <sv@exept.de>
parents: 181
diff changeset
   107
    self assert:s1 position0Based + s2 position0Based == 20000.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   109
    s1 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   110
    s2 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   111
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   112
    next1 := next2 := 0.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   113
    self should:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   114
	s1 contents conform:[:i|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   115
	    i < scale ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   116
		next1 < i and:[next1 := i. true]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   117
	    ] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   118
		next2 < i and:[next2 := i. true]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   119
	    ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   120
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   121
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   122
    next1 := next2 := 0.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   123
    self should:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   124
	s2 contents conform:[:i|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   125
	    i < scale ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   126
		next1 < i and:[next1 := i. true]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   127
	    ] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   128
		next2 < i and:[next2 := i. true]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   129
	    ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   130
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
    s1 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
    s2 reset.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
    all := SortedCollection new:20000.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
    all addAll:s1 contents.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
    all addAll:s2 contents.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
    1 to: 10000 do:[:i|
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   141
	self assert:((all at:i) == i).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   142
	self assert:((all at:(i+10000)) == (i+scale)).
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   143
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   144
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
test2Writers
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
    |q scale next1 next2|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   149
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   150
    scale := 10000.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   151
    q := SharedQueue new:10.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   152
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   153
    [
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   154
	1 to:1000 do:[:i|
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   155
	    q nextPut:i.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   156
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   157
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
    [
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   159
	1 to:1000 do:[:i|
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   160
	    q nextPut:i+scale.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   161
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   163
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   164
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   165
    next1 := 1.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   166
    next2 := next1 + scale.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   167
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   168
    2000 timesRepeat:[ |i|
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   169
	i := q next.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   170
	i < scale ifTrue:[
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   171
	    self assert:i == next1.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   172
	    next1 := next1 + 1.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   173
	] ifFalse:[
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   174
	    self assert:i == next2.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   175
	    next2 := next2 + 1.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   176
	]
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   178
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   179
    self assert:next1 == 1001.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   180
    self assert:next2 == (next1 + scale).
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   181
    self assert:q isEmpty
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   182
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   183
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   184
testBasics
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   185
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   186
    |q|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   187
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   188
    q := SharedQueue new:5.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   189
    self assert:q isEmpty.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   190
    self assert:q size == 0.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   191
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   192
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   193
testReaderWriter
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   194
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   195
    |q|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   196
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   197
    q := SharedQueue new:10.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   198
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   199
    [
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   200
	1 to:1000 do:[:i|
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   201
	    q nextPut:i.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   202
	].
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   203
    ] fork.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   204
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   205
    1 to: 1000 do:[:i|
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   206
	self assert:q next == i.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   207
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   208
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   209
    self assert:q isEmpty
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   210
!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   211
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   212
testRemoveAll
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   213
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   214
    0 to:10 do:[:i|
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   215
	self removeAllSize:10 fill:i.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   216
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   217
! !
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   218
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   219
!SharedQueueTest methodsFor:'helpers'!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   220
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   221
removeAllSize:size fill:fill
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   222
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   223
    |q|
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   224
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   225
    q := SharedQueue new:size.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   226
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   227
    1 to:fill do:[:i|
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 90
diff changeset
   228
	q nextPut:i.
90
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   229
    ].
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   230
    q removeAll.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   231
    self assert:q isEmpty.
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   232
! !
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   233
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   234
!SharedQueueTest class methodsFor:'documentation'!
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   235
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   236
version
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   237
    ^ '$Header$'
906aa2e912cc initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   238
! !
1059
4de9c131338f category
Claus Gittinger <cg@exept.de>
parents: 209
diff changeset
   239