linda 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 146404ba1cf1f376a8754616b292b0ff61e31bad
4
- data.tar.gz: d1a42ff0cd3844a5c284651535f92b6ae1db37df
3
+ metadata.gz: 70d0f9c426b9d5b9aaf4105883f9a5e63a1aecb1
4
+ data.tar.gz: a4ff1571d734b2c0d7064edb2c7475a9b7c41584
5
5
  SHA512:
6
- metadata.gz: 155875330105acc2169853d1a52a8c2f7847997a0e0249d246e4df97f9950a26371ebfe90d8db05272146e46e2d703b65e6cbf9b1c48c6bd60ac32f07dad37e1
7
- data.tar.gz: 3f7fa331981194463618bb2c9df007e6ea57727efc59da57d46d8cd39232408bc3bbb98df2e7fd82b3e45b42c55d04b97286f102d9bc85bb660b0068d7d00ffd
6
+ metadata.gz: c24929e587bd7a72822e61d1ddf01d38a7a9194f2b542041d9231fa69a3a82e1e9fec84988d0199a134bc3b50efa08561cebda2b57facd07ac6dae8301118df4
7
+ data.tar.gz: b7b1248e760c20aff1fa7736ba205d6f345848d8585066dc999d4d5d15628908ce8320179226a9709fd136dd2bae1656be3470f92519b32032936290671bddc1
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.0.2 2013-05-19
2
+
3
+ * provide tests
4
+ * Linda::Test::Tuple
5
+ * Linda::Test::TupleSpace
6
+
1
7
  === 0.0.1 2013-05-18
2
8
 
3
9
  * implements tuple and tuplespace / tests
data/README.md CHANGED
@@ -60,46 +60,117 @@ Linda::Tuple.new(:a => 1, :b => 2).match?(:a => 1, :b => 5) # => false
60
60
  Tuple/TupleSpace Functions
61
61
  --------------------------
62
62
 
63
- ### TupleSpace#write( tuple, options={} )
63
+ ### TupleSpace#write(tuple, options={})
64
64
 
65
65
  - write a Tuple into TupleSpace.
66
66
  - default : options = {:expire => 300}
67
67
  - expire 300(sec) after.
68
68
  - similar to `out` function in C-Linda.
69
69
 
70
- ### TupleSpace#read( tuple )
70
+ ### TupleSpace#read(tuple)
71
71
 
72
72
  - return a Tuple which matches in TupleSpace. return `nil` if not exists.
73
73
  - similar to `rdp` function in C-Linda.
74
74
 
75
75
 
76
- ### TupleSpace#read( tuple, &callback(tuple) )
76
+ ### TupleSpace#read(tuple, &callback(tuple))
77
77
 
78
78
  - callback a Tuple which matches in TupleSpace. wait until available.
79
79
  - async function : it does not return a value.
80
80
  - similar to `rd` function in C-Linda.
81
81
 
82
82
 
83
- ### TupleSpace#take( tuple )
83
+ ### TupleSpace#take(tuple)
84
84
 
85
85
  - delete a Tuple, then return it which matches in TupleSpace. return `nil` if not exists.
86
86
  - similar to `inp` function in C-Linda.
87
87
 
88
88
 
89
- ### TupleSpace#take( tuple, &callback(tuple) )
89
+ ### TupleSpace#take(tuple, &callback(tuple))
90
90
 
91
91
  - delete a Tuple, then callback it which matches in TupleSpace. wait until available.
92
92
  - async function : it does not return a value.
93
93
  - similar to `in` function in C-Linda.
94
94
 
95
95
 
96
- ### TupleSpace#watch( tuple, &callback(tuple) )
96
+ ### TupleSpace#watch(tuple, &callback(tuple))
97
97
 
98
98
  - callback Tuples which matches when TupleSpace#write(tuple) is called.
99
99
 
100
100
 
