simple-json 1.0.1 → 1.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.
- 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')
|