chawk 0.1.15 → 0.1.16
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 +4 -4
- data/.gitignore +1 -0
- data/.pryrc +10 -0
- data/.travis.yml +0 -2
- data/CHANGES +5 -0
- data/chawk.gemspec +5 -6
- data/lib/chawk.rb +48 -35
- data/lib/chawk/migration.rb +92 -0
- data/lib/chawk/version.rb +1 -1
- data/lib/models.rb +145 -80
- data/test/lib/addr_test.rb +23 -16
- data/test/lib/failed_node_test.rb +18 -0
- data/test/lib/paddr_test.rb +128 -110
- data/test/lib/vaddr_test.rb +160 -160
- data/test/schema.rb +60 -0
- data/test/test_helper.rb +13 -9
- metadata +34 -18
- data/lib/addr.rb +0 -108
- data/lib/paddr.rb +0 -59
- data/lib/store.rb +0 -124
- data/lib/vaddr.rb +0 -23
data/test/lib/addr_test.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
describe Chawk
|
4
|
+
describe Chawk do
|
5
5
|
before do
|
6
6
|
Chawk.clear_all_data!
|
7
7
|
@agent = Chawk::Models::Agent.first || Chawk::Models::Agent.create(:name=>"Test User")
|
8
8
|
@addr = Chawk.addr(@agent,'a:b')
|
9
9
|
end
|
10
10
|
|
11
|
-
it "has
|
12
|
-
|
11
|
+
it "has a good agent" do
|
12
|
+
lambda {@addr = Chawk.addr(nil,'a:b')}.must_raise(ArgumentError)
|
13
|
+
lambda {@addr = Chawk.addr(Object.new,'a:b')}.must_raise(ArgumentError)
|
14
|
+
lambda {@addr = Chawk.addr(Chawk::Models::Agent,'a:b')}.must_raise(ArgumentError)
|
13
15
|
end
|
14
16
|
|
15
|
-
it "has
|
16
|
-
|
17
|
+
it "has key" do
|
18
|
+
@addr.must_respond_to(:key)
|
17
19
|
end
|
18
20
|
|
19
|
-
it "
|
20
|
-
@addr.
|
21
|
-
Chawk.addr(@agent,'a:b').
|
22
|
-
Chawk.addr(@agent,'0:x:z').
|
21
|
+
it "key is valid" do
|
22
|
+
@addr.key.must_equal("a:b")
|
23
|
+
Chawk.addr(@agent,'a:b').key.must_equal("a:b")
|
24
|
+
Chawk.addr(@agent,'0:x:z').key.must_equal("0:x:z")
|
23
25
|
path = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345689_:$!@*[]~()"
|
24
|
-
Chawk.addr(@agent,path).
|
26
|
+
Chawk.addr(@agent,path).key.must_equal(path)
|
25
27
|
end
|
26
28
|
|
27
29
|
it "rejects invalid paths" do
|
@@ -37,19 +39,24 @@ describe Chawk::Addr do
|
|
37
39
|
lambda {Chawk.addr(@agent,"?")}.must_raise(ArgumentError)
|
38
40
|
end
|
39
41
|
|
42
|
+
it "sets permissions" do
|
43
|
+
@addr.must_respond_to(:set_public_read)
|
44
|
+
@addr.must_respond_to(:set_permissions)
|
45
|
+
end
|
46
|
+
|
40
47
|
it "stops unauthorized access" do
|
41
|
-
agent2 = Chawk::Models::Agent.
|
48
|
+
agent2 = Chawk::Models::Agent.where("name=?","Steve Austin").first || Chawk::Models::Agent.create(name:"Steve Austin")
|
42
49
|
lambda{@addr = Chawk.addr(agent2,'a:b')}.must_raise SecurityError
|
43
|
-
@addr.
|
44
|
-
Chawk.addr(agent2,'a:b').
|
45
|
-
@addr.
|
50
|
+
@addr.set_public_read true
|
51
|
+
Chawk.addr(agent2,'a:b').key.must_equal "a:b"
|
52
|
+
@addr.set_public_read false
|
46
53
|
lambda{@addr = Chawk.addr(agent2,'a:b')}.must_raise SecurityError
|
47
54
|
@addr.set_permissions(agent2,true,false,false)
|
48
|
-
Chawk.addr(agent2,'a:b').
|
55
|
+
Chawk.addr(agent2,'a:b').key.must_equal "a:b"
|
49
56
|
@addr.set_permissions(agent2,false,false,false)
|
50
57
|
lambda{@addr = Chawk.addr(agent2,'a:b')}.must_raise SecurityError
|
51
58
|
@addr.set_permissions(agent2,false,false,true)
|
52
|
-
Chawk.addr(agent2,'a:b').
|
59
|
+
Chawk.addr(agent2,'a:b').key.must_equal "a:b"
|
53
60
|
end
|
54
61
|
|
55
62
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
Jiggy = Chawk.clone
|
5
|
+
def Jiggy.find_or_create_node(agent,key) return nil end
|
6
|
+
|
7
|
+
describe Jiggy do
|
8
|
+
before do
|
9
|
+
Jiggy.clear_all_data!
|
10
|
+
@agent = Jiggy::Models::Agent.first || Jiggy::Models::Agent.create(:name=>"Test User")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "needs a valid node" do
|
14
|
+
|
15
|
+
lambda {@addr = Jiggy.addr(@agent,'a:b')}.must_raise(ArgumentError)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/test/lib/paddr_test.rb
CHANGED
@@ -1,102 +1,117 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
describe Chawk
|
3
|
+
describe Chawk do
|
4
4
|
before do
|
5
5
|
#@board = Chawk::Board.new()
|
6
6
|
@agent = Chawk::Models::Agent.first || Chawk::Models::Agent.create(:name=>"Test User")
|
7
7
|
@addr = Chawk.addr(@agent,'a:b')
|
8
|
-
@addr.points.
|
8
|
+
@addr.points.destroy_all
|
9
9
|
end
|
10
10
|
|
11
11
|
it "has length" do
|
12
|
-
|
12
|
+
@addr.points.must_respond_to(:length)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "calculates length" do
|
16
|
-
@addr.points.
|
16
|
+
@addr.points.destroy_all
|
17
17
|
@addr.points.length.must_equal(0)
|
18
|
-
@addr.
|
18
|
+
@addr.add_points 2
|
19
19
|
@addr.points.length.must_equal(1)
|
20
|
-
@addr.
|
20
|
+
@addr.add_points 2
|
21
21
|
@addr.points.length.must_equal(2)
|
22
|
-
@addr.
|
22
|
+
@addr.add_points 2
|
23
23
|
@addr.points.length.must_equal(3)
|
24
|
-
@addr.
|
24
|
+
@addr.add_points [1,2,3,4]
|
25
25
|
@addr.points.length.must_equal(7)
|
26
26
|
end
|
27
27
|
|
28
|
-
it "has
|
29
|
-
|
30
|
-
end
|
28
|
+
# it "has destroy_all" do
|
29
|
+
# @addr.points.must_respond_to(:destroy_all)
|
30
|
+
# end
|
31
31
|
|
32
32
|
it "clears history" do
|
33
|
-
|
33
|
+
@addr.add_points [1,2,3,4]
|
34
|
+
@addr.points.length.must_equal(4)
|
35
|
+
@addr.points.destroy_all
|
34
36
|
@addr.points.length.must_equal(0)
|
35
37
|
end
|
36
38
|
|
37
|
-
it "
|
38
|
-
|
39
|
+
it "doesn't clear the wrong history" do
|
40
|
+
addr2 = Chawk.addr(@agent,'a:b')
|
41
|
+
addr2.points.destroy_all
|
42
|
+
@addr.points.destroy_all
|
43
|
+
addr2.add_points [1,2,3,4]
|
44
|
+
@addr.add_points [1,2,3,4]
|
45
|
+
addr2.points.destroy_all
|
46
|
+
addr2.points.length.must_equal(0)
|
47
|
+
@addr.points.length.must_equal(4)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "accepts _insert_point" do
|
51
|
+
@addr._insert_point(100,Time.now)
|
39
52
|
@addr.points.length.must_equal(1)
|
40
53
|
end
|
41
54
|
|
42
|
-
it "accepts
|
43
|
-
@addr.
|
55
|
+
it "accepts add_points" do
|
56
|
+
@addr.must_respond_to(:"add_points")
|
44
57
|
end
|
45
58
|
|
46
59
|
it "accepts integers" do
|
47
|
-
@addr.
|
60
|
+
@addr.add_points 10
|
48
61
|
@addr.points.length.must_equal(1)
|
49
|
-
@addr.
|
62
|
+
@addr.add_points 0
|
50
63
|
@addr.points.length.must_equal(2)
|
51
|
-
@addr.
|
52
|
-
@addr.
|
53
|
-
@addr.
|
64
|
+
@addr.add_points 190
|
65
|
+
@addr.add_points 10002
|
66
|
+
@addr.add_points [10,0,190,100]
|
54
67
|
dt = Time.now.to_f
|
55
|
-
@addr.
|
56
|
-
@addr.
|
57
|
-
@addr.
|
58
|
-
@addr.
|
59
|
-
end
|
60
|
-
|
61
|
-
it "does
|
62
|
-
@addr.points.
|
63
|
-
|
64
|
-
@addr.
|
68
|
+
@addr.add_points [[10,dt],[0,dt],[190,dt],[100,dt]]
|
69
|
+
@addr.add_points [{"v"=>10},{"v"=>0},{"v"=>190},{"v"=>100,"t"=>dt}]
|
70
|
+
@addr.add_points [{"v"=>10,"t"=>dt},{"v"=>0,"t"=>dt},{"v"=>190,"t"=>dt},{"v"=>100,"t"=>dt}]
|
71
|
+
@addr.add_points [{"t"=>dt,"v"=>10},{"v"=>0,"t"=>dt},{"t"=>dt,"v"=>190},{"v"=>100,"t"=>dt}]
|
72
|
+
end
|
73
|
+
|
74
|
+
it "does increment" do
|
75
|
+
@addr.points.destroy_all
|
76
|
+
@addr.add_points 99
|
77
|
+
@addr.must_respond_to(:increment)
|
78
|
+
@addr.increment 10
|
79
|
+
@addr.increment
|
65
80
|
@addr.points.last.value.must_equal(110)
|
66
|
-
@addr.
|
81
|
+
@addr.increment -10
|
67
82
|
@addr.points.last.value.must_equal(100)
|
68
|
-
@addr.
|
83
|
+
@addr.increment
|
69
84
|
@addr.points.last.value.must_equal(101)
|
70
85
|
end
|
71
86
|
|
72
|
-
it "should only
|
73
|
-
lambda {@addr.
|
74
|
-
lambda {@addr.
|
87
|
+
it "should only increment integers" do
|
88
|
+
lambda {@addr.increment 'A'}.must_raise(ArgumentError)
|
89
|
+
lambda {@addr.increment nil}.must_raise(ArgumentError)
|
75
90
|
end
|
76
91
|
|
77
92
|
it "does -" do
|
78
93
|
@addr.points.must_respond_to(:"-")
|
79
|
-
@addr.
|
80
|
-
@addr.
|
94
|
+
@addr.add_points 10
|
95
|
+
@addr.decrement 100
|
81
96
|
@addr.points.last.value.must_equal(-90)
|
82
|
-
@addr.
|
97
|
+
@addr.decrement -10
|
83
98
|
@addr.points.last.value.must_equal(-80)
|
84
|
-
@addr.
|
99
|
+
@addr.decrement
|
85
100
|
@addr.points.last.value.must_equal(-81)
|
86
101
|
end
|
87
102
|
|
88
103
|
it "should only - integers" do
|
89
|
-
lambda {@addr.
|
90
|
-
lambda {@addr.
|
104
|
+
lambda {@addr.decrement 'A'}.must_raise(ArgumentError)
|
105
|
+
lambda {@addr.decrement nil}.must_raise(ArgumentError)
|
91
106
|
end
|
92
107
|
|
93
108
|
it "only accepts integers in proper formats" do
|
94
|
-
lambda {@addr.
|
95
|
-
lambda {@addr.
|
96
|
-
lambda {@addr.
|
97
|
-
lambda {@addr.
|
109
|
+
lambda {@addr.add_points 10.0}.must_raise(ArgumentError)
|
110
|
+
lambda {@addr.add_points nil}.must_raise(ArgumentError)
|
111
|
+
lambda {@addr.add_points [10.0,:x]}.must_raise(ArgumentError)
|
112
|
+
lambda {@addr.add_points [[10,10,10],[10,10,20]]}.must_raise(ArgumentError)
|
98
113
|
dt = Time.now.to_f
|
99
|
-
lambda {@addr.
|
114
|
+
lambda {@addr.add_points [{"x"=>10,"t"=>dt},{"x"=>0,"t"=>dt}]}.must_raise(ArgumentError)
|
100
115
|
end
|
101
116
|
|
102
117
|
it "does bulk add points" do
|
@@ -114,101 +129,104 @@ describe Chawk::Paddr do
|
|
114
129
|
end
|
115
130
|
|
116
131
|
it "remembers last value" do
|
117
|
-
@addr.
|
132
|
+
@addr.add_points 10
|
118
133
|
@addr.points.last.value.must_equal(10)
|
119
|
-
@addr.
|
134
|
+
@addr.add_points 1000
|
120
135
|
@addr.points.last.value.must_equal(1000)
|
121
|
-
@addr.
|
136
|
+
@addr.add_points 99
|
122
137
|
@addr.points.last.value.must_equal(99)
|
123
|
-
@addr.
|
138
|
+
@addr.add_points [10,0,190,100]
|
124
139
|
@addr.points.last.value.must_equal(100)
|
125
140
|
end
|
126
141
|
|
127
142
|
it "stores meta information" do
|
128
|
-
@addr.
|
143
|
+
@addr.add_points(10,{:meta=>"Some meta_information"})
|
129
144
|
@addr.points.last.value.must_equal(10)
|
130
145
|
@addr.points.last.meta.must_equal("Some meta_information")
|
131
146
|
end
|
132
147
|
|
133
148
|
|
134
149
|
it "returns ordinal last" do
|
135
|
-
@addr.
|
150
|
+
@addr.add_points [10,9,8,7,6,5,4,3,2,1,0]
|
136
151
|
@addr.points.last(5).length.must_equal(5)
|
137
152
|
end
|
138
153
|
|
139
154
|
it "has max()" do
|
140
|
-
@addr.
|
155
|
+
@addr.must_respond_to(:max)
|
141
156
|
end
|
142
157
|
|
143
158
|
it "does max()" do
|
144
|
-
@addr.points.
|
145
|
-
@addr.
|
146
|
-
@addr.
|
147
|
-
@addr.
|
148
|
-
@addr.
|
149
|
-
@addr.
|
150
|
-
@addr.
|
151
|
-
@addr.
|
152
|
-
@addr.
|
153
|
-
@addr.
|
154
|
-
@addr.
|
159
|
+
@addr.points.destroy_all
|
160
|
+
@addr.add_points [1,2,3,4,5]
|
161
|
+
@addr.max.must_equal(5)
|
162
|
+
@addr.add_points 100
|
163
|
+
@addr.max.must_equal(100)
|
164
|
+
@addr.add_points 100
|
165
|
+
@addr.max.must_equal(100)
|
166
|
+
@addr.add_points 99
|
167
|
+
@addr.max.must_equal(100)
|
168
|
+
@addr.add_points 0
|
169
|
+
@addr.max.must_equal(100)
|
155
170
|
end
|
156
171
|
|
157
172
|
it "does min()" do
|
158
|
-
@addr.
|
159
|
-
@addr.
|
160
|
-
@addr.
|
161
|
-
@addr.
|
162
|
-
@addr.
|
163
|
-
@addr.
|
164
|
-
@addr.
|
165
|
-
@addr.
|
166
|
-
@addr.
|
167
|
-
@addr.
|
173
|
+
@addr.add_points [11,12,13,14,15]
|
174
|
+
@addr.min.must_equal(11)
|
175
|
+
@addr.add_points 100
|
176
|
+
@addr.min.must_equal(11)
|
177
|
+
@addr.add_points 10
|
178
|
+
@addr.min.must_equal(10)
|
179
|
+
@addr.add_points 99
|
180
|
+
@addr.min.must_equal(10)
|
181
|
+
@addr.add_points 0
|
182
|
+
@addr.min.must_equal(0)
|
168
183
|
end
|
169
184
|
|
170
185
|
it :does_range do
|
171
|
-
@addr.
|
186
|
+
@addr.must_respond_to(:points_range)
|
172
187
|
|
173
188
|
ts = Time.now
|
174
189
|
|
175
|
-
@addr.
|
176
|
-
@addr.
|
177
|
-
@addr.
|
178
|
-
@addr.
|
179
|
-
@addr.
|
180
|
-
@addr.
|
181
|
-
@addr.
|
182
|
-
@addr.
|
183
|
-
@addr.
|
184
|
-
@addr.
|
185
|
-
@addr.
|
186
|
-
@addr.
|
187
|
-
@addr.
|
188
|
-
@addr.
|
189
|
-
@addr.
|
190
|
-
@addr.
|
191
|
-
@addr.
|
192
|
-
@addr.
|
193
|
-
|
194
|
-
|
195
|
-
@addr.
|
190
|
+
@addr._insert_point(0,ts-1000)
|
191
|
+
@addr._insert_point(1,ts-1000)
|
192
|
+
@addr._insert_point(2,ts-1000)
|
193
|
+
@addr._insert_point(3,ts-1000)
|
194
|
+
@addr._insert_point(4,ts-1000)
|
195
|
+
@addr._insert_point(5,ts-800)
|
196
|
+
@addr._insert_point(6,ts-800)
|
197
|
+
@addr._insert_point(7,ts-800)
|
198
|
+
@addr._insert_point(8,ts-200)
|
199
|
+
@addr._insert_point(9,ts-10)
|
200
|
+
@addr._insert_point(10,ts-5)
|
201
|
+
@addr.points_range(ts-1001,ts).length.must_equal 11
|
202
|
+
@addr.points_range(ts-801,ts).length.must_equal 6
|
203
|
+
@addr.points_range(ts-201,ts).length.must_equal 3
|
204
|
+
@addr.points_range(ts-11,ts).length.must_equal 2
|
205
|
+
@addr.points_range(ts-6,ts).length.must_equal 1
|
206
|
+
@addr.points_range(ts-201,ts-11).length.must_equal 1
|
207
|
+
@addr.points_range(ts-1001,ts-999).length.must_equal 5
|
208
|
+
|
209
|
+
@addr._insert_point(0,ts-101)
|
210
|
+
@addr.points_range(ts-201,ts).length.must_equal 4
|
196
211
|
end
|
197
212
|
|
198
213
|
it "does since" do
|
214
|
+
@addr.points.destroy_all
|
215
|
+
|
216
|
+
|
199
217
|
ts = Time.now
|
200
218
|
|
201
|
-
@addr.
|
202
|
-
@addr.
|
203
|
-
@addr.
|
204
|
-
@addr.
|
205
|
-
@addr.
|
206
|
-
@addr.
|
207
|
-
@addr.
|
219
|
+
@addr._insert_point(0,ts-1000)
|
220
|
+
@addr._insert_point(7,ts-800)
|
221
|
+
@addr._insert_point(8,ts-200)
|
222
|
+
@addr._insert_point(10,ts-5)
|
223
|
+
@addr.must_respond_to(:points_since)
|
224
|
+
@addr.points_since(ts-1001).length.must_equal(4)
|
225
|
+
@addr.points_since(ts-301).length.must_equal(2)
|
208
226
|
end
|
209
227
|
|
210
228
|
# it :acts_like_an_integer do
|
211
|
-
# @addr.
|
229
|
+
# @addr.add_points 36878
|
212
230
|
# last = @addr.points.last
|
213
231
|
# last.to_i.must_equal 36878
|
214
232
|
# end
|
@@ -218,12 +236,12 @@ describe Chawk::Paddr do
|
|
218
236
|
# @board.notification_queue_length.must_equal (0)
|
219
237
|
|
220
238
|
# pointers = []
|
221
|
-
# pointers
|
222
|
-
# pointers
|
223
|
-
# pointers
|
224
|
-
# pointers
|
239
|
+
# pointers add_points @board.paddr(['0','1','2'])
|
240
|
+
# pointers add_points @board.paddr(['0','1','3'])
|
241
|
+
# pointers add_points @board.paddr(['0','1','4'])
|
242
|
+
# pointers add_points @board.paddr(['0','1','5'])
|
225
243
|
|
226
|
-
# pointers.each{|p|
|
244
|
+
# pointers.each{|p|padd_points10}
|
227
245
|
|
228
246
|
# @board.notification_queue_length.must_equal (4)
|
229
247
|
# x = @board.pop_from_notification_queue
|
data/test/lib/vaddr_test.rb
CHANGED
@@ -1,160 +1,160 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
describe Chawk::Vaddr do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
end
|
1
|
+
# require 'test_helper'
|
2
|
+
# require 'json'
|
3
|
+
|
4
|
+
# describe Chawk::Vaddr do
|
5
|
+
# before do
|
6
|
+
# #@board = Chawk::Board.new()
|
7
|
+
# @agent = Chawk::Models::Agent.first || Chawk::Models::Agent.create(:name=>"Test User")
|
8
|
+
# @addr = Chawk.addr(@agent,'a:b')
|
9
|
+
# @addr.values.clear_history!
|
10
|
+
# end
|
11
|
+
|
12
|
+
# it "has length" do
|
13
|
+
# @addr.values.must_respond_to(:length)
|
14
|
+
# end
|
15
|
+
|
16
|
+
# it :calculates_length do
|
17
|
+
# @addr.values.clear_history!
|
18
|
+
# @addr.values.length.must_equal(0)
|
19
|
+
# @addr.values << "2"
|
20
|
+
# @addr.values.length.must_equal(1)
|
21
|
+
# @addr.values << "2"
|
22
|
+
# @addr.values.length.must_equal(2)
|
23
|
+
# @addr.values << "FLEAS!"
|
24
|
+
# @addr.values.length.must_equal(3)
|
25
|
+
# @addr.values << ["CAT","DOG","COW","CHIPMUNK"]
|
26
|
+
# @addr.values.length.must_equal(7)
|
27
|
+
# end
|
28
|
+
|
29
|
+
# it "has clear_history!" do
|
30
|
+
# @addr.values.must_respond_to(:clear_history!)
|
31
|
+
# end
|
32
|
+
|
33
|
+
# it "clears history" do
|
34
|
+
# @addr.values.clear_history!
|
35
|
+
# @addr.values.length.must_equal(0)
|
36
|
+
# end
|
37
|
+
|
38
|
+
# it :accepts__insert do
|
39
|
+
# @addr.values._insert("SHOCK THE MONKEY",Time.now)
|
40
|
+
# @addr.values.length.must_equal(1)
|
41
|
+
# end
|
42
|
+
|
43
|
+
# it "accepts <<" do
|
44
|
+
# @addr.values.must_respond_to(:"<<")
|
45
|
+
# end
|
46
|
+
|
47
|
+
# it "accepts strings" do
|
48
|
+
# @addr.values << "A"
|
49
|
+
# @addr.values.length.must_equal(1)
|
50
|
+
# @addr.values << "B"
|
51
|
+
# @addr.values.length.must_equal(2)
|
52
|
+
# @addr.values << "C"
|
53
|
+
# @addr.values << "DDDD"
|
54
|
+
# @addr.values << ["MY","DOG","HAS","FLEAS"]
|
55
|
+
# end
|
56
|
+
|
57
|
+
# it "only accepts strings" do
|
58
|
+
# lambda {@addr.values << 10}.must_raise(ArgumentError)
|
59
|
+
# lambda {@addr.values << 10.0}.must_raise(ArgumentError)
|
60
|
+
# lambda {@addr.values << Object.new}.must_raise(ArgumentError)
|
61
|
+
# lambda {@addr.values << nil}.must_raise(ArgumentError)
|
62
|
+
# lambda {@addr.values << ["MY",:DOG,:HAS,:FLEAS]}.must_raise(ArgumentError)
|
63
|
+
# end
|
64
|
+
|
65
|
+
# it "has last()" do
|
66
|
+
# @addr.values.must_respond_to(:last)
|
67
|
+
# end
|
68
|
+
|
69
|
+
# it "remembers last value" do
|
70
|
+
# @addr.values << "ALL"
|
71
|
+
# @addr.values.last.value.must_equal("ALL")
|
72
|
+
# @addr.values << "GOOD"
|
73
|
+
# @addr.values.last.value.must_equal("GOOD")
|
74
|
+
# @addr.values << "BOYS"
|
75
|
+
# @addr.values.last.value.must_equal("BOYS")
|
76
|
+
# @addr.values << ["GO","TO","THE","FAIR"]
|
77
|
+
# @addr.values.last.value.must_equal("FAIR")
|
78
|
+
# end
|
79
|
+
|
80
|
+
# it "returns ordinal last" do
|
81
|
+
# @addr.values << ("a".."z").to_a
|
82
|
+
# @addr.values.last(5).length.must_equal(5)
|
83
|
+
# end
|
84
|
+
|
85
|
+
# it :does_range do
|
86
|
+
# @addr.values.must_respond_to(:range)
|
87
|
+
|
88
|
+
# ts = Time.now
|
89
|
+
# @addr.values._insert('0',ts-1000)
|
90
|
+
# @addr.values._insert('1',ts-1000)
|
91
|
+
# @addr.values._insert('2',ts-1000)
|
92
|
+
# @addr.values._insert('3',ts-1000)
|
93
|
+
# @addr.values._insert('4',ts-1000)
|
94
|
+
# @addr.values._insert('5',ts-800)
|
95
|
+
# @addr.values._insert('6',ts-800)
|
96
|
+
# @addr.values._insert('7',ts-800)
|
97
|
+
# @addr.values._insert('8',ts-200)
|
98
|
+
# @addr.values._insert('9',ts-10)
|
99
|
+
# @addr.values._insert('10',ts-5)
|
100
|
+
# @addr.values.range(ts-1000,ts).length.must_equal 11
|
101
|
+
# @addr.values.range(ts-800,ts).length.must_equal 6
|
102
|
+
# @addr.values.range(ts-200,ts).length.must_equal 3
|
103
|
+
# @addr.values.range(ts-10,ts).length.must_equal 2
|
104
|
+
# @addr.values.range(ts-5,ts).length.must_equal 1
|
105
|
+
# @addr.values.range(ts-200,ts-11).length.must_equal 1
|
106
|
+
# @addr.values.range(ts-1000,ts-1000).length.must_equal 5
|
107
|
+
|
108
|
+
# @addr.values._insert('0',ts-100)
|
109
|
+
# @addr.values.range(ts-200,ts).length.must_equal 4
|
110
|
+
# end
|
111
|
+
|
112
|
+
# it "does since" do
|
113
|
+
# ts = Time.now
|
114
|
+
# @addr.values._insert('0',ts-1000)
|
115
|
+
# @addr.values._insert('7',ts-800)
|
116
|
+
# @addr.values._insert('8',ts-200)
|
117
|
+
# @addr.values._insert("10",ts-5)
|
118
|
+
# @addr.values.must_respond_to(:since)
|
119
|
+
# @addr.values.since(ts-1000).length.must_equal(4)
|
120
|
+
# @addr.values.since(ts-300).length.must_equal(2)
|
121
|
+
# end
|
122
|
+
|
123
|
+
# it "handles serialized data" do
|
124
|
+
# serial = (1..100).collect{|x|"X" * (100)}.to_json
|
125
|
+
# @addr.values.<< serial
|
126
|
+
# last = @addr.values.last
|
127
|
+
# ary = JSON.parse(last.value.to_s)
|
128
|
+
# ary.length.must_equal 100
|
129
|
+
# ary[-1].must_equal ("X" * 100)
|
130
|
+
# end
|
131
|
+
|
132
|
+
# # it :acts_like_a_string do
|
133
|
+
# # @addr.values << "GET DOWN!"
|
134
|
+
# # last = @addr.values.last
|
135
|
+
# # last.to_s.must_equal ("GET DOWN!")
|
136
|
+
# # end
|
137
|
+
|
138
|
+
|
139
|
+
# # it "does mq" do
|
140
|
+
# # @board.flush_notification_queue
|
141
|
+
# # @board.notification_queue_length.must_equal (0)
|
142
|
+
|
143
|
+
# # pointers = []
|
144
|
+
# # pointers << @board.addr(['0','1','2'])
|
145
|
+
# # pointers << @board.addr(['0','1','3'])
|
146
|
+
# # pointers << @board.addr(['0','1','4'])
|
147
|
+
# # pointers << @board.addr(['0','1','5'])
|
148
|
+
|
149
|
+
# # pointers.each{|p|p<<10}
|
150
|
+
|
151
|
+
# # @board.notification_queue_length.must_equal (4)
|
152
|
+
# # x = @board.pop_from_notification_queue
|
153
|
+
# # x.length.must_equal(3)
|
154
|
+
# # @board.notification_queue_length.must_equal (3)
|
155
|
+
# # x = @board.pop_from_notification_queue
|
156
|
+
# # x = @board.pop_from_notification_queue
|
157
|
+
# # @board.notification_queue_length.must_equal (1)
|
158
|
+
# # x.length.must_equal(3)
|
159
|
+
# # end
|
160
|
+
# end
|