cheeba 1.0.4

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.
Files changed (95) hide show
  1. data/.git/COMMIT_EDITMSG +1 -0
  2. data/.git/HEAD +1 -0
  3. data/.git/config +9 -0
  4. data/.git/description +1 -0
  5. data/.git/hooks/applypatch-msg.sample +15 -0
  6. data/.git/hooks/commit-msg.sample +24 -0
  7. data/.git/hooks/post-commit.sample +8 -0
  8. data/.git/hooks/post-receive.sample +15 -0
  9. data/.git/hooks/post-update.sample +8 -0
  10. data/.git/hooks/pre-applypatch.sample +14 -0
  11. data/.git/hooks/pre-commit.sample +18 -0
  12. data/.git/hooks/pre-rebase.sample +169 -0
  13. data/.git/hooks/prepare-commit-msg.sample +36 -0
  14. data/.git/hooks/update.sample +107 -0
  15. data/.git/index +0 -0
  16. data/.git/info/exclude +7 -0
  17. data/.git/logs/HEAD +7 -0
  18. data/.git/logs/refs/heads/master +6 -0
  19. data/.git/logs/refs/remotes/origin/master +6 -0
  20. data/.git/objects/02/38dae53aee5cb4ea157a3f036b93868ede9593 +0 -0
  21. data/.git/objects/02/9cafaafb83e528381f0f2f02c6f23799bd1942 +0 -0
  22. data/.git/objects/07/c654f9ff6c65626369b061c595be42ccdd6cd7 +0 -0
  23. data/.git/objects/07/dbbace3b24b2d635d2fb637581931d573fc75c +0 -0
  24. data/.git/objects/08/ce1195151ff5a51573a871947ecd913fb5aa0f +1 -0
  25. data/.git/objects/0c/ad63d44505490e1a30ad075099a25020d7a7c5 +0 -0
  26. data/.git/objects/12/215629eba6a8f0fcd849923e98a471984521e1 +2 -0
  27. data/.git/objects/18/60fee2fadb59a6cbcb7f7dd0a6f6dc3b56ac79 +0 -0
  28. data/.git/objects/1e/1800628b80bef5a8043e4adacd6ebc6bab9aa1 +0 -0
  29. data/.git/objects/27/97bc2b3d72dc6d77b7bd07f1cca96f7e06b4ed +0 -0
  30. data/.git/objects/28/41d3f97c8aa8c942a613e1c69ed4280d78cf0a +0 -0
  31. data/.git/objects/29/f0c4074f9ecc894edd7ed507a1a92499838a6d +0 -0
  32. data/.git/objects/2a/8948661c63f2bef24f330638d239c88d5d0c2e +0 -0
  33. data/.git/objects/3f/7142cf3878c65e71b54d3572d82837d20f2aa7 +4 -0
  34. data/.git/objects/40/8c36a3103bc77e90db86dc06b1598e3baa4c2d +0 -0
  35. data/.git/objects/42/eb5558727a2144e7c5e997d3e6aea5486eaf37 +0 -0
  36. data/.git/objects/4c/6098fe05db7126c8a3c97f463910e5cc398630 +0 -0
  37. data/.git/objects/51/6902dffff8d29fa2f89979b9cd81ab275e1c67 +0 -0
  38. data/.git/objects/5b/502f8e20a0556c22727b504108a2dc36d7cbed +2 -0
  39. data/.git/objects/67/c3fb20cfae5320d83c9ebf2b85c1a3ef9b706b +0 -0
  40. data/.git/objects/72/7df703ac52c4ff97aa452feee27b9990430a11 +5 -0
  41. data/.git/objects/74/bc14252b2148d11877025d7f445d2fa686e7e9 +0 -0
  42. data/.git/objects/78/9ac5e1ca6a70ec3b8a11344e6f4a03e440f309 +0 -0
  43. data/.git/objects/7a/46bd1887d1a793094da678ded3b53b0208b826 +0 -0
  44. data/.git/objects/8d/77306c0d13e98da74ddf48002674fced7e1618 +2 -0
  45. data/.git/objects/94/36859cb89dd0bbddab77ed0810860e979b1c05 +0 -0
  46. data/.git/objects/ab/454c9537f329aecaedae0586c6d61146a7f819 +0 -0
  47. data/.git/objects/b9/3b5dde3104bb495dc0d2970bbe617dafb2f084 +0 -0
  48. data/.git/objects/be/197d3b2c14a52300cc4553bf2004ef3c45a45b +0 -0
  49. data/.git/objects/be/8e3e0ab878ffcb0456ae4cf66861888d933bf5 +0 -0
  50. data/.git/objects/c5/4c515f4bff81e08b01176b1a5743fd773a9740 +0 -0
  51. data/.git/objects/d4/a471f188d32adfa9dc2ff22c53b95319a162ed +0 -0
  52. data/.git/objects/d7/83399b37ca769b5b5bc2b33727fc47acfa5e4c +0 -0
  53. data/.git/objects/d7/a544fc5715014ef027875545ef0145e9f694fe +0 -0
  54. data/.git/objects/de/eef72f84f60beab439c58d84acc42d3e5a1279 +0 -0
  55. data/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  56. data/.git/objects/e9/9c40e89cb90f8067f99d7051c3bebf2b145ec7 +0 -0
  57. data/.git/objects/f3/89737a46e7cad94deb222e238e8f926767637e +0 -0
  58. data/.git/objects/fa/4f98b2fe387e262f9c28011e53f1b8fb920401 +0 -0
  59. data/.git/objects/fb/72047097c38625f3598fb348b3fbe75afd6d2d +1 -0
  60. data/.git/objects/ff/7aefe3472c61b77f58669ec4b8208412156930 +0 -0
  61. data/.git/refs/heads/master +1 -0
  62. data/.git/refs/remotes/origin/master +1 -0
  63. data/History.txt +6 -0
  64. data/Manifest.txt +94 -0
  65. data/README.txt +35 -0
  66. data/Rakefile +13 -0
  67. data/bin/cheeba +68 -0
  68. data/cheeba.gemspec +37 -0
  69. data/lib/cheeba/defaults.rb +78 -0
  70. data/lib/cheeba/errors.rb +10 -0
  71. data/lib/cheeba/indicators.rb +25 -0
  72. data/lib/cheeba/reader/builder.rb +265 -0
  73. data/lib/cheeba/reader/format.rb +130 -0
  74. data/lib/cheeba/reader/node.rb +61 -0
  75. data/lib/cheeba/reader/parser.rb +64 -0
  76. data/lib/cheeba/reader.rb +33 -0
  77. data/lib/cheeba/version.rb +3 -0
  78. data/lib/cheeba/writer/builder.rb +95 -0
  79. data/lib/cheeba/writer.rb +49 -0
  80. data/lib/cheeba.rb +50 -0
  81. data/test/files/arrays.cash +15 -0
  82. data/test/files/blank.cash +0 -0
  83. data/test/files/comments.cash +17 -0
  84. data/test/files/hashes.cash +26 -0
  85. data/test/files/malformed.cash +3 -0
  86. data/test/files/mixed.cash +12 -0
  87. data/test/files/split.cash +9 -0
  88. data/test/test_cheeba.rb +185 -0
  89. data/test/test_reader.rb +210 -0
  90. data/test/test_reader_builder.rb +345 -0
  91. data/test/test_reader_format.rb +406 -0
  92. data/test/test_reader_parser.rb +190 -0
  93. data/test/test_writer.rb +133 -0
  94. data/test/test_writer_builder.rb +150 -0
  95. metadata +167 -0
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'rubygems'
4
+ require 'minitest/unit'
5
+ $: << 'lib' << 'test'
6
+ require 'cheeba'
7
+ MiniTest::Unit.autorun
8
+
9
+ class TestCheeba < MiniTest::Unit::TestCase
10
+ def setup
11
+ @files = "#{File.dirname(__FILE__)}/files"
12
+ @test = "#{@files}/test.cash"
13
+ @opt = Cheeba::Defaults.options.merge(Cheeba::Indicators.options)
14
+ @hom = ENV['HOME']
15
+ @dot = "#{@hom}/.cheeba"
16
+ @hsh = {
17
+ "grocery_list" => {
18
+ "meatsez" => {
19
+ 1 => {"count"=>5, "model"=>"Spam"},
20
+ 2 => {"count"=>1, "model"=>"Log of ground beef"}},
21
+ "beer"=>{1=>{"count"=>1, "model"=>"24 pack - Coors Lite"}},
22
+ "cigarettes" => {
23
+ 1 => {"count"=>2, "model"=>"Carton - Basic Ultra Menthol Box 100"}},
24
+ "other" => {
25
+ 1 => {"count"=>2, "model"=>"Economy-Size Pork & Beans"},
26
+ 2 => {"count"=>1, "model"=>"Jumbo Miracle Whip"},
27
+ 3 => {"count"=>2, "model"=>"White Wonder Bread"}}}}
28
+ @exp =
29
+ ["grocery_list:",
30
+ " meatsez:",
31
+ " 1:",
32
+ " count: 5",
33
+ " model: Spam",
34
+ " 2:",
35
+ " count: 1",
36
+ " model: Log of ground beef",
37
+ " cigarettes:",
38
+ " 1:",
39
+ " count: 2",
40
+ " model: Carton - Basic Ultra Menthol Box 100",
41
+ " beer:",
42
+ " 1:",
43
+ " count: 1",
44
+ " model: 24 pack - Coors Lite",
45
+ " other:",
46
+ " 1:",
47
+ " count: 2",
48
+ " model: Economy-Size Pork & Beans",
49
+ " 2:",
50
+ " count: 1",
51
+ " model: Jumbo Miracle Whip",
52
+ " 3:",
53
+ " count: 2",
54
+ " model: White Wonder Bread"]
55
+ @nested =<<FEKJA
56
+ domain: test
57
+ manifest:
58
+ manifest_id:
59
+ format: String
60
+ master_id:
61
+ format: String
62
+ owner_id:
63
+ format: String
64
+ log_id:
65
+ desc: log of all transactions withing the entire tree
66
+ format: String
67
+ FEKJA
68
+ end
69
+
70
+ def test_read_hash
71
+ act = Cheeba.read("#{@files}/hashes.cash")
72
+ assert_equal @hsh, act
73
+ end
74
+
75
+ def test_read_hash_options_symbolize_keys
76
+ hsh = ":awesome: dude"
77
+ exp = {:awesome => "dude"}
78
+ act = Cheeba.read(hsh, {:symbolize_keys => true})
79
+ assert_equal exp, act
80
+ end
81
+
82
+ def test_read_nested_hash_options_symbolize
83
+ exp = {
84
+ :domain => :test,
85
+ :manifest => {
86
+ :manifest_id => {
87
+ :format => :String},
88
+ :master_id => {
89
+ :format => :String},
90
+ :owner_id=>{
91
+ :format => :String},
92
+ :log_id => {
93
+ :desc => :"log of all transactions withing the entire tree",
94
+ :format => :String}}}
95
+ act = Cheeba.read(@nested, {:symbolize => true})
96
+ assert_equal exp, act
97
+ end
98
+
99
+ def test_read_nested_hash_options_symbolize_keys
100
+ exp = {
101
+ :domain=>"test",
102
+ :manifest=>{
103
+ :manifest_id=>{
104
+ :format => "String"},
105
+ :master_id=>{
106
+ :format => "String"},
107
+ :owner_id=>{
108
+ :format => "String"},
109
+ :log_id=>{
110
+ :desc=>"log of all transactions withing the entire tree",
111
+ :format => "String"}}}
112
+ act = Cheeba.read(@nested, {:symbolize_keys => true})
113
+ assert_equal exp, act
114
+ end
115
+
116
+ def test_read_string
117
+ str = IO.read("#{@files}/hashes.cash")
118
+ act = Cheeba.read(str)
119
+ assert_equal @hsh, act
120
+ end
121
+
122
+ def test_parse_hash
123
+ act = Cheeba.parse(@hsh)
124
+ assert_equal @exp, act
125
+ end
126
+
127
+ def test_write
128
+ File.delete(@test) if File.exists?(@test)
129
+ refute(File.exists?(@test), "dude!")
130
+ Cheeba.write(@hsh, @test)
131
+ act = (IO.readlines(@test).map {|x| x.chomp})
132
+ assert(File.exists?(@test))
133
+ assert_equal @exp, act
134
+ File.delete(@test)
135
+ end
136
+
137
+ def test_dotfile
138
+ File.delete(@dot) if File.exists?(@dot)
139
+ refute(File.exists?(@dot), "dude!")
140
+ Cheeba.dotfile
141
+ assert(File.exists?(@dot))
142
+ exp_keys = Cheeba::Defaults.options
143
+ act_keys = Cheeba::Reader.read(@dot, @opt.merge({:symbolize_keys => true}))
144
+ assert_equal exp_keys, act_keys
145
+ File.delete(@dot)
146
+ end
147
+
148
+ def test_dotfile_exists
149
+ len = Dir.entries(@hom).length
150
+ mv_by_test = (File.exists?(@dot) ? "#{@dot}.mv_by_test" : "")
151
+ File.rename(@dot, mv_by_test) unless mv_by_test.empty?
152
+ refute(File.exists?(@dot), "dude!")
153
+ dot = Cheeba.dotfile
154
+ assert File.exists?(@dot)
155
+ assert File.exists?(dot)
156
+ assert_equal len, (Dir.entries(@hom).length - 1)
157
+ File.delete(@dot) if File.exists?(@dot)
158
+ File.delete(dot) if File.exists?(dot)
159
+ refute(File.exists?(@dot), "dude!")
160
+ refute(File.exists?(dot), "dude!")
161
+ File.rename(mv_by_test, @dot) if File.exists?(mv_by_test)
162
+ end
163
+
164
+ def test_read_raise_on_empty_string
165
+ assert_raises(Cheeba::Reader::EmptyInputError) {Cheeba.read("")}
166
+ end
167
+
168
+ def test_format_sym_str_nested_2009cash
169
+ file = "#{File.dirname(__FILE__)}/files/2009.cash"
170
+ raise file.inspect unless File.exist?(file)
171
+ act = Cheeba.read(file, {:sym_str => true})
172
+ exp = {:content=>{1=>:"200901.cash", 2=>:"200902.cash"}}
173
+ assert_equal exp, act
174
+ end
175
+
176
+ # this is what was happening! because the "01".to_i # => 1
177
+ # {:content=>{"01"=>:"200901.cash", "02"=>:"200902.cash"}}
178
+ def test_format_sym_str_nested
179
+ file = "#{File.dirname(__FILE__)}/files/nested.cash"
180
+ raise file.inspect unless File.exist?(file)
181
+ act = Cheeba.read(file)
182
+ exp = {1 => "awesome", 2 => "dude", 3 => {1 => "niceone", 2 => "bro", "fekja" => "bacon", 3 => {1 => "beer", 2 => "camaro"}}}
183
+ assert_equal exp, act
184
+ end
185
+ end
@@ -0,0 +1,210 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'rubygems'
4
+ require 'minitest/unit'
5
+ $: << 'lib' << 'test'
6
+ require 'cheeba/reader'
7
+ require 'cheeba/indicators'
8
+ require 'cheeba/defaults'
9
+ MiniTest::Unit.autorun
10
+
11
+ class TestReader < MiniTest::Unit::TestCase
12
+ def setup
13
+ @file_com = "test/files/comments.cash"
14
+ @file_arr = "test/files/arrays.cash"
15
+ @file_hsh = "test/files/hashes.cash"
16
+ @file_mix = "test/files/mixed.cash"
17
+ @file_mal = "test/files/malformed.cash"
18
+ @file_bla = "test/files/blank.cash"
19
+ @file_spl = "test/files/split.cash"
20
+ opt = Cheeba::Indicators.options
21
+ @opt = Cheeba::Defaults.options.merge(opt)
22
+ @reader = Cheeba::Reader
23
+ end
24
+
25
+ def test_test_files_exists
26
+ assert File.exists?(@file_com)
27
+ assert File.exists?(@file_arr)
28
+ assert File.exists?(@file_hsh)
29
+ assert File.exists?(@file_mix)
30
+ assert File.exists?(@file_mal)
31
+ assert File.exists?(@file_bla)
32
+ assert File.exists?(@file_spl)
33
+ end
34
+
35
+ def test_parse_string
36
+ exp1 = {"awesome" => "dude"}
37
+ exp2 = {1 => {"awesome" => "dude"}, :lst => {1 => "1"}}
38
+ act1 = @reader.read("awesome: dude", @opt.merge({:list => false}))
39
+ act2 = @reader.read("awesome: dude", @opt.merge({:list => true}))
40
+ assert_equal exp1, act1
41
+ assert_equal exp2, act2
42
+ end
43
+
44
+ def test_parse_empty_string_raise_emptystringerror
45
+ assert_raises(Cheeba::Reader::EmptyInputError) {@reader.read("", @opt)}
46
+ end
47
+
48
+ def test_parse_blank_file_raise_emptyfileerror
49
+ assert_raises(Cheeba::Reader::EmptyFileError) {@reader.read(@file_bla, @opt)}
50
+ end
51
+
52
+ def test_parse_blank_file_raise_invalidinputerror
53
+ assert_raises(Cheeba::Reader::InvalidInputError) {@reader.read({}, @opt)}
54
+ end
55
+
56
+ def test_parse_split_raise_rootnodeerror
57
+ assert_raises(Cheeba::Reader::Builder::RootNodeError) {
58
+ @reader.read(@file_spl, @opt.merge({:list => true}))
59
+ }
60
+ end
61
+
62
+ def test_parse_file_array
63
+ exp1 = ["", 1, 2, [["", "awesome", "awesome"]], 4, 5, 6, [7, [8], "dude"], ""]
64
+ exp2 = {1 => ["", 1, 2, [["", "awesome", "awesome"]], 4, 5, 6, [7, [8], "dude"], ""],
65
+ :lst=> {
66
+ 1 => "1",
67
+ 2 => "1",
68
+ 3 => "1",
69
+ 4 => "1",
70
+ 5 => "1,3",
71
+ 6 => "1,3,0",
72
+ 7 => "1,3,0",
73
+ 8 => "1,3,0",
74
+ 9 => "1",
75
+ 10 => "1",
76
+ 11 => "1",
77
+ 12 => "1,7",
78
+ 13 => "1,7,1",
79
+ 14 => "1,7",
80
+ 15 => "1"}}
81
+ act1 = @reader.read(@file_arr, @opt.merge({:list => false}))
82
+ act2 = @reader.read(@file_arr, @opt.merge({:list => true}))
83
+ assert_equal exp1, act1
84
+ assert_equal exp2, act2
85
+ end
86
+
87
+ def test_parse_file_hash
88
+ exp1 = {"grocery_list" =>
89
+ {"meatsez" =>
90
+ {1 => {"count" => 5, "model" => "Spam"},
91
+ 2 => {"count" => 1, "model" => "Log of ground beef"}},
92
+ "beer" => {1 => {"count" => 1, "model" => "24 pack - Coors Lite"}},
93
+ "cigarettes" =>
94
+ {1 => {"count" => 2, "model" => "Carton - Basic Ultra Menthol Box 100"}},
95
+ "other" =>
96
+ {1 => {"count" => 2, "model" => "Economy-Size Pork & Beans"},
97
+ 2 => {"count" => 1, "model" => "Jumbo Miracle Whip"},
98
+ 3 => {"count" => 2, "model" => "White Wonder Bread"}}}}
99
+ exp2 = {1 => {"grocery_list" =>
100
+ {"meatsez" =>
101
+ {1 => {"count" => 5, "model" => "Spam"},
102
+ 2 => {"count" => 1, "model" => "Log of ground beef"}},
103
+ "beer" => {1 => {"count" => 1, "model" => "24 pack - Coors Lite"}},
104
+ "cigarettes" =>
105
+ {1 => {"count" => 2, "model" => "Carton - Basic Ultra Menthol Box 100"}},
106
+ "other" =>
107
+ {1 => {"count" => 2, "model" => "Economy-Size Pork & Beans"},
108
+ 2 => {"count" => 1, "model" => "Jumbo Miracle Whip"},
109
+ 3 => {"count" => 2, "model" => "White Wonder Bread"}}}},
110
+ :lst =>
111
+ {1 => "1,grocery_list",
112
+ 2 => "1,grocery_list,beer",
113
+ 3 => "1,grocery_list,beer,1",
114
+ 4 => "1,grocery_list,beer,1",
115
+ 5 => "1,grocery_list,beer,1",
116
+ 6 => "1,grocery_list,meatsez",
117
+ 7 => "1,grocery_list,meatsez,1",
118
+ 8 => "1,grocery_list,meatsez,1",
119
+ 9 => "1,grocery_list,meatsez,1",
120
+ 10 => "1,grocery_list,meatsez,2",
121
+ 11 => "1,grocery_list,meatsez,2",
122
+ 12 => "1,grocery_list,meatsez,2",
123
+ 13 => "1,grocery_list,cigarettes",
124
+ 14 => "1,grocery_list,cigarettes,1",
125
+ 15 => "1,grocery_list,cigarettes,1",
126
+ 16 => "1,grocery_list,cigarettes,1",
127
+ 17 => "1,grocery_list,other",
128
+ 18 => "1,grocery_list,other,1",
129
+ 19 => "1,grocery_list,other,1",
130
+ 20 => "1,grocery_list,other,1",
131
+ 21 => "1,grocery_list,other,2",
132
+ 22 => "1,grocery_list,other,2",
133
+ 23 => "1,grocery_list,other,2",
134
+ 24 => "1,grocery_list,other,3",
135
+ 25 => "1,grocery_list,other,3",
136
+ 26 => "1,grocery_list,other,3"}}
137
+ act1 = @reader.read(@file_hsh, @opt.merge({:list => false}))
138
+ act2 = @reader.read(@file_hsh, @opt.merge({:list => true}))
139
+ assert_equal exp1, act1
140
+ assert_equal exp2, act2
141
+ end
142
+
143
+ def test_parse_file_mixed
144
+ exp1 = {1=>1,
145
+ 2 => ["", "one", "two", {5=>{6=>6, 7=>7}, 8=>{"dude"=>"dude"}}, ""],
146
+ 3 =>"awesome"}
147
+ exp2 = {1=>
148
+ {1=>1,
149
+ 2=>["", "one", "two", {5=>{6=>6, 7=>7}, 8=>{"dude"=>"dude"}}, ""],
150
+ 3=>"awesome"},
151
+ :lst => {
152
+ 1 => "1",
153
+ 2 => "1,2",
154
+ 3 => "1,2",
155
+ 4 => "1,2",
156
+ 5 => "1,2",
157
+ 6 => "1,2,3,5",
158
+ 7 => "1,2,3,5",
159
+ 8 => "1,2,3,5",
160
+ 9 => "1,2,3,8",
161
+ 10 => "1,2,3,8",
162
+ 11 => "1,2",
163
+ 12 => "1"}}
164
+ act1 = @reader.read(@file_mix, @opt.merge({:list => false}))
165
+ act2 = @reader.read(@file_mix, @opt.merge({:list => true}))
166
+ assert_equal exp1, act1
167
+ assert_equal exp2, act2
168
+ end
169
+
170
+ def test_parse_file_comments
171
+ exp1 = {1=>1, 2=>2, 3=>3, 4=>[1, 2, 3]}
172
+ exp2 = {1=>{1=>1, 2=>2, 3=>3, 4=>[1, 2, 3]},
173
+ :lst => {
174
+ 1 => "#COMMENT: dude",
175
+ 2 => "1",
176
+ 3 => "#COMMENT: awesome",
177
+ 4 => "1",
178
+ 5 => "#COMMENT: ",
179
+ 6 => "#COMMENT: camaro",
180
+ 7 => "#COMMENT: ",
181
+ 8 => "1",
182
+ 9 => "#COMMENT: #",
183
+ 10 => "#COMMENT: nice",
184
+ 11 => "#COMMENT: one",
185
+ 12 => "#COMMENT: bro!",
186
+ 13 => "#COMMENT: ",
187
+ 14 => "1,4",
188
+ 15 => "1,4",
189
+ 16 => "1,4",
190
+ 17 => "1,4"}}
191
+ act1 = @reader.read(@file_com, @opt.merge({:list => false}))
192
+ act2 = @reader.read(@file_com, @opt.merge({:list => true}))
193
+ assert_equal exp1, act1
194
+ assert_equal exp2, act2
195
+ end
196
+
197
+ def test_parse_file_malformed
198
+ exp1 = {}
199
+ exp2 = {
200
+ 1=>{},
201
+ :lst => {
202
+ 1 => "#MALFORMED: 2341234",
203
+ 2 => "#MALFORMED: awesome",
204
+ 3 => "#MALFORMED: dude"}}
205
+ act1 = @reader.read(@file_mal, @opt.merge({:list => false}))
206
+ act2 = @reader.read(@file_mal, @opt.merge({:list => true}))
207
+ assert_equal exp1, act1
208
+ assert_equal exp2, act2
209
+ end
210
+ end