simple-json 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/simple_json_db.rb +27 -1
- data/test/tc_simple_json.rb +83 -2
- metadata +1 -1
data/lib/simple_json_db.rb
CHANGED
@@ -84,7 +84,33 @@ class SimpleJSON
|
|
84
84
|
if v.nil? || v == true || v == false
|
85
85
|
r_data
|
86
86
|
else
|
87
|
-
v.to_a.inject(Hash.new)
|
87
|
+
v.to_a.inject(Hash.new) do |mem,obj|
|
88
|
+
if obj[1].nil? || obj[1] == true || obj[1] == false
|
89
|
+
mem[obj[0]] = r_data[obj[0]]
|
90
|
+
elsif obj[1].is_a?(Integer)
|
91
|
+
mem[obj[0]] = r_data[obj[0]][obj[1]]
|
92
|
+
elsif obj[1] == 'first'
|
93
|
+
mem[obj[0]] = r_data[obj[0]].first
|
94
|
+
elsif obj[1] == 'last'
|
95
|
+
mem[obj[0]] = r_data[obj[0]].last
|
96
|
+
elsif obj[1] =~ /^([^\.]+)(\.\.\.*)([^\.]+)$/
|
97
|
+
one = $1.to_i; three = $3.to_i
|
98
|
+
if one.is_a?(Integer) and three.is_a?(Integer)
|
99
|
+
if $2 == '..'
|
100
|
+
mem[obj[0]] = r_data[obj[0]][one..three]
|
101
|
+
elsif $2 == '...'
|
102
|
+
mem[obj[0]] = r_data[obj[0]][one...three]
|
103
|
+
else
|
104
|
+
mem[obj[0]] = {'error' => "Bad slice syntax, you wrote: < #{$2} >, should have been < .. > or < ... >."}
|
105
|
+
end
|
106
|
+
else
|
107
|
+
mem[obj[0]] = {'error' => "Bad slice syntax, must be 2 integers with dots in between... i.e. < 11..14 >"}
|
108
|
+
end
|
109
|
+
else
|
110
|
+
mem[obj[0]] = {'error' => "Unknown key fetching syntax: #{obj[1].inspect}"}
|
111
|
+
end
|
112
|
+
mem
|
113
|
+
end
|
88
114
|
end
|
89
115
|
end
|
90
116
|
|
data/test/tc_simple_json.rb
CHANGED
@@ -129,7 +129,88 @@ class TestSimpleJSONDB < Test::Unit::TestCase
|
|
129
129
|
assert(o_data[query][@@id].size == 2)
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
132
|
+
def test_13_get_array_item
|
133
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item1'}}))[2])
|
134
|
+
assert(o_data[@@id] == true,'add more again?')
|
135
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item2'}}))[2])
|
136
|
+
assert(o_data[@@id] == true,'add more again?')
|
137
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item3'}}))[2])
|
138
|
+
assert(o_data[@@id] == true,'add more again?')
|
139
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item4'}}))[2])
|
140
|
+
assert(o_data[@@id] == true,'add more again?')
|
141
|
+
|
142
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 0}}))[2])
|
143
|
+
assert(o_data.is_a?(Hash))
|
144
|
+
assert(o_data.include?(@@id))
|
145
|
+
assert(o_data[@@id].include?('list'))
|
146
|
+
assert(o_data[@@id]['list'] == 'item1')
|
147
|
+
|
148
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 1}}))[2])
|
149
|
+
assert(o_data[@@id]['list'] == 'item2')
|
150
|
+
|
151
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 2}}))[2])
|
152
|
+
assert(o_data[@@id]['list'] == 'item3')
|
153
|
+
|
154
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 3}}))[2])
|
155
|
+
assert(o_data[@@id]['list'] == 'item4')
|
156
|
+
|
157
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 'first'}}))[2])
|
158
|
+
assert(o_data[@@id]['list'] == 'item1')
|
159
|
+
|
160
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 'last'}}))[2])
|
161
|
+
assert(o_data[@@id]['list'] == 'item4')
|
162
|
+
|
163
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => '2..-1'}}))[2])
|
164
|
+
assert(o_data[@@id]['list'].is_a?(Array))
|
165
|
+
assert(o_data[@@id]['list'].size == 2)
|
166
|
+
assert(o_data[@@id]['list'][0] == 'item3')
|
167
|
+
assert(o_data[@@id]['list'][1] == 'item4')
|
168
|
+
|
169
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => '0...2'}}))[2])
|
170
|
+
assert(o_data[@@id]['list'].size == 2)
|
171
|
+
assert(o_data[@@id]['list'][0] == 'item1')
|
172
|
+
assert(o_data[@@id]['list'][1] == 'item2')
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_14_query_array_item
|
176
|
+
query = "['name' = '#{@@id}']"
|
177
|
+
|
178
|
+
t_data = {query => {'list' => 0}}
|
179
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
180
|
+
assert(o_data[query][@@id]['list'] == 'item1')
|
181
|
+
|
182
|
+
t_data = {query => {'list' => 1}}
|
183
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
184
|
+
assert(o_data[query][@@id]['list'] == 'item2')
|
185
|
+
|
186
|
+
t_data = {query => {'list' => 2}}
|
187
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
188
|
+
assert(o_data[query][@@id]['list'] == 'item3')
|
189
|
+
|
190
|
+
t_data = {query => {'list' => 3}}
|
191
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
192
|
+
assert(o_data[query][@@id]['list'] == 'item4')
|
193
|
+
|
194
|
+
t_data = {query => {'list' => 'first'}}
|
195
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
196
|
+
assert(o_data[query][@@id]['list'] == 'item1')
|
197
|
+
|
198
|
+
t_data = {query => {'list' => 'last'}}
|
199
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
200
|
+
assert(o_data[query][@@id]['list'] == 'item4')
|
201
|
+
|
202
|
+
t_data = {query => {'list' => '2..-1'}}
|
203
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
204
|
+
assert(o_data[query][@@id]['list'][0] == 'item3')
|
205
|
+
assert(o_data[query][@@id]['list'][1] == 'item4')
|
206
|
+
|
207
|
+
t_data = {query => {'list' => '0...2'}}
|
208
|
+
o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
|
209
|
+
assert(o_data[query][@@id]['list'][0] == 'item1')
|
210
|
+
assert(o_data[query][@@id]['list'][1] == 'item2')
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_20_delete
|
133
214
|
o_data = JSON.parse( SimpleJSON.rack_mock(:delete, JSON.generate({@@id => nil}))[2])
|
134
215
|
assert(o_data.is_a?(Hash))
|
135
216
|
assert(o_data.size == 1)
|
@@ -144,7 +225,7 @@ class TestSimpleJSONDB < Test::Unit::TestCase
|
|
144
225
|
assert(o_data[@@id].empty?)
|
145
226
|
end
|
146
227
|
|
147
|
-
def
|
228
|
+
def test_21_other_config
|
148
229
|
domain = 'other_test_domain'
|
149
230
|
o_data = JSON.parse( SimpleJSON.rack_mock(:delete, JSON.generate({@@id => nil}), {'AMAZON_DOMAIN' => domain})[2])
|
150
231
|
assert(@@sdb.list_domains[0].include?(domain), 'other domain')
|