101
+ Test your Linda implementation
102
+ ------------------------------
103
+
104
+ with [minitest](https://github.com/seattlerb/minitest).
105
+
106
+ ### Test Tuple
107
+
108
+ `test/test_tuple.rb`
109
+ ```ruby
110
+ require 'rubygems'
111
+ require 'minitest/autorun'
112
+ require 'linda/test/tuple'
113
+ require 'path/to/my/linda/tuple' # load your Tuple class
114
+
115
+ class TestMyTuple < MiniTest::Test
116
+ include Linda::Test::Tuple # mix-in test code
117
+
118
+ def target_tuple
119
+ My::Linda::Tuple # set your Tuple class name
120
+ end
121
+ end
122
+ ```
123
+
124
+ % ruby test/test_tuple.rb
125
+
126
+
127
+ ### Test TupleSpace
128
+
129
+ `test/test_tuplespace.rb`
130
+ ```ruby
131
+ require 'rubygems'
132
+ require 'minitest/autorun'
133
+ require 'linda/test/tuplespace'
134
+ require 'path/to/my/linda/tuple' # load your Tuple class
135
+ require 'path/to/my/linda/tuplespace' # load your TupleSpace class
136
+
137
+ class TestMyTupleSpace < MiniTest::Test
138
+ include Linda::Test::TupleSpace # mix-in test code
139
+
140
+ def target_tuple
141
+ My::Linda::Tuple # set your Tuple class name
142
+ end
143
+
144
+ def target_tuplespace
145
+ My::Linda::TupleSpace # set your TupleSpace class name
146
+ end
147
+ end
148
+ ```
149
+
150
+ % ruby test/test_tuplespace.rb
151
+
152
+
153
+ ### Rake
154
+
155
+ `Rakefile`
156
+ ```ruby
157
+ require "rake/testtask"
158
+
159
+ Rake::TestTask.new do |t|
160
+ t.pattern = "test/test_*.rb"
161
+ end
162
+
163
+ task :default => :test
164
+ ```
165
+
166
+ % rake test
167
+
168
+ => run all tests
169
+
170
+
101
171
  Test
102
172
  ----
173
+ test this gem
103
174
 
104
175
  % gem install bundler
105
176
  % bundle install
@@ -0,0 +1,56 @@
1
+ module Linda
2
+ module Test
3
+ module Tuple
4
+
5
+ def test_match_array_tuple
6
+ tuple = target_tuple.new [1,2,3]
7
+ assert tuple.match? target_tuple.new [1,2,3]
8
+ assert tuple.match? target_tuple.new [1,2,3,4]
9
+ assert !tuple.match?(target_tuple.new [1,2])
10
+ assert !tuple.match?(target_tuple.new [1,"a",3])
11
+ assert !tuple.match?(target_tuple.new :a => 1, :b => 2)
12
+ tuple = target_tuple.new ["a","b","c"]
13
+ assert tuple.match? target_tuple.new ["a","b","c"]
14
+ assert tuple.match? target_tuple.new ["a","b","c","d","efg",123,"h"]
15
+ assert !tuple.match?(target_tuple.new ["a","b"])
16
+ assert !tuple.match?(target_tuple.new ["a","b",789])
17
+ assert !tuple.match?(target_tuple.new :foo => 1, :bar => 2)
18
+ end
19
+
20
+ def test_match_array
21
+ tuple = target_tuple.new [1,2,3]
22
+ assert tuple.match? [1,2,3]
23
+ assert tuple.match? [1,2,3,4]
24
+ assert !tuple.match?([1,2])
25
+ assert !tuple.match?([1,"a",3])
26
+ assert !tuple.match?(:a => 1, :b => 2)
27
+ tuple = target_tuple.new ["a","b","c"]
28
+ assert tuple.match? ["a","b","c"]
29
+ assert tuple.match? ["a","b","c","d","efg",123,"h"]
30
+ assert !tuple.match?(["a","b"])
31
+ assert !tuple.match?(["a","b",789])
32
+ assert !tuple.match?(:foo => 1, :bar => 2)
33
+ end
34
+
35
+ def test_match_hash_tuple
36
+ tuple = target_tuple.new :a => 1, :b => 2
37
+ assert tuple.match? target_tuple.new :a => 1, :b => 2
38
+ assert tuple.match? target_tuple.new :a => 1, :b => 2, :c => 3
39
+ assert tuple.match? target_tuple.new :a => 1, :b => 2, :c => {:foo => "bar"}
40
+ assert !tuple.match?(target_tuple.new :a => 0, :b => 2)
41
+ assert !tuple.match?(target_tuple.new :b => 2, :c => 3)
42
+ assert !tuple.match?(target_tuple.new [1,2,3])
43
+ end
44
+
45
+ def test_match_hash
46
+ tuple = target_tuple.new :a => 1, :b => 2
47
+ assert tuple.match? :a => 1, :b => 2
48
+ assert tuple.match? :a => 1, :b => 2, :c => 3
49
+ assert tuple.match? :a => 1, :b => 2, :c => {:foo => "bar"}
50
+ assert !tuple.match?(:a => 0, :b => 2)
51
+ assert !tuple.match?(:b => 2, :c => 3)
52
+ assert !tuple.match?([1,2,3])
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,134 @@
1
+ module Linda
2
+ module Test
3
+ module TupleSpace
4
+
5
+ def setup
6
+ @space = target_tuplespace.new
7
+ end
8
+
9
+ def test_write_read
10
+ assert_equal @space.size, 0
11
+ @space.write target_tuple.new [1,2,3]
12
+ assert_equal @space.size, 1
13
+ assert_equal @space.read([1,2]).data, [1,2,3]
14
+ @space.write :a => 1, :b => 2, :c => 999
15
+ @space.write :a => 1, :b => 2, :c => 3
16
+ assert_equal @space.size, 3
17
+ assert_equal @space.read(:a => 1, :c => 999).data, {:a => 1, :b => 2, :c => 999}
18
+ assert_equal @space.read(:a => 1, :c => 999).data, {:a => 1, :b => 2, :c => 999}
19
+ assert_equal @space.read(:a => 1).data, {:a => 1, :b => 2, :c => 3}
20
+ end
21
+
22
+ def test_write_read_callback
23
+ assert_equal @space.size, 0
24
+ _tuple1 = nil
25
+ @space.read [1,2] do |tuple|
26
+ _tuple1 = tuple
27
+ end
28
+ _tuple2 = nil
29
+ @space.read [1,"a"] do |tuple|
30
+ _tuple2 = tuple
31
+ end
32
+ _tuple3 = nil
33
+ @space.read [1,2,3] do |tuple|
34
+ _tuple3 = tuple
35
+ end
36
+ @space.write [1,2,3]
37
+ assert_equal _tuple1.data, [1,2,3]
38
+ assert_equal _tuple2, nil
39
+ assert_equal _tuple3.data, [1,2,3]
40
+ assert_equal @space.read([1]).data, [1,2,3]
41
+ assert_equal @space.size, 1
42
+ @space.write [1,2,4]
43
+ assert_equal _tuple1.data, [1,2,3]
44
+ assert_equal @space.size, 2
45
+ end
46
+
47
+ def test_take
48
+ assert_equal @space.size, 0
49
+ 1.upto(3) do |i|
50
+ @space.write [1,2,3,"a"*i]
51
+ end
52
+ assert_equal @space.size, 3
53
+ assert_equal @space.take([1,2,3]).data, [1,2,3,"aaa"]
54
+ assert_equal @space.size, 2
55
+ @space.write :a => 1, :b => 2, :c => 3
56
+ assert_equal @space.size, 3
57
+ assert_equal @space.take([1,3]), nil
58
+ assert_equal @space.take(:a => 1, :b => 2, :c => 4), nil
59
+ assert_equal @space.take([1,2,3]).data, [1,2,3,"aa"]
60
+ assert_equal @space.size, 2
61
+ assert_equal @space.take([1,2,3]).data, [1,2,3,"a"]
62
+ assert_equal @space.size, 1
63
+ assert_equal @space.take(:b => 2, :a => 1).data, {:a => 1, :b => 2, :c => 3}
64
+ assert_equal @space.size, 0
65
+ end
66
+
67
+ def test_take_callback
68
+ assert_equal @space.size, 0
69
+ _tuple1 = nil
70
+ @space.take [1,2] do |tuple|
71
+ _tuple1 = tuple
72
+ end
73
+ _tuple2 = nil
74
+ @space.take [1,"a"] do |tuple|
75
+ _tuple2 = tuple
76
+ end
77
+ _tuple3 = nil
78
+ @space.read [1,2,3] do |tuple|
79
+ _tuple3 = tuple
80
+ end
81
+ _tuple4 = nil
82
+ @space.take [1,2,3] do |tuple|
83
+ _tuple4 = tuple
84
+ end
85
+ 1.upto(3) do |i|
86
+ @space.write [1,2,3,"a"*i]
87
+ end
88
+ assert_equal @space.size, 1
89
+ assert_equal _tuple1.data, [1,2,3,"a"]
90
+ assert_equal _tuple2, nil
91
+ assert_equal _tuple3.data, [1,2,3,"aa"]
92
+ assert_equal _tuple4.data, [1,2,3,"aa"]
93
+ assert_equal @space.take([1]).data, [1,2,3,"aaa"]
94
+ assert_equal @space.size, 0
95
+ end
96
+
97
+ def test_watch
98
+ assert_equal @space.size, 0
99
+ _tuple1 = nil
100
+ @space.take [1] do |tuple|
101
+ _tuple1 = tuple
102
+ end
103
+ results = []
104
+ @space.watch [1,2] do |tuple|
105
+ results << tuple
106
+ end
107
+ @space.write [1,2,3]
108
+ @space.write [1,2,"aa"]
109
+ @space.write [1,"a",3]
110
+ assert_equal _tuple1.data, [1,2,3]
111
+ assert_equal @space.size, 2
112
+ assert_equal results.size, 2
113
+ assert_equal results[0].data, [1,2,3]
114
+ assert_equal results[1].data, [1,2,"aa"]
115
+ end
116
+
117
+ def test_tuple_expire
118
+ @space.write [1,2,999], :expire => false
119
+ @space.write [1,2,3], :expire => 3
120
+ @space.write [1,2,"a","b"], :expire => 2
121
+ assert_equal @space.size, 3
122
+ sleep 2
123
+ @space.check_expire
124
+ assert_equal @space.size, 2
125
+ assert_equal @space.take([1,2]).data, [1,2,3]
126
+ assert_equal @space.size, 1
127
+ sleep 1
128
+ assert_equal @space.take([1,2]).data, [1,2,999]
129
+ assert_equal @space.size, 0
130
+ end
131
+
132
+ end
133
+ end
134
+ end
data/lib/linda/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Linda
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/test/test_tuple.rb CHANGED
@@ -1,53 +1,10 @@
1
1
  require File.expand_path 'test_helper', File.dirname(__FILE__)
2
+ require 'linda/test/tuple'
2
3
 
3
4
  class TestTuple < MiniTest::Test
4
- def test_match_array_tuple
5
- tuple = Linda::Tuple.new [1,2,3]
6
- assert tuple.match? Linda::Tuple.new [1,2,3]
7
- assert tuple.match? Linda::Tuple.new [1,2,3,4]
8
- assert !tuple.match?(Linda::Tuple.new [1,2])
9
- assert !tuple.match?(Linda::Tuple.new [1,"a",3])
10
- assert !tuple.match?(Linda::Tuple.new :a => 1, :b => 2)
11
- tuple = Linda::Tuple.new ["a","b","c"]
12
- assert tuple.match? Linda::Tuple.new ["a","b","c"]
13
- assert tuple.match? Linda::Tuple.new ["a","b","c","d","efg",123,"h"]
14
- assert !tuple.match?(Linda::Tuple.new ["a","b"])
15
- assert !tuple.match?(Linda::Tuple.new ["a","b",789])
16
- assert !tuple.match?(Linda::Tuple.new :foo => 1, :bar => 2)
17
- end
18
-
19
- def test_match_array
20
- tuple = Linda::Tuple.new [1,2,3]
21
- assert tuple.match? [1,2,3]
22
- assert tuple.match? [1,2,3,4]
23
- assert !tuple.match?([1,2])
24
- assert !tuple.match?([1,"a",3])
25
- assert !tuple.match?(:a => 1, :b => 2)
26
- tuple = Linda::Tuple.new ["a","b","c"]
27
- assert tuple.match? ["a","b","c"]
28
- assert tuple.match? ["a","b","c","d","efg",123,"h"]
29
- assert !tuple.match?(["a","b"])
30
- assert !tuple.match?(["a","b",789])
31
- assert !tuple.match?(:foo => 1, :bar => 2)
32
- end
33
-
34
- def test_match_hash_tuple
35
- tuple = Linda::Tuple.new :a => 1, :b => 2
36
- assert tuple.match? Linda::Tuple.new :a => 1, :b => 2
37
- assert tuple.match? Linda::Tuple.new :a => 1, :b => 2, :c => 3
38
- assert tuple.match? Linda::Tuple.new :a => 1, :b => 2, :c => {:foo => "bar"}
39
- assert !tuple.match?(Linda::Tuple.new :a => 0, :b => 2)
40
- assert !tuple.match?(Linda::Tuple.new :b => 2, :c => 3)
41
- assert !tuple.match?(Linda::Tuple.new [1,2,3])
42
- end
5
+ include Linda::Test::Tuple
43
6
 
44
- def test_match_hash
45
- tuple = Linda::Tuple.new :a => 1, :b => 2
46
- assert tuple.match? :a => 1, :b => 2
47
- assert tuple.match? :a => 1, :b => 2, :c => 3
48
- assert tuple.match? :a => 1, :b => 2, :c => {:foo => "bar"}
49
- assert !tuple.match?(:a => 0, :b => 2)
50
- assert !tuple.match?(:b => 2, :c => 3)
51
- assert !tuple.match?([1,2,3])
7
+ def target_tuple
8
+ Linda::Tuple
52
9
  end
53
10
  end
@@ -1,132 +1,14 @@
1
1
  require File.expand_path 'test_helper', File.dirname(__FILE__)
2
+ require 'linda/test/tuplespace'
2
3
 
3
4
  class TestTupleSpace < MiniTest::Test
5
+ include Linda::Test::TupleSpace
4
6
 
5
- def setup
6
- @space = Linda::TupleSpace.new
7
+ def target_tuplespace
8
+ Linda::TupleSpace
7
9
  end
8
10
 
9
- def test_write_read
10
- assert_equal @space.size, 0
11
- @space.write Linda::Tuple.new [1,2,3]
12
- assert_equal @space.size, 1
13
- assert_equal @space.read([1,2]).data, [1,2,3]
14
- @space.write :a => 1, :b => 2, :c => 999
15
- @space.write :a => 1, :b => 2, :c => 3
16
- assert_equal @space.size, 3
17
- assert_equal @space.read(:a => 1, :c => 999).data, {:a => 1, :b => 2, :c => 999}
18
- assert_equal @space.read(:a => 1, :c => 999).data, {:a => 1, :b => 2, :c => 999}
19
- assert_equal @space.read(:a => 1).data, {:a => 1, :b => 2, :c => 3}
11
+ def target_tuple
12
+ Linda::Tuple
20
13
  end
21
-
22
- def test_write_read_callback
23
- assert_equal @space.size, 0
24
- _tuple1 = nil
25
- @space.read [1,2] do |tuple|
26
- _tuple1 = tuple
27
- end
28
- _tuple2 = nil
29
- @space.read [1,"a"] do |tuple|
30
- _tuple2 = tuple
31
- end
32
- _tuple3 = nil
33
- @space.read [1,2,3] do |tuple|
34
- _tuple3 = tuple
35
- end
36
- @space.write [1,2,3]
37
- assert_equal _tuple1.data, [1,2,3]
38
- assert_equal _tuple2, nil
39
- assert_equal _tuple3.data, [1,2,3]
40
- assert_equal @space.read([1]).data, [1,2,3]
41
- assert_equal @space.size, 1
42
- @space.write [1,2,4]
43
- assert_equal _tuple1.data, [1,2,3]
44
- assert_equal @space.size, 2
45
- end
46
-
47
- def test_take
48
- assert_equal @space.size, 0
49
- 1.upto(3) do |i|
50
- @space.write [1,2,3,"a"*i]
51
- end
52
- assert_equal @space.size, 3
53
- assert_equal @space.take([1,2,3]).data, [1,2,3,"aaa"]
54
- assert_equal @space.size, 2
55
- @space.write :a => 1, :b => 2, :c => 3
56
- assert_equal @space.size, 3
57
- assert_equal @space.take([1,3]), nil
58
- assert_equal @space.take(:a => 1, :b => 2, :c => 4), nil
59
- assert_equal @space.take([1,2,3]).data, [1,2,3,"aa"]
60
- assert_equal @space.size, 2
61
- assert_equal @space.take([1,2,3]).data, [1,2,3,"a"]
62
- assert_equal @space.size, 1
63
- assert_equal @space.take(:b => 2, :a => 1).data, {:a => 1, :b => 2, :c => 3}
64
- assert_equal @space.size, 0
65
- end
66
-
67
- def test_take_callback
68
- assert_equal @space.size, 0
69
- _tuple1 = nil
70
- @space.take [1,2] do |tuple|
71
- _tuple1 = tuple
72
- end
73
- _tuple2 = nil
74
- @space.take [1,"a"] do |tuple|
75
- _tuple2 = tuple
76
- end
77
- _tuple3 = nil
78
- @space.read [1,2,3] do |tuple|
79
- _tuple3 = tuple
80
- end
81
- _tuple4 = nil
82
- @space.take [1,2,3] do |tuple|
83
- _tuple4 = tuple
84
- end
85
- 1.upto(3) do |i|
86
- @space.write [1,2,3,"a"*i]
87
- end
88
- assert_equal @space.size, 1
89
- assert_equal _tuple1.data, [1,2,3,"a"]
90
- assert_equal _tuple2, nil
91
- assert_equal _tuple3.data, [1,2,3,"aa"]
92
- assert_equal _tuple4.data, [1,2,3,"aa"]
93
- assert_equal @space.take([1]).data, [1,2,3,"aaa"]
94
- assert_equal @space.size, 0
95
- end
96
-
97
- def test_watch
98
- assert_equal @space.size, 0
99
- _tuple1 = nil
100
- @space.take [1] do |tuple|
101
- _tuple1 = tuple
102
- end
103
- results = []
104
- @space.watch [1,2] do |tuple|
105
- results << tuple
106
- end
107
- @space.write [1,2,3]
108
- @space.write [1,2,"aa"]
109
- @space.write [1,"a",3]
110
- assert_equal _tuple1.data, [1,2,3]
111
- assert_equal @space.size, 2
112
- assert_equal results.size, 2
113
- assert_equal results[0].data, [1,2,3]
114
- assert_equal results[1].data, [1,2,"aa"]
115
- end
116
-
117
- def test_tuple_expire
118
- @space.write [1,2,999], :expire => false
119
- @space.write [1,2,3], :expire => 3
120
- @space.write [1,2,"a","b"], :expire => 2
121
- assert_equal @space.size, 3
122
- sleep 2
123
- @space.check_expire
124
- assert_equal @space.size, 2
125
- assert_equal @space.take([1,2]).data, [1,2,3]
126
- assert_equal @space.size, 1
127
- sleep 1
128
- assert_equal @space.take([1,2]).data, [1,2,999]
129
- assert_equal @space.size, 0
130
- end
131
-
132
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sho Hashimoto
@@ -67,6 +67,8 @@ files:
67
67
  - README.md
68
68
  - Rakefile
69
69
  - lib/linda.rb
70
+ - lib/linda/test/tuple.rb
71
+ - lib/linda/test/tuplespace.rb
70
72
  - lib/linda/tuple.rb
71
73
  - lib/linda/tuplespace.rb
72
74
  - lib/linda/version.rb