awesome-cheeba 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/Manifest.txt +96 -0
- data/README.txt +33 -0
- data/Rakefile +13 -0
- data/bin/cheeba +68 -0
- data/cheeba.gemspec +37 -0
- data/lib/cheeba.rb +50 -0
- data/lib/cheeba/defaults.rb +69 -0
- data/lib/cheeba/errors.rb +10 -0
- data/lib/cheeba/indicators.rb +25 -0
- data/lib/cheeba/reader.rb +33 -0
- data/lib/cheeba/reader/builder.rb +264 -0
- data/lib/cheeba/reader/format.rb +126 -0
- data/lib/cheeba/reader/node.rb +61 -0
- data/lib/cheeba/reader/parser.rb +64 -0
- data/lib/cheeba/version.rb +3 -0
- data/lib/cheeba/writer.rb +49 -0
- data/lib/cheeba/writer/builder.rb +95 -0
- data/test/files/arrays.cash +15 -0
- data/test/files/blank.cash +0 -0
- data/test/files/comments.cash +17 -0
- data/test/files/hashes.cash +26 -0
- data/test/files/malformed.cash +3 -0
- data/test/files/mixed.cash +12 -0
- data/test/files/split.cash +9 -0
- data/test/test_cheeba.rb +120 -0
- data/test/test_reader.rb +210 -0
- data/test/test_reader_builder.rb +345 -0
- data/test/test_reader_format.rb +316 -0
- data/test/test_reader_parser.rb +190 -0
- data/test/test_writer.rb +133 -0
- data/test/test_writer_builder.rb +150 -0
- metadata +102 -0
@@ -0,0 +1,345 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'minitest/unit'
|
5
|
+
$: << 'lib' << 'test'
|
6
|
+
require 'cheeba/reader/builder'
|
7
|
+
MiniTest::Unit.autorun
|
8
|
+
|
9
|
+
class TestReaderBuilder < MiniTest::Unit::TestCase
|
10
|
+
def setup
|
11
|
+
@builder = Cheeba::Reader::Builder
|
12
|
+
@phash = { :msg => nil,
|
13
|
+
:spc => nil,
|
14
|
+
:key => nil,
|
15
|
+
:val => nil,
|
16
|
+
:ask => false,
|
17
|
+
:asv => false,
|
18
|
+
:opt => {:indent => 2}}
|
19
|
+
@dcs = @phash.merge({:msg => :dcs})
|
20
|
+
@dct = @phash.merge({:msg => :dct})
|
21
|
+
@hpr = @phash.merge({:msg => :hpr})
|
22
|
+
@hky = @phash.merge({:msg => :hky})
|
23
|
+
@arr = @phash.merge({:msg => :arr})
|
24
|
+
@mal = @phash.merge({:msg => :mal})
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# build
|
29
|
+
#
|
30
|
+
def test_build_module
|
31
|
+
assert_kind_of Module, @builder
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_build_array_raise_rootnodeerror
|
35
|
+
hsh = {1 =>{"k1" => "awesome"}, :lst => {1 => "k1"}, :adr => [1,"k1"]}
|
36
|
+
val = "dude"
|
37
|
+
phs = @arr.merge({:val => val, :spc => 0})
|
38
|
+
assert_raises(Cheeba::Reader::Builder::RootNodeError) {@builder.build(hsh, phs)}
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_build_array_with_zero_indent
|
42
|
+
hsh = {}
|
43
|
+
val = "awesome"
|
44
|
+
phs = @arr.merge({:val => val, :spc => 0})
|
45
|
+
@builder.build(hsh, phs)
|
46
|
+
assert_equal(["awesome"], hsh[1])
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_build_array_into_hashkey
|
50
|
+
hsh = {:adr => [1, "k1"], 1 => {"k1" => {}}, :lst =>{}}
|
51
|
+
exp = {"k1" => ["awesome"]}
|
52
|
+
val = "awesome"
|
53
|
+
phs = @arr.merge({:val => val, :spc => 2})
|
54
|
+
@builder.build(hsh, phs)
|
55
|
+
assert_equal exp, hsh[1]
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_build_add_blank
|
59
|
+
hsh = {:adr => [1], 1 => {}, :lst => {}}
|
60
|
+
exp_lst1 = {1 => "#BLANK"}
|
61
|
+
exp_lst2 = {1 => "#BLANK", 2 => "#BLANK"}
|
62
|
+
@builder.build(hsh, {:msg => :bla})
|
63
|
+
assert_equal exp_lst1, hsh[:lst]
|
64
|
+
@builder.build(hsh, {:msg => :bla})
|
65
|
+
assert_equal exp_lst2, hsh[:lst]
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_build_malformed
|
69
|
+
hsh = {:adr => [1], 1 => {}, :lst => {}}
|
70
|
+
exp_lst1 = {1 => "#BLANK"}
|
71
|
+
exp_lst2 = {1 => "#BLANK", 2 => "#BLANK"}
|
72
|
+
@builder.build(hsh, {:msg => :bla})
|
73
|
+
assert_equal exp_lst1, hsh[:lst]
|
74
|
+
@builder.build(hsh, {:msg => :bla})
|
75
|
+
assert_equal exp_lst2, hsh[:lst]
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_build_array_into_array
|
79
|
+
hsh = {:adr => [1, "k1"], 1 => {"k1" => [1,2]}, :lst =>{}}
|
80
|
+
val = "awesome"
|
81
|
+
phs = @arr.merge({:val => val, :spc => 4})
|
82
|
+
@builder.build(hsh, phs)
|
83
|
+
exp_hsh = {"k1" => [1,2,["awesome"]]}
|
84
|
+
exp_adr = [1, "k1", 2]
|
85
|
+
assert_equal exp_hsh, hsh[1]
|
86
|
+
assert_equal exp_adr, hsh[:adr]
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_build_hashpair_into_array
|
90
|
+
hsh = {:adr => [1, 0], 1 => [["awesome"]], :lst =>{}}
|
91
|
+
phs = @hpr.merge({:key => "dude", :val => "fekja", :spc => 2})
|
92
|
+
@builder.build(hsh, phs)
|
93
|
+
exp_hsh = [["awesome", {"dude" => "fekja"}]]
|
94
|
+
exp_adr = [1, 0]
|
95
|
+
assert_equal exp_hsh, hsh[1]
|
96
|
+
assert_equal exp_adr, hsh[:adr]
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_build_hashkey_into_array
|
100
|
+
hsh = {:adr => [1, 0], 1 => [["awesome"]], :lst =>{}}
|
101
|
+
phs = @hky.merge({:key => "dude", :spc => 2})
|
102
|
+
@builder.build(hsh, phs)
|
103
|
+
exp_hsh = [["awesome", {"dude" => {}}]]
|
104
|
+
exp_adr = [1, 0, 1, "dude"]
|
105
|
+
assert_equal exp_hsh, hsh[1]
|
106
|
+
assert_equal exp_adr, hsh[:adr]
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_cur
|
110
|
+
hsh1 = {:adr => [], :lst => {}, 1=>[7]}
|
111
|
+
hsh2 = {:adr => [], :lst => {}, 1=>[7], 2=>[8]}
|
112
|
+
exp_hsh1 = [7]
|
113
|
+
exp_hsh2 = [8]
|
114
|
+
act_hsh1 = @builder.cur(hsh1)
|
115
|
+
act_hsh2 = @builder.cur(hsh2)
|
116
|
+
assert_equal exp_hsh1, act_hsh1
|
117
|
+
assert_equal exp_hsh2, act_hsh2
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_doc_new
|
121
|
+
exp1 = {:adr => [1], :lst => {}, 1=>{}}
|
122
|
+
exp2 = {:adr => [2], :lst => {}, 1=>{}, 2=>{}}
|
123
|
+
hsh = {}
|
124
|
+
@builder.doc_new(hsh)
|
125
|
+
assert_equal exp1, hsh
|
126
|
+
@builder.doc_new(hsh)
|
127
|
+
assert_equal exp2, hsh
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_space
|
131
|
+
assert_equal 1, @builder.index(2,2)
|
132
|
+
assert_equal 1, @builder.index(8,8)
|
133
|
+
assert_equal 3, @builder.index(9,3)
|
134
|
+
assert_equal 0, @builder.index(4,3)
|
135
|
+
assert_equal 0, @builder.index(0,2)
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_to_adr_all_numbers
|
139
|
+
adr = [1, 2, 3]
|
140
|
+
exp = "[1][2][3]"
|
141
|
+
assert exp, @builder.to_adr(adr)
|
142
|
+
end
|
143
|
+
|
144
|
+
##
|
145
|
+
# address object
|
146
|
+
#
|
147
|
+
def test_adr_obj
|
148
|
+
x = "awesome"
|
149
|
+
hsh = {1 => [{"k1" => x}]}
|
150
|
+
adr = [1, 0, "k1"]
|
151
|
+
act = @builder.adr_obj(hsh, adr)
|
152
|
+
assert_equal x, act
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_to_adr_all_string
|
156
|
+
adr = ["k1", "k2"]
|
157
|
+
exp = "['k1']['k2']"
|
158
|
+
assert exp, @builder.to_adr(adr)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_to_adr_mixed
|
162
|
+
adr = ["k1", 1, 2, 3, "k2", 4]
|
163
|
+
exp = "['k1'][1][2][3]['k2'][4]"
|
164
|
+
assert exp, @builder.to_adr(adr)
|
165
|
+
end
|
166
|
+
|
167
|
+
def test_add_to_list
|
168
|
+
lst = {}
|
169
|
+
exp_lst1 = {1 => "k1"}
|
170
|
+
exp_lst2 = {1 => "k1", 2 => "k1,k2"}
|
171
|
+
exp_lst3 = {1 => "k1", 2 => "k1,k2", 3 => "string"}
|
172
|
+
@builder.add_to_list(lst, ["k1"])
|
173
|
+
assert_equal exp_lst1, lst
|
174
|
+
@builder.add_to_list(lst, ["k1","k2"])
|
175
|
+
assert_equal exp_lst2, lst
|
176
|
+
@builder.add_to_list(lst, "string")
|
177
|
+
assert_equal exp_lst3, lst
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_update_index_greater_than_before
|
181
|
+
# index > length
|
182
|
+
idx = 5
|
183
|
+
adr = [1,2,3,4,5]
|
184
|
+
exp = "gt"
|
185
|
+
act = @builder.update(adr, idx)
|
186
|
+
assert_equal 5, adr.length
|
187
|
+
assert_equal exp, act
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_update_index_same_as_before
|
191
|
+
# index == length; remain the same
|
192
|
+
idx = 4
|
193
|
+
adr = [1,2,3,4,5]
|
194
|
+
exp = "eq"
|
195
|
+
act = @builder.update(adr, idx)
|
196
|
+
assert_equal 5, adr.length
|
197
|
+
assert_equal exp, act
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_update_index_less_than_before
|
201
|
+
# remain the same because 0 is the doc
|
202
|
+
idx = 3
|
203
|
+
adr = [1,2,3,4,5]
|
204
|
+
exp_msg = "lt"
|
205
|
+
exp_adr = [1,2,3,4]
|
206
|
+
act = @builder.update(adr, idx)
|
207
|
+
assert_equal 4, adr.length
|
208
|
+
assert_equal exp_msg, act
|
209
|
+
assert_equal exp_adr, adr
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_update_zero_index
|
213
|
+
idx = 0
|
214
|
+
adr = [1,2,3,4,5]
|
215
|
+
exp_msg = "lt"
|
216
|
+
exp_adr = [1]
|
217
|
+
act = @builder.update(adr, idx)
|
218
|
+
assert_equal 1, adr.length
|
219
|
+
assert_equal exp_msg, act
|
220
|
+
assert_equal exp_adr, adr
|
221
|
+
end
|
222
|
+
|
223
|
+
def test_blank_line
|
224
|
+
hsh = {:lst => {}}
|
225
|
+
exp_lst1 = {1=>"#BLANK"}
|
226
|
+
exp_lst2 = {1=>"#BLANK",2=>"#BLANK"}
|
227
|
+
@builder.blank(hsh[:lst])
|
228
|
+
assert_equal exp_lst1, hsh[:lst]
|
229
|
+
@builder.blank(hsh[:lst])
|
230
|
+
assert_equal exp_lst2, hsh[:lst]
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_doc_start
|
234
|
+
hsh = {}
|
235
|
+
exp_lst1 = {1=>"#DOC_START"}
|
236
|
+
exp_lst2 = {1=>"#DOC_START",2=>"#DOC_START"}
|
237
|
+
@builder.doc_start(hsh)
|
238
|
+
assert_equal exp_lst1, hsh[:lst]
|
239
|
+
@builder.doc_start(hsh)
|
240
|
+
assert_equal exp_lst2, hsh[:lst]
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_doc_term
|
244
|
+
hsh = {:adr => [], :lst => {}}
|
245
|
+
exp_lst1 = {1 => "#DOC_TERM"}
|
246
|
+
exp_lst2 = {1 => "#DOC_TERM", 2 => "#DOC_TERM"}
|
247
|
+
@builder.doc_term(hsh)
|
248
|
+
assert_equal exp_lst1, hsh[:lst]
|
249
|
+
@builder.doc_term(hsh)
|
250
|
+
assert_equal exp_lst2, hsh[:lst]
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_hashkey_into_hash
|
254
|
+
las = {}
|
255
|
+
adr = []
|
256
|
+
@builder.hsh_key(las, adr, "k1")
|
257
|
+
exp_las = {"k1" => {}}
|
258
|
+
exp_adr = ["k1"]
|
259
|
+
assert_equal exp_las, las
|
260
|
+
assert_equal exp_adr, adr
|
261
|
+
end
|
262
|
+
|
263
|
+
def test_hashkey_into_array
|
264
|
+
las = []
|
265
|
+
adr = []
|
266
|
+
@builder.hsh_key(las, adr, "k1")
|
267
|
+
exp_las = [{"k1" => {}}]
|
268
|
+
exp_adr = [0,"k1"]
|
269
|
+
assert_equal exp_las, las
|
270
|
+
assert_equal exp_adr, adr
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_hashpair_into_hash
|
274
|
+
las = {}
|
275
|
+
exp1 = {"k1" => "awesome"}
|
276
|
+
exp2 = {"k1" => "awesome", "k2" => "dude"}
|
277
|
+
@builder.hsh_pair(las, "k1", "awesome")
|
278
|
+
assert_equal exp1, las
|
279
|
+
@builder.hsh_pair(las, "k2", "dude")
|
280
|
+
assert_equal exp2, las
|
281
|
+
end
|
282
|
+
|
283
|
+
def test_hashpair_into_array
|
284
|
+
las = []
|
285
|
+
exp1 = [{"k1" => "awesome"}]
|
286
|
+
exp2 = [{"k1" => "awesome"}, {"k2" => "dude"}]
|
287
|
+
@builder.hsh_pair(las, "k1", "awesome")
|
288
|
+
assert_equal exp1, las
|
289
|
+
@builder.hsh_pair(las, "k2", "dude")
|
290
|
+
assert_equal exp2, las
|
291
|
+
end
|
292
|
+
|
293
|
+
def test_comment
|
294
|
+
lst = {}
|
295
|
+
exp = {1 => "#COMMENT: awesome"}
|
296
|
+
@builder.comment(lst, "awesome")
|
297
|
+
assert_equal exp, lst
|
298
|
+
exp = {1 => "#COMMENT: awesome", 2 => "#COMMENT: dude"}
|
299
|
+
@builder.comment(lst, "dude")
|
300
|
+
assert_equal exp, lst
|
301
|
+
end
|
302
|
+
|
303
|
+
def test_array_into_hash
|
304
|
+
las = {}
|
305
|
+
adr = []
|
306
|
+
exp_las = {}
|
307
|
+
exp_adr = []
|
308
|
+
val = "awesome"
|
309
|
+
@builder.array_new(las, adr, val)
|
310
|
+
assert_equal exp_las, las
|
311
|
+
assert_equal exp_adr, adr
|
312
|
+
end
|
313
|
+
|
314
|
+
def test_array_into_array
|
315
|
+
las = [3]
|
316
|
+
adr = []
|
317
|
+
val = "awesome"
|
318
|
+
exp_las = [3,["awesome"]]
|
319
|
+
exp_adr = [1]
|
320
|
+
@builder.array_new(las, adr, val)
|
321
|
+
assert_equal exp_las, las
|
322
|
+
assert_equal exp_adr, adr
|
323
|
+
end
|
324
|
+
|
325
|
+
def test_add_value_to_array
|
326
|
+
las = []
|
327
|
+
adr = []
|
328
|
+
@builder.array_val(las, 1)
|
329
|
+
assert_equal [], adr
|
330
|
+
assert_equal [1], las
|
331
|
+
@builder.array_val(las, 2)
|
332
|
+
assert_equal [], adr
|
333
|
+
assert_equal [1,2], las
|
334
|
+
end
|
335
|
+
|
336
|
+
def test_malformed
|
337
|
+
lst = {}
|
338
|
+
exp = {1 => "#MALFORMED: string1"}
|
339
|
+
@builder.malformed(lst, "string1")
|
340
|
+
assert_equal exp, lst
|
341
|
+
exp = {1 => "#MALFORMED: string1", 2 => "#MALFORMED: string2"}
|
342
|
+
@builder.malformed(lst, "string2")
|
343
|
+
assert_equal exp, lst
|
344
|
+
end
|
345
|
+
end
|
@@ -0,0 +1,316 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'minitest/unit'
|
5
|
+
$: << 'lib' << 'test'
|
6
|
+
require 'cheeba/reader/format'
|
7
|
+
require 'cheeba/defaults'
|
8
|
+
MiniTest::Unit.autorun
|
9
|
+
|
10
|
+
class TestReaderFormat < MiniTest::Unit::TestCase
|
11
|
+
def setup
|
12
|
+
@format = Cheeba::Reader::Format
|
13
|
+
@opt = {}
|
14
|
+
Cheeba::Defaults.options.each_key {|k| @opt[k] = false}
|
15
|
+
@phs = { :msg => nil,
|
16
|
+
:spc => nil,
|
17
|
+
:key => nil,
|
18
|
+
:val => nil,
|
19
|
+
:ask => nil,
|
20
|
+
:asv => nil,
|
21
|
+
:opt => @opt}
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# parsed_hash => formatted_hash
|
26
|
+
#
|
27
|
+
def test_format_basic
|
28
|
+
phs = @phs.merge({:key => "1", :val => "1", :opt => @opt})
|
29
|
+
act = @format.format(phs)
|
30
|
+
assert_equal Hash, act.class
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_adjust_options
|
34
|
+
phs1 = {:opt => {:auto_sym => true}}
|
35
|
+
phs2 = {:opt => {:auto_sym => false}}
|
36
|
+
@format.adjust_options(phs1)
|
37
|
+
@format.adjust_options(phs2)
|
38
|
+
assert phs1[:opt][:auto_sym_keys]
|
39
|
+
assert phs1[:opt][:auto_sym_vals]
|
40
|
+
assert !phs2[:opt][:auto_sym_keys]
|
41
|
+
assert !phs2[:opt][:auto_sym_vals]
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# strip different things
|
46
|
+
#
|
47
|
+
def test_strip
|
48
|
+
key = " awesome "
|
49
|
+
val = " awesome "
|
50
|
+
opt1 = {:strip => true}
|
51
|
+
opt2 = @opt.clone
|
52
|
+
act_phs1 = @phs.merge({:key => key, :val => val, :opt => opt1})
|
53
|
+
act_phs2 = @phs.merge({:key => key, :val => val, :opt => opt2})
|
54
|
+
exp_key1 = "awesome"
|
55
|
+
exp_val1 = "awesome"
|
56
|
+
exp_key2 = key
|
57
|
+
exp_val2 = val
|
58
|
+
@format.format(act_phs1)
|
59
|
+
@format.format(act_phs2)
|
60
|
+
assert_equal exp_key1, act_phs1[:key]
|
61
|
+
assert_equal exp_val1, act_phs1[:val]
|
62
|
+
assert_equal exp_key2, act_phs2[:key]
|
63
|
+
assert_equal exp_val2, act_phs2[:val]
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_strip_keys
|
67
|
+
key = " awesome "
|
68
|
+
opt1 = {:strip_keys => true}
|
69
|
+
opt2 = @opt.clone
|
70
|
+
act_phs1 = @phs.merge({:key => key, :opt => opt1})
|
71
|
+
act_phs2 = @phs.merge({:key => key, :opt => opt2})
|
72
|
+
exp_key1 = "awesome"
|
73
|
+
exp_key2 = key
|
74
|
+
@format.format(act_phs1)
|
75
|
+
@format.format(act_phs2)
|
76
|
+
assert_equal exp_key1, act_phs1[:key]
|
77
|
+
assert_equal exp_key2, act_phs2[:key]
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_strip_vals
|
81
|
+
val = " awesome "
|
82
|
+
opt1 = {:strip_vals => true}
|
83
|
+
opt2 = @opt.clone
|
84
|
+
act_phs1 = @phs.merge({:val => val, :opt => opt1})
|
85
|
+
act_phs2 = @phs.merge({:val => val, :opt => opt2})
|
86
|
+
exp_val1 = "awesome"
|
87
|
+
exp_val2 = val
|
88
|
+
@format.format(act_phs1)
|
89
|
+
@format.format(act_phs2)
|
90
|
+
assert_equal exp_val1, act_phs1[:val]
|
91
|
+
assert_equal exp_val2, act_phs2[:val]
|
92
|
+
end
|
93
|
+
|
94
|
+
#
|
95
|
+
# convert true, false in strings
|
96
|
+
#
|
97
|
+
def test_true_keys
|
98
|
+
opt1 = @opt.clone
|
99
|
+
opt2 = @opt.merge({:auto_true_keys => true})
|
100
|
+
opt3 = @opt.merge({:auto_true => true})
|
101
|
+
opt4 = @opt.clone
|
102
|
+
opt5 = @opt.merge({:auto_true_keys => true})
|
103
|
+
opt6 = @opt.merge({:auto_true => true})
|
104
|
+
act_phs1 = @phs.merge({:key => "true", :opt => opt1})
|
105
|
+
act_phs2 = @phs.merge({:key => "true", :opt => opt2})
|
106
|
+
act_phs3 = @phs.merge({:key => "true", :opt => opt3})
|
107
|
+
act_phs4 = @phs.merge({:key => "false", :opt => opt4})
|
108
|
+
act_phs5 = @phs.merge({:key => "false", :opt => opt5})
|
109
|
+
act_phs6 = @phs.merge({:key => "false", :opt => opt6})
|
110
|
+
@format.key_to_true(act_phs1)
|
111
|
+
@format.key_to_true(act_phs2)
|
112
|
+
@format.key_to_true(act_phs3)
|
113
|
+
@format.key_to_true(act_phs4)
|
114
|
+
@format.key_to_true(act_phs5)
|
115
|
+
@format.key_to_true(act_phs6)
|
116
|
+
assert_equal "true", act_phs1[:key]
|
117
|
+
assert_equal true, act_phs2[:key]
|
118
|
+
assert_equal true, act_phs3[:key]
|
119
|
+
assert_equal "false", act_phs4[:key]
|
120
|
+
assert_equal false, act_phs5[:key]
|
121
|
+
assert_equal false, act_phs6[:key]
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_true_vals
|
125
|
+
opt1 = @opt.clone
|
126
|
+
opt2 = @opt.merge({:auto_true_vals => true})
|
127
|
+
opt3 = @opt.merge({:auto_true => true})
|
128
|
+
opt4 = @opt.clone
|
129
|
+
opt5 = @opt.merge({:auto_true_vals => true})
|
130
|
+
opt6 = @opt.merge({:auto_true => true})
|
131
|
+
act_phs1 = @phs.merge({:val => "true", :opt => opt1})
|
132
|
+
act_phs2 = @phs.merge({:val => "true", :opt => opt2})
|
133
|
+
act_phs3 = @phs.merge({:val => "true", :opt => opt3})
|
134
|
+
act_phs4 = @phs.merge({:val => "false", :opt => opt4})
|
135
|
+
act_phs5 = @phs.merge({:val => "false", :opt => opt5})
|
136
|
+
act_phs6 = @phs.merge({:val => "false", :opt => opt6})
|
137
|
+
@format.val_to_true(act_phs1)
|
138
|
+
@format.val_to_true(act_phs2)
|
139
|
+
@format.val_to_true(act_phs3)
|
140
|
+
@format.val_to_true(act_phs4)
|
141
|
+
@format.val_to_true(act_phs5)
|
142
|
+
@format.val_to_true(act_phs6)
|
143
|
+
assert_equal "true", act_phs1[:val]
|
144
|
+
assert_equal true, act_phs2[:val]
|
145
|
+
assert_equal true, act_phs3[:val]
|
146
|
+
assert_equal "false", act_phs4[:val]
|
147
|
+
assert_equal false, act_phs5[:val]
|
148
|
+
assert_equal false, act_phs6[:val]
|
149
|
+
end
|
150
|
+
|
151
|
+
#
|
152
|
+
# symbolize key
|
153
|
+
#
|
154
|
+
def test_key_to_sym
|
155
|
+
exp_key1 = "awesome"
|
156
|
+
exp_key2 = "awesome".to_sym
|
157
|
+
opt1 = @opt.clone
|
158
|
+
opt2 = @opt.merge({:auto_sym_keys => true})
|
159
|
+
opt3 = @opt.merge({:symbolize => true})
|
160
|
+
opt4 = @opt.merge({:symbolize_keys => true})
|
161
|
+
act_phs1 = @phs.merge({:key => "awesome", :opt => opt1})
|
162
|
+
act_phs2 = @phs.merge({:key => "awesome", :opt => opt2})
|
163
|
+
act_phs3 = @phs.merge({:key => "awesome", :opt => opt3})
|
164
|
+
act_phs4 = @phs.merge({:key => "awesome", :opt => opt4})
|
165
|
+
@format.key_to_sym(act_phs1)
|
166
|
+
@format.key_to_sym(act_phs2)
|
167
|
+
@format.key_to_sym(act_phs3)
|
168
|
+
@format.key_to_sym(act_phs4)
|
169
|
+
assert_equal exp_key1, act_phs1[:key]
|
170
|
+
assert_equal exp_key1, act_phs2[:key]
|
171
|
+
assert_equal exp_key2, act_phs3[:key]
|
172
|
+
assert_equal exp_key2, act_phs4[:key]
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_key_to_sym_number_in_string
|
176
|
+
exp_key1 = "411"
|
177
|
+
exp_key2 = "411".to_sym
|
178
|
+
opt1 = @opt.clone
|
179
|
+
opt2 = @opt.merge({:auto_sym_keys => true})
|
180
|
+
opt3 = @opt.merge({:symbolize => true})
|
181
|
+
opt4 = @opt.merge({:symbolize_keys => true})
|
182
|
+
act_phs1 = @phs.merge({:key => "411", :opt => opt1})
|
183
|
+
act_phs2 = @phs.merge({:key => "411", :opt => opt2})
|
184
|
+
act_phs3 = @phs.merge({:key => "411", :opt => opt3})
|
185
|
+
act_phs4 = @phs.merge({:key => "411", :opt => opt4})
|
186
|
+
@format.key_to_sym(act_phs1)
|
187
|
+
@format.key_to_sym(act_phs2)
|
188
|
+
@format.key_to_sym(act_phs3)
|
189
|
+
@format.key_to_sym(act_phs4)
|
190
|
+
assert_equal exp_key1, act_phs1[:key]
|
191
|
+
assert_equal exp_key1, act_phs2[:key]
|
192
|
+
assert_equal exp_key2, act_phs3[:key]
|
193
|
+
assert_equal exp_key2, act_phs4[:key]
|
194
|
+
end
|
195
|
+
|
196
|
+
#
|
197
|
+
# symbolize val
|
198
|
+
#
|
199
|
+
def test_val_to_sym
|
200
|
+
exp_val1 = "awesome"
|
201
|
+
exp_val2 = "awesome".to_sym
|
202
|
+
opt1 = @opt.clone
|
203
|
+
opt2 = @opt.merge({:auto_sym_vals => true})
|
204
|
+
opt3 = @opt.merge({:symbolize => true})
|
205
|
+
opt4 = @opt.merge({:symbolize_vals => true})
|
206
|
+
act_phs1 = @phs.merge({:val => "awesome", :opt => opt1})
|
207
|
+
act_phs2 = @phs.merge({:val => "awesome", :opt => opt2})
|
208
|
+
act_phs3 = @phs.merge({:val => "awesome", :opt => opt3})
|
209
|
+
act_phs4 = @phs.merge({:val => "awesome", :opt => opt4})
|
210
|
+
@format.val_to_sym(act_phs1)
|
211
|
+
@format.val_to_sym(act_phs2)
|
212
|
+
@format.val_to_sym(act_phs3)
|
213
|
+
@format.val_to_sym(act_phs4)
|
214
|
+
assert_equal exp_val1, act_phs1[:val]
|
215
|
+
assert_equal exp_val1, act_phs2[:val]
|
216
|
+
assert_equal exp_val2, act_phs3[:val]
|
217
|
+
assert_equal exp_val2, act_phs4[:val]
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_val_to_sym_number_in_string
|
221
|
+
exp_val1 = "411"
|
222
|
+
exp_val2 = "411".to_sym
|
223
|
+
opt1 = @opt.clone
|
224
|
+
opt2 = @opt.merge({:auto_sym_vals => true})
|
225
|
+
opt3 = @opt.merge({:symbolize => true})
|
226
|
+
opt4 = @opt.merge({:symbolize_vals => true})
|
227
|
+
act_phs1 = @phs.merge({:val => "411", :opt => opt1})
|
228
|
+
act_phs2 = @phs.merge({:val => "411", :opt => opt2})
|
229
|
+
act_phs3 = @phs.merge({:val => "411", :opt => opt3})
|
230
|
+
act_phs4 = @phs.merge({:val => "411", :opt => opt4})
|
231
|
+
@format.val_to_sym(act_phs1)
|
232
|
+
@format.val_to_sym(act_phs2)
|
233
|
+
@format.val_to_sym(act_phs3)
|
234
|
+
@format.val_to_sym(act_phs4)
|
235
|
+
assert_equal exp_val1, act_phs1[:val]
|
236
|
+
assert_equal exp_val1, act_phs2[:val]
|
237
|
+
assert_equal exp_val2, act_phs3[:val]
|
238
|
+
assert_equal exp_val2, act_phs4[:val]
|
239
|
+
end
|
240
|
+
|
241
|
+
#
|
242
|
+
# key is parsed as string, try to_i
|
243
|
+
#
|
244
|
+
def test_key_to_int_string
|
245
|
+
exp_key1 = "411"
|
246
|
+
exp_key2 = 411
|
247
|
+
exp_key3 = "411".to_sym
|
248
|
+
opt1 = @opt.clone
|
249
|
+
opt2 = @opt.merge({:int => true})
|
250
|
+
opt3 = @opt.merge({:int_keys => true})
|
251
|
+
opt4 = @opt.merge({:int => true})
|
252
|
+
opt5 = @opt.merge({:int_keys => true})
|
253
|
+
act_phs1 = @phs.merge({:key => "411", :opt => opt1})
|
254
|
+
act_phs2 = @phs.merge({:key => "411", :opt => opt2})
|
255
|
+
act_phs3 = @phs.merge({:key => "411", :opt => opt3})
|
256
|
+
act_phs4 = @phs.merge({:key => "411".to_sym, :opt => opt4})
|
257
|
+
act_phs5 = @phs.merge({:key => "411".to_sym, :opt => opt5})
|
258
|
+
@format.key_to_int(act_phs1)
|
259
|
+
@format.key_to_int(act_phs2)
|
260
|
+
@format.key_to_int(act_phs3)
|
261
|
+
@format.key_to_int(act_phs4)
|
262
|
+
@format.key_to_int(act_phs5)
|
263
|
+
assert_equal exp_key1, act_phs1[:key]
|
264
|
+
assert_equal exp_key2, act_phs2[:key]
|
265
|
+
assert_equal exp_key2, act_phs3[:key]
|
266
|
+
assert_equal exp_key3, act_phs4[:key]
|
267
|
+
assert_equal exp_key3, act_phs5[:key]
|
268
|
+
end
|
269
|
+
|
270
|
+
#
|
271
|
+
# val is parsed as string, try to_i
|
272
|
+
#
|
273
|
+
def test_val_to_int
|
274
|
+
exp_val1 = "411"
|
275
|
+
exp_val2 = 411
|
276
|
+
exp_val3 = "411".to_sym
|
277
|
+
opt1 = @opt.clone
|
278
|
+
opt2 = @opt.merge({:int => true})
|
279
|
+
opt3 = @opt.merge({:int_vals => true})
|
280
|
+
opt4 = @opt.merge({:int => true})
|
281
|
+
opt5 = @opt.merge({:int_vals => true})
|
282
|
+
act_phs1 = @phs.merge({:val => "411", :opt => opt1})
|
283
|
+
act_phs2 = @phs.merge({:val => "411", :opt => opt2})
|
284
|
+
act_phs3 = @phs.merge({:val => "411", :opt => opt3})
|
285
|
+
act_phs4 = @phs.merge({:val => "411".to_sym, :opt => opt4})
|
286
|
+
act_phs5 = @phs.merge({:val => "411".to_sym, :opt => opt5})
|
287
|
+
@format.val_to_int(act_phs1)
|
288
|
+
@format.val_to_int(act_phs2)
|
289
|
+
@format.val_to_int(act_phs3)
|
290
|
+
@format.val_to_int(act_phs4)
|
291
|
+
@format.val_to_int(act_phs5)
|
292
|
+
assert_equal exp_val1, act_phs1[:val]
|
293
|
+
assert_equal exp_val2, act_phs2[:val]
|
294
|
+
assert_equal exp_val2, act_phs3[:val]
|
295
|
+
assert_equal exp_val3, act_phs4[:val]
|
296
|
+
assert_equal exp_val3, act_phs5[:val]
|
297
|
+
end
|
298
|
+
|
299
|
+
#
|
300
|
+
# returns Int if String is convertable
|
301
|
+
#
|
302
|
+
def test_string_to_int
|
303
|
+
str1 = ""
|
304
|
+
str2 = "awesome"
|
305
|
+
str3 = "123awesome"
|
306
|
+
str4 = "123"
|
307
|
+
exp1 = ""
|
308
|
+
exp2 = "awesome"
|
309
|
+
exp3 = "123awesome"
|
310
|
+
exp4 = 123
|
311
|
+
act1 = @format.string_to_int(str1)
|
312
|
+
act2 = @format.string_to_int(str2)
|
313
|
+
act3 = @format.string_to_int(str3)
|
314
|
+
act4 = @format.string_to_int(str4)
|
315
|
+
end
|
316
|
+
end
|