ruport 1.6.3 → 1.8.0

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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +11 -0
  3. data/CHANGELOG.md +38 -0
  4. data/HACKING +1 -17
  5. data/README.md +97 -0
  6. data/Rakefile +9 -50
  7. data/examples/add_row_table.rb +46 -0
  8. data/examples/data/wine.csv +255 -0
  9. data/examples/pdf_grouping.rb +39 -0
  10. data/examples/pdf_table.rb +28 -0
  11. data/examples/pdf_table_from_csv.rb +26 -0
  12. data/examples/pdf_table_prawn.rb +30 -0
  13. data/examples/pdf_table_simple.rb +13 -0
  14. data/examples/row_renderer.rb +1 -1
  15. data/examples/simple_pdf_lines.rb +1 -1
  16. data/examples/trac_ticket_status.rb +1 -1
  17. data/lib/ruport/controller.rb +17 -21
  18. data/lib/ruport/data/feeder.rb +2 -2
  19. data/lib/ruport/data/grouping.rb +8 -8
  20. data/lib/ruport/data/record.rb +4 -4
  21. data/lib/ruport/data/table.rb +318 -206
  22. data/lib/ruport/formatter/csv.rb +6 -7
  23. data/lib/ruport/formatter/html.rb +13 -11
  24. data/lib/ruport/formatter/markdown.rb +105 -0
  25. data/lib/ruport/formatter/prawn_pdf.rb +159 -0
  26. data/lib/ruport/formatter/template.rb +1 -1
  27. data/lib/ruport/formatter/text.rb +1 -1
  28. data/lib/ruport/formatter.rb +54 -54
  29. data/lib/ruport/version.rb +1 -1
  30. data/lib/ruport.rb +7 -23
  31. data/test/controller_test.rb +201 -225
  32. data/test/csv_formatter_test.rb +36 -36
  33. data/test/data_feeder_test.rb +64 -64
  34. data/test/expected_outputs/prawn_pdf_formatter/pdf_basic.pdf.test +265 -0
  35. data/test/grouping_test.rb +103 -102
  36. data/test/helpers.rb +29 -10
  37. data/test/html_formatter_test.rb +46 -46
  38. data/test/markdown_formatter_test.rb +142 -0
  39. data/test/prawn_pdf_formatter_test.rb +108 -0
  40. data/test/record_test.rb +91 -91
  41. data/test/samples/sales.csv +21 -0
  42. data/test/table_pivot_test.rb +77 -26
  43. data/test/table_test.rb +376 -354
  44. data/test/template_test.rb +13 -13
  45. data/test/text_formatter_test.rb +52 -52
  46. data/util/bench/data/table/bench_column_manip.rb +0 -1
  47. data/util/bench/data/table/bench_dup.rb +0 -1
  48. data/util/bench/data/table/bench_init.rb +1 -2
  49. data/util/bench/data/table/bench_manip.rb +0 -1
  50. data/util/bench/formatter/bench_csv.rb +0 -1
  51. data/util/bench/formatter/bench_html.rb +0 -1
  52. data/util/bench/formatter/bench_pdf.rb +0 -1
  53. data/util/bench/formatter/bench_text.rb +0 -1
  54. metadata +131 -82
  55. data/README +0 -114
  56. data/lib/ruport/formatter/pdf.rb +0 -591
  57. data/test/pdf_formatter_test.rb +0 -354
data/test/table_test.rb CHANGED
@@ -1,40 +1,39 @@
1
- #!/usr/bin/env ruby -w
1
+ #!/usr/bin/env ruby -w
2
2
  require File.join(File.expand_path(File.dirname(__FILE__)), "helpers")
3
- TEST_SAMPLES = File.join(File.expand_path(File.dirname(__FILE__)), "samples")
4
3
 
5
4
  class Person < Ruport::Data::Record
6
-
5
+
7
6
  def name
8
7
  first_name + " " + last_name
9
8
  end
10
9
 
11
- end
10
+ end
12
11
 
13
12
  class DuckRecord < Ruport::Data::Record; end
14
13
 
15
- class TestTable < Test::Unit::TestCase
14
+ class TestTable < Minitest::Test
16
15
  def test_constructors
17
16
  table = Ruport::Data::Table.new
18
17
 
19
18
  table2 = Ruport::Data::Table.new :column_names => %w[a b c]
20
19
  table3 = Ruport::Data::Table.new :data => [[1,2,3]]
21
- table4 = Ruport::Data::Table.new :column_names => %w[col1 col2 col3],
20
+ table4 = Ruport::Data::Table.new :column_names => %w[col1 col2 col3],
22
21
  :data => [[1,2,3]]
23
22
  tables = [table,table2,table3,table4]
24
23
 
25
24
  tables.zip([[],%w[a b c], [], %w[col1 col2 col3]]).each do |t,n|
26
25
  assert_equal n, t.column_names
27
26
 
28
- t = Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
29
- table_from_records = Table(t.column_names, :data => t.data)
27
+ t = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
28
+ Ruport.Table(t.column_names, :data => t.data)
30
29
  end
31
-
30
+
32
31
  a = Ruport::Data::Record.new [1,2,3]
33
32
  b = Ruport::Data::Record.new [1,2,3], :attributes => %w[col1 col2 col3]
34
- tables.zip([[],[],[a],[b]]).each do |t,n|
35
- assert_equal n, t.data
33
+ tables.zip([[],[],[a],[b]]).each do |t,n|
34
+ assert_equal n, t.data
36
35
  end
37
- end
36
+ end
38
37
 
39
38
  context "when filtering data" do
40
39
 
@@ -42,106 +41,106 @@ class TestTable < Test::Unit::TestCase
42
41
  @data = [[1,2,3],[4,5,6],[7,8,9]]
43
42
  end
44
43
 
45
- def specify_filters_should_discard_unmatched_rows
44
+ should "specify_filters_should_discard_unmatched_rows" do
46
45
  table = Ruport::Data::Table.new(:column_names => %w[a b c],
47
46
  :data => [[1,2,3],[4,5,6],[7,8,9]],
48
47
  :filters => [ lambda { |r| r.a % 2 == 1 } ] )
49
- assert_equal Table(%w[a b c]) << [1,2,3] << [7,8,9], table
50
- end
51
-
52
- def specify_filters_should_work_on_csvs
48
+ assert_equal Ruport.Table(%w[a b c]) << [1,2,3] << [7,8,9], table
49
+ end
50
+
51
+ should "specify_filters_should_work_on_csvs" do
53
52
  only_ids_less_than_3 = lambda { |r| r["id"].to_i < 3 }
54
- table = Table(File.join(TEST_SAMPLES,"addressbook.csv"),
53
+ table = Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"),
55
54
  :filters => [only_ids_less_than_3])
56
55
  assert_equal ["1","2"], table.map { |r| r["id"] }
57
56
  end
58
- end
59
-
57
+ end
58
+
60
59
  context "when transforming data" do
61
-
62
- def setup
63
- @data = [[1,2,3],[4,5,6],[7,8,9]]
60
+
61
+ setup do
62
+ @data = [[1,2,3],[4,5,6],[7,8,9]]
64
63
  end
65
-
66
- def specify_transforms_should_modify_table_data
67
-
68
- stringify_c = lambda { |r| r.c = r.c.to_s }
64
+
65
+ should "specify_transforms_should_modify_table_data" do
66
+
67
+ stringify_c = lambda { |r| r.c = r.c.to_s }
69
68
  add_two_to_all_int_cols = lambda { |r|
70
69
  r.each_with_index do |c,i|
71
- if Fixnum === c
70
+ if Integer === c
72
71
  r[i] += 2
73
72
  end
74
73
  end
75
-
76
- }
77
-
74
+
75
+ }
76
+
78
77
  table = Ruport::Data::Table.new(:column_names => %w[a b c],
79
78
  :data => @data,
80
79
  :transforms => [stringify_c,
81
80
  add_two_to_all_int_cols])
82
- assert_equal Table(%w[a b c]) << [3,4,"3"] << [6,7,"6"] << [9,10,"9"],
81
+ assert_equal Ruport.Table(%w[a b c]) << [3,4,"3"] << [6,7,"6"] << [9,10,"9"],
83
82
  table
84
-
85
- end
86
-
87
- def specify_transforms_should_work_on_csvs
83
+
84
+ end
85
+
86
+ should "specify_transforms_should_work_on_csvs" do
88
87
  ids_to_i = lambda { |r| r["id"] = r["id"].to_i }
89
- table = Table(File.join(TEST_SAMPLES,"addressbook.csv"),
90
- :filters => [ids_to_i])
91
- assert_equal [1,2,3,4,5], table.map { |r| r["id"] }
88
+ table = Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"),
89
+ :filters => [ids_to_i])
90
+ assert_equal [1,2,3,4,5], table.map { |r| r["id"] }
92
91
  end
93
92
  end
94
93
 
95
94
  def test_to_group
96
- a = Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).to_group("Packrats")
95
+ a = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).to_group("Packrats")
97
96
  b = Ruport::Data::Group.new( :data => [[1,2,3],[4,5,6]],
98
97
  :column_names => %w[a b c],
99
98
  :name => "Packrats" )
100
99
  assert_equal a,b
101
100
  end
102
-
101
+
103
102
  def test_rows_with
104
- table = Table(%w[a b c], :data => [[1,2,3],[1,3,4],[7,8,9]])
105
-
103
+ table = Ruport.Table(%w[a b c], :data => [[1,2,3],[1,3,4],[7,8,9]])
104
+
106
105
  assert_equal([table[0],table[1]],table.rows_with("a" => 1))
107
106
  assert_equal([table[1]],table.rows_with("a" => 1, "b" => 3))
108
107
  assert_equal([table[0]],table.rows_with(:a => 1, :b => 2))
109
108
  assert_equal([table[2]], table.rows_with_b(8))
110
109
  assert_equal [table[1]], table.rows_with(%w[a b]) { |a,b| [a,b] == [1,3] }
111
110
  end
112
-
111
+
113
112
  def test_sigma
114
- table = Table(%w[col1 col2], :data => [[1,2],[3,4],[5,6]])
113
+ table = Ruport.Table(%w[col1 col2], :data => [[1,2],[3,4],[5,6]])
115
114
  assert table.respond_to?(:sigma)
116
115
  assert table.respond_to?(:sum)
117
116
  assert_equal(9,table.sigma(0))
118
117
  assert_equal(9,table.sigma("col1"))
119
118
  assert_equal(21,table.sigma { |r| r.col1 + r.col2 })
120
119
  end
121
-
120
+
122
121
  def test_sub_table
123
- table = Table(%w[a b c d],
122
+ table = Ruport.Table(%w[a b c d],
124
123
  :data => [ [1,2,3,4],[5,6,7,9],[10,11,12,13],[14,15,16,17] ])
125
-
126
- assert_equal Table(%w[b c], :data => [[6,7],[11,12]]),
127
- table.sub_table(%w[b c],1..-2)
128
-
129
- assert_equal Table(%w[c d a], :data => [[3,4,1],[7,9,5]]),
130
- table.sub_table(%w[c d a]) { |r| r.a < 10 }
131
-
132
- assert_equal Table(%w[a c], :data => [[1,3],[5,7],[10,12],[14,16]]),
124
+
125
+ assert_equal Ruport.Table(%w[b c], :data => [[6,7],[11,12]]),
126
+ table.sub_table(%w[b c],1..-2)
127
+
128
+ assert_equal Ruport.Table(%w[c d a], :data => [[3,4,1],[7,9,5]]),
129
+ table.sub_table(%w[c d a]) { |r| r.a < 10 }
130
+
131
+ assert_equal Ruport.Table(%w[a c], :data => [[1,3],[5,7],[10,12],[14,16]]),
133
132
  table.sub_table(%w[a c])
134
-
135
- assert_equal Table(%w[a b c d], :data => [[10,11,12,13],[14,15,16,17]]),
136
- table.sub_table { |r| r.c > 10 }
137
-
138
- assert_equal Table(%w[a b c d], :data => [[10,11,12,13],[14,15,16,17]]),
139
- table.sub_table(2..-1)
140
-
141
- end
142
-
133
+
134
+ assert_equal Ruport.Table(%w[a b c d], :data => [[10,11,12,13],[14,15,16,17]]),
135
+ table.sub_table { |r| r.c > 10 }
136
+
137
+ assert_equal Ruport.Table(%w[a b c d], :data => [[10,11,12,13],[14,15,16,17]]),
138
+ table.sub_table(2..-1)
139
+
140
+ end
141
+
143
142
  def test_subtable_records_have_correct_data
144
- table = Table(%w[a b c d],
143
+ table = Ruport.Table(%w[a b c d],
145
144
  :data => [ [1,2,3,4],[5,6,7,9],[10,11,12,13],[14,15,16,17] ])
146
145
  sub = table.sub_table(%w[b c d]) {|r| r.a == 1 }
147
146
  assert_equal({"b"=>2, "c"=>3, "d"=>4}, sub[0].data)
@@ -149,17 +148,17 @@ class TestTable < Test::Unit::TestCase
149
148
  end
150
149
 
151
150
  def test_reduce
152
- table = Table(%w[a b c d],
151
+ table = Ruport.Table(%w[a b c d],
153
152
  :data => [ [1,2,3,4],[5,6,7,9],[10,11,12,13],[14,15,16,17] ])
154
153
 
155
154
  table.reduce(%w[b c],1..-2)
156
- assert_equal Table(%w[b c], :data => [[6,7],[11,12]]), table
155
+ assert_equal Ruport.Table(%w[b c], :data => [[6,7],[11,12]]), table
157
156
 
158
- table = Table(%w[a b c d],
157
+ table = Ruport.Table(%w[a b c d],
159
158
  :data => [ [1,2,3,4],[5,6,7,9],[10,11,12,13],[14,15,16,17] ])
160
159
  table.reduce(%w[c d a]) { |r| r.a < 10 }
161
160
 
162
- assert_equal Table(%w[c d a], :data => [[3,4,1],[7,9,5]]), table
161
+ assert_equal Ruport.Table(%w[c d a], :data => [[3,4,1],[7,9,5]]), table
163
162
  end
164
163
 
165
164
  def test_reorder
@@ -169,58 +168,58 @@ class TestTable < Test::Unit::TestCase
169
168
  rows = [%w[a c], %w[d e]]
170
169
  table.each { |r| assert_equal rows.shift, r.to_a
171
170
  assert_equal %w[col1 col3], r.attributes }
172
- a = Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).reorder 2,0
171
+ a = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).reorder 2,0
173
172
  rows = [[3,1],[6,4]]
174
- a.each { |r| assert_equal rows.shift, r.to_a
173
+ a.each { |r| assert_equal rows.shift, r.to_a
175
174
  assert_equal %w[c a], r.attributes }
176
175
  assert_equal %w[c a], a.column_names
177
176
 
178
- b = Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).reorder(%w[a c])
177
+ b = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]]).reorder(%w[a c])
179
178
  rows = [[1,3],[4,6]]
180
- b.each { |r|
179
+ b.each { |r|
181
180
  assert_equal rows.shift, r.to_a
182
- assert_equal %w[a c], r.attributes
181
+ assert_equal %w[a c], r.attributes
183
182
  assert_equal b.column_names.object_id,
184
183
  r.instance_eval{@attributes}.object_id
185
184
  }
186
- end
187
-
188
- context "when sorting rows" do
189
-
190
- def setup
191
- @table = Table(%w[a b c]) << [1,2,3] << [6,1,8] << [9,1,4]
192
- @table_with_nils = Table(%w[a b c]) << [1,nil,3] << [9,3,4] << [6,1,8]
185
+ end
186
+
187
+ context "when sorting rows" do
188
+
189
+ setup do
190
+ @table = Ruport.Table(%w[a b c]) << [1,2,3] << [6,1,8] << [9,1,4]
191
+ @table_with_nils = Ruport.Table(%w[a b c]) << [1,nil,3] << [9,3,4] << [6,1,8]
193
192
  end
194
-
195
- def specify_should_sort_in_reverse_order_on_descending
196
- t = @table.sort_rows_by("a", :order => :descending )
197
- assert_equal Table(%w[a b c]) << [9,1,4] << [6,1,8] << [1,2,3], t
198
-
199
- t = @table.sort_rows_by("c", :order => :descending )
200
- assert_equal Table(%w[a b c]) << [6,1,8] << [9,1,4] << [1,2,3], t
201
- end
202
-
203
- def specify_show_put_rows_with_nil_columns_after_sorted_rows
193
+
194
+ should "specify_should_sort_in_reverse_order_on_descending" do
195
+ t = @table.sort_rows_by("a", :order => :descending )
196
+ assert_equal Ruport.Table(%w[a b c]) << [9,1,4] << [6,1,8] << [1,2,3], t
197
+
198
+ t = @table.sort_rows_by("c", :order => :descending )
199
+ assert_equal Ruport.Table(%w[a b c]) << [6,1,8] << [9,1,4] << [1,2,3], t
200
+ end
201
+
202
+ should "specify_show_put_rows_with_nil_columns_after_sorted_rows" do
204
203
  # should not effect when using columns that are all populated
205
- t = @table_with_nils.sort_rows_by("a")
206
- assert_equal Table(%w[a b c]) << [1,nil,3] << [6,1,8] << [9,3,4], t
207
-
204
+ t = @table_with_nils.sort_rows_by("a")
205
+ assert_equal Ruport.Table(%w[a b c]) << [1,nil,3] << [6,1,8] << [9,3,4], t
206
+
208
207
  t = @table_with_nils.sort_rows_by("b")
209
- assert_equal Table(%w[a b c]) << [6,1,8] << [9,3,4] << [1,nil,3], t
210
-
208
+ assert_equal Ruport.Table(%w[a b c]) << [6,1,8] << [9,3,4] << [1,nil,3], t
209
+
211
210
  t = @table_with_nils.sort_rows_by("b", :order => :descending)
212
- assert_equal Table(%w[a b c]) << [1,nil,3] << [9,3,4] << [6,1,8], t
211
+ assert_equal Ruport.Table(%w[a b c]) << [1,nil,3] << [9,3,4] << [6,1,8], t
213
212
  end
214
-
215
- def specify_in_place_sort_should_allow_order_by
213
+
214
+ should "specify_in_place_sort_should_allow_order_by" do
216
215
  @table.sort_rows_by!("a", :order => :descending )
217
- assert_equal Table(%w[a b c]) << [9,1,4] << [6,1,8] << [1,2,3], @table
216
+ assert_equal Ruport.Table(%w[a b c]) << [9,1,4] << [6,1,8] << [1,2,3], @table
218
217
  end
219
-
220
- def specify_sort_rows_by
218
+
219
+ should "specify_sort_rows_by" do
221
220
  table = Ruport::Data::Table.new :column_names => %w[a b c]
222
- table << [1,2,3] << [6,1,8] << [9,1,4]
223
-
221
+ table << [1,2,3] << [6,1,8] << [9,1,4]
222
+
224
223
  table2 = Ruport::Data::Table.new :column_names => [:a, :b, :c]
225
224
  table2 << [1,2,3] << [6,1,8] << [9,1,4]
226
225
 
@@ -229,20 +228,20 @@ class TestTable < Test::Unit::TestCase
229
228
 
230
229
  sorted_table_b = Ruport::Data::Table.new :column_names => %w[a b c]
231
230
  sorted_table_b << [6,1,8] << [9,1,4] << [1,2,3]
232
-
231
+
233
232
  sorted_table_bc = Ruport::Data::Table.new :column_names => %w[a b c]
234
- sorted_table_bc << [9,1,4] << [6,1,8] << [1,2,3]
235
-
233
+ sorted_table_bc << [9,1,4] << [6,1,8] << [1,2,3]
234
+
236
235
  sorted_table_bs = Ruport::Data::Table.new :column_names => [:a, :b, :c]
237
236
  sorted_table_bs << [6,1,8] << [9,1,4] << [1,2,3]
238
-
237
+
239
238
  assert_equal sorted_table_a, table.sort_rows_by {|r| r['a']}
240
239
  assert_equal sorted_table_b, table.sort_rows_by(['b'])
241
240
  assert_equal sorted_table_bc, table.sort_rows_by(['b', 'c'])
242
241
  assert_equal sorted_table_bs, table2.sort_rows_by(:b)
243
- end
244
-
245
- def specify_sort_rows_by!
242
+ end
243
+
244
+ should "specify_sort_rows_by!" do
246
245
  table = Ruport::Data::Table.new :column_names => %w[a b c]
247
246
  table << [1,2,3] << [6,1,8] << [9,1,4]
248
247
 
@@ -251,37 +250,68 @@ class TestTable < Test::Unit::TestCase
251
250
 
252
251
  sorted_table_b = Ruport::Data::Table.new :column_names => %w[a b c]
253
252
  sorted_table_b << [6,1,8] << [9,1,4] << [1,2,3]
254
-
253
+
255
254
  sorted_table_bc = Ruport::Data::Table.new :column_names => %w[a b c]
256
255
  sorted_table_bc << [9,1,4] << [6,1,8] << [1,2,3]
257
-
256
+
258
257
  table_a = table.dup
259
- table_a.sort_rows_by! { |r| r['a'] }
260
-
258
+ table_a.sort_rows_by! { |r| r['a'] }
259
+
261
260
  table_b = table.dup
262
261
  table_b.sort_rows_by!("b")
263
-
262
+
264
263
  table_bc = table.dup
265
- table_bc.sort_rows_by!(['b', 'c'])
266
-
264
+ table_bc.sort_rows_by!(['b', 'c'])
265
+
267
266
  assert_equal sorted_table_a, table_a
268
267
  assert_equal sorted_table_b, table_b
269
268
  assert_equal sorted_table_bc, table_bc
270
269
  end
271
-
272
- end
270
+
271
+ end
272
+
273
+ context "when adding rows" do
274
+ setup do
275
+ @columns = %w[a b c]
276
+ @data = [[1,2,3],[4,5,6],[7,8,9]]
277
+ @table = Ruport::Data::Table.new(:column_names => @columns, :data => @data)
278
+ @new_row = [-1,-2,-3]
279
+ end
280
+
281
+ should "specify_insert_at_the_beginning" do
282
+ @table.add_row(@new_row, :position => 0)
283
+ assert_equal Ruport::Data::Table.new(:column_names => @columns,
284
+ :data => [@new_row] + @data), @table
285
+ end
286
+
287
+ should "specify_insert_in_the_middle" do
288
+ @table.add_row(@new_row, :position => 2)
289
+ assert_equal Ruport::Data::Table.new(:column_names => @columns,
290
+ :data => [[1,2,3],[4,5,6],[-1,-2,-3],[7,8,9]]), @table
291
+ end
292
+
293
+ should "specify_insert_at_the_end" do
294
+ @table.add_row(@new_row)
295
+ assert_equal Ruport::Data::Table.new(:column_names => @columns,
296
+ :data => @data + [@new_row]), @table
297
+ end
298
+
299
+ should "return_itself" do
300
+ assert_equal @table.object_id, @table.add_row(@new_row).object_id
301
+ end
302
+ end
273
303
 
274
304
  def test_record_class
275
- a = Ruport::Data::Table.new( :column_names => %w[first_name last_name c],
305
+ a = Ruport::Data::Table.new( :column_names => %w[first_name last_name c],
276
306
  :data =>[['joe','loop',3],['jim','blue',6]],
277
307
  :record_class => Person )
278
- assert_equal a, Table(%w[first_name last_name c],
308
+ assert_equal a, Ruport.Table(%w[first_name last_name c],
279
309
  :data => [ ['joe','loop',3],['jim','blue',6] ])
280
310
  assert_kind_of Person, a[0]
281
311
  assert_equal 'joe loop', a[0].name
282
312
  assert_equal 'jim blue', a[1].name
283
313
 
284
- b = Table(%w[first_name last_name], :record_class => Person) do |t|
314
+ b = Ruport.Table(%w[first_name last_name], :record_class => Person) do |t|
285
315
  t << { 'first_name' => 'joe', 'last_name' => 'frasier' }
286
316
  t << { 'first_name' => 'brian', 'last_name' => 'black' }
287
317
  end
@@ -289,72 +319,71 @@ class TestTable < Test::Unit::TestCase
289
319
  b.each { |r| assert_kind_of Person, r }
290
320
 
291
321
  assert_equal ['joe frasier', 'brian black'], b.map { |r| r.name }
292
- end
322
+ end
293
323
 
294
324
  ## BUG Traps -------------------------------------------------
295
-
325
+
296
326
  def test_ensure_table_creation_allows_record_coercion
297
- table = Table([], :data => [[1,2,3],[4,5,6],[7,8,9]])
298
- table_with_names = Table(%w[a b c], :data => [[1,2,3],[4,5,6],[7,8,9]])
299
-
327
+ table = Ruport.Table([], :data => [[1,2,3],[4,5,6],[7,8,9]])
328
+ table_with_names = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6],[7,8,9]])
329
+
300
330
  a,b,c = nil
301
- assert_nothing_raised { a = Table(%w[a b c], :data => table.to_a) }
302
- assert_nothing_raised { b = Table(%w[d e f], :data => table.to_a) }
303
- assert_nothing_raised { c = Table(table_with_names.column_names,
304
- :data => table_with_names.to_a) }
331
+ a = Ruport.Table(%w[a b c], :data => table.to_a)
332
+ b = Ruport.Table(%w[d e f], :data => table.to_a)
333
+ c = Ruport.Table(table_with_names.column_names, :data => table_with_names.to_a)
305
334
 
306
335
  [a,b,c].each { |t| assert_equal(3,t.length) }
307
336
  assert_equal %w[a b c], a.column_names
308
337
  a.each { |r|
309
338
  assert_equal %w[a b c], r.attributes
310
- assert_nothing_raised { r.a; r.b; r.c }
339
+ r.a; r.b; r.c
311
340
  [r.a,r.b,r.c].each { |i| assert(i.kind_of?(Numeric)) }
312
341
  }
313
342
  assert_equal %w[d e f], b.column_names
314
343
  b.each { |r|
315
344
  assert_equal %w[d e f], r.attributes
316
- assert_nothing_raised { r.d; r.e; r.f }
345
+ r.d; r.e; r.f
317
346
  [r.d,r.e,r.f].each { |i| assert(i.kind_of?(Numeric)) }
318
347
  }
319
348
  c.each { |r|
320
- assert_nothing_raised { r[0]; r[1]; r[2] }
349
+ r[0]; r[1]; r[2]
321
350
  [r[0],r[1],r[2]].each { |i| assert(i.kind_of?(Numeric)) }
322
351
  }
323
- end
324
-
352
+ end
353
+
325
354
  def test_ensure_coerce_sum
326
- s = Table([], :data => [["1"],["3"],["5"]])
327
- t = Table([], :data => [["1.23"],["1.5"]])
328
-
355
+ s = Ruport.Table([], :data => [["1"],["3"],["5"]])
356
+ t = Ruport.Table([], :data => [["1.23"],["1.5"]])
357
+
329
358
  assert_equal(9,s.sum(0))
330
359
  assert_equal(2.73,t.sum(0))
331
360
  end
332
-
361
+
333
362
  def test_to_yaml
334
363
  require "yaml"
335
- a = Table([])
336
- assert_nothing_raised { a.to_yaml }
337
- a = Table(%w[first_name last_name],:record_class => Person) { |t|
338
- t << %w[joe loop]
364
+ a = Ruport.Table([])
365
+ a.to_yaml
366
+ a = Ruport.Table(%w[first_name last_name],:record_class => Person) { |t|
367
+ t << %w[joe loop]
339
368
  }
340
369
  assert_equal "joe loop", a[0].name
341
- assert_nothing_raised { a.to_yaml }
342
- end
343
-
370
+ a.to_yaml
371
+ end
372
+
344
373
  def test_ensure_subtable_works_with_unnamed_tables
345
- a = Table([], :data => [[1,2,3],[4,5,6]])
346
- b = a.sub_table { |r| (r[0] % 2).zero? }
347
- assert_equal Table([], :data => [[4,5,6]]), b
348
- end
349
-
374
+ a = Ruport.Table([], :data => [[1,2,3],[4,5,6]])
375
+ b = a.sub_table { |r| (r[0] % 2).zero? }
376
+ assert_equal Ruport.Table([], :data => [[4,5,6]]), b
377
+ end
378
+
350
379
  def test_ensure_appending_records_works_with_unnamed_tables
351
- a = Table([], :data => [[1,2,3],[4,5,6]])
380
+ a = Ruport.Table([], :data => [[1,2,3],[4,5,6]])
352
381
  a << Ruport::Data::Record.new([7,8,9])
353
- assert_equal Table([], :data => [[1,2,3],[4,5,6],[7,8,9]]),a
382
+ assert_equal Ruport.Table([], :data => [[1,2,3],[4,5,6],[7,8,9]]),a
354
383
  end
355
384
 
356
385
  def test_ensure_propagate_record_class
357
- a = Table(:record_class => DuckRecord)
386
+ a = Ruport.Table(:record_class => DuckRecord)
358
387
  assert_equal DuckRecord, a.record_class
359
388
 
360
389
  b = a.dup
@@ -362,270 +391,270 @@ class TestTable < Test::Unit::TestCase
362
391
  end
363
392
 
364
393
  def test_ensure_reorder_raises_on_bad_reorder_use
365
- a = Table() << [1,2,3] << [4,5,6]
366
- assert_raise(ArgumentError) { a.reorder("a","b","c") }
367
- assert_raise(ArgumentError) { a.reorder(%w[a b c]) }
368
- assert_raise(ArgumentError) { a.reorder(2,1,0) }
369
- end
394
+ a = Ruport.Table() << [1,2,3] << [4,5,6]
395
+ assert_raises(ArgumentError) { a.reorder("a","b","c") }
396
+ assert_raises(ArgumentError) { a.reorder(%w[a b c]) }
397
+ assert_raises(ArgumentError) { a.reorder(2,1,0) }
398
+ end
370
399
 
371
400
  class MySubClass < Ruport::Data::Table; end
372
-
401
+
373
402
  def test_ensure_table_subclasses_render_properly
374
403
  a = MySubClass.new
375
404
  a << [1,2,3] << [4,5,6]
376
405
  assert_equal("1,2,3\n4,5,6\n",a.as(:csv))
377
406
  end
378
407
 
379
- end
408
+ end
380
409
 
381
- class TestTableAppendOperations < Test::Unit::TestCase
382
- def test_append_record
410
+ class TestTableAppendOperations < Minitest::Test
411
+ def test_append_record
383
412
  table = Ruport::Data::Table.new :column_names => %w[a b c]
384
413
  table << Ruport::Data::Record.new([1,2,3], :attributes => %w[a b c])
385
414
  assert_equal([1,2,3],table[0].to_a)
386
415
  assert_equal(%w[a b c],table[0].attributes)
387
416
  rec = table[0].dup
388
417
  rec.attributes = %w[a b c d]
389
- assert_raise(NoMethodError) { table << Object.new }
418
+ assert_raises(NoMethodError) { table << Object.new }
390
419
  end
391
-
420
+
392
421
  def test_append_hash
393
- table = Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
422
+ table = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
394
423
  table << { "a" => 7, "c" => 9, "b" => 8 }
395
-
396
- assert_equal Table(%w[a b c], :data => [[1,2,3],[4,5,6],[7,8,9]]), table
424
+
425
+ assert_equal Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6],[7,8,9]]), table
397
426
  end
398
427
 
399
428
  def test_append_table
400
429
  first = Ruport::Data::Table.new :column_names => %w[a b c],
401
430
  :data => [[1,2,3],[4,5,6]]
402
-
431
+
403
432
  second = Ruport::Data::Table.new :column_names => %w[a b c],
404
433
  :data => [[7,8,9],[10,11,12]]
405
-
434
+
406
435
  combo = first + second
407
-
408
- assert_equal Ruport::Data::Table.new(:column_names => %w[a b c],
436
+
437
+ assert_equal Ruport::Data::Table.new(:column_names => %w[a b c],
409
438
  :data => [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]), combo
410
- end
411
-
439
+ end
440
+
412
441
  def test_append_chain
413
442
  table = Ruport::Data::Table.new :column_names => %w[a b c]
414
- table << [1,2,3] << [4,5,6] << [7,8,9]
443
+ table << [1,2,3] << [4,5,6] << [7,8,9]
415
444
  assert_equal 3, table.length
416
445
  assert_equal 5, table[1].b
417
- end
446
+ end
418
447
  end
419
448
 
420
- class TestTableFormattingHooks < Test::Unit::TestCase
421
-
449
+ class TestTableFormattingHooks < Minitest::Test
450
+
422
451
  def test_to_hack_takes_args
423
- a = Table(%w[hello mr crowley]) << %w[would you like] << %w[one red cat]
424
-
452
+ a = Ruport.Table(%w[hello mr crowley]) << %w[would you like] << %w[one red cat]
453
+
425
454
  assert_equal "would,you,like\none,red,cat\n",
426
455
  a.to_csv(:show_table_headers => false)
427
-
456
+
428
457
  assert_equal "would,you,like\none,red,cat\n",
429
- a.to_csv { |r| r.options.show_table_headers = false }
430
-
458
+ a.to_csv { |r| r.options.show_table_headers = false }
459
+
431
460
  assert_equal "would\tyou\tlike\none\tred\tcat\n",
432
461
  a.to_csv(:show_table_headers => false) { |r|
433
462
  r.options.format_options = { :col_sep => "\t" }
434
463
  }
435
- end
436
-
464
+ end
465
+
437
466
  def test_to_hack
438
- table = Ruport::Data::Table.new :column_names => %w[a b],
467
+ table = Ruport::Data::Table.new :column_names => %w[a b],
439
468
  :data => [[1,2],[3,4],[5,6]]
440
469
  assert_equal("a,b\n1,2\n3,4\n5,6\n",table.to_csv)
441
470
  assert_raises(Ruport::Controller::UnknownFormatError) { table.to_nothing }
442
471
  end
443
472
 
444
473
  def test_as_throws_proper_errors
445
- a = Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
446
- assert_nothing_raised { a.as(:csv) }
447
- assert_nothing_raised { a.to_csv }
474
+ a = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
475
+ a.as(:csv)
476
+ a.to_csv
448
477
  assert_raises(Ruport::Controller::UnknownFormatError) { a.as(:nothing) }
449
478
  assert_raises(Ruport::Controller::UnknownFormatError) { a.to_nothing }
450
479
  end
451
-
480
+
452
481
  end
453
482
 
454
- class TestTableColumnOperations < Test::Unit::TestCase
455
-
483
+ class TestTableColumnOperations < Minitest::Test
484
+
456
485
  def test_column
457
- a = Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
486
+ a = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
458
487
  assert_equal [3,6], a.column(2)
459
- assert_equal [2,5], a.column("b")
460
-
461
- assert_raise(ArgumentError) { a.column("d") }
462
- assert_raise(ArgumentError) { a.column(42) }
463
-
464
- a = Table([], :data => [[1],[2],[3],[4]])
465
- assert_equal [1,2,3,4], a.column(0)
466
- end
467
-
488
+ assert_equal [2,5], a.column("b")
489
+
490
+ assert_raises(ArgumentError) { a.column("d") }
491
+ assert_raises(ArgumentError) { a.column(42) }
492
+
493
+ a = Ruport.Table([], :data => [[1],[2],[3],[4]])
494
+ assert_equal [1,2,3,4], a.column(0)
495
+ end
496
+
468
497
  def test_set_column_names
469
- a = Table([], :data => [[1,2,3],[4,5,6]])
470
-
498
+ a = Ruport.Table([], :data => [[1,2,3],[4,5,6]])
499
+
471
500
  assert_equal([],a.column_names)
472
501
  assert_equal([[1,2,3],[4,5,6]],a.map { |r| r.to_a } )
473
-
502
+
474
503
  a.column_names = %w[a b c]
475
504
  assert_equal(%w[a b c],a.column_names)
476
- a.each { |r| assert_equal(%w[a b c], r.attributes) }
505
+ a.each { |r| assert_equal(%w[a b c], r.attributes) }
477
506
  assert_equal([[1,2,3],[4,5,6]],a.map { |r| r.to_a })
478
-
507
+
479
508
  a.column_names = %w[d e f]
480
509
  assert_equal(%w[d e f],a.column_names)
481
510
  a.each { |r| assert_equal(%w[d e f], r.attributes) }
482
- assert_equal([[1,2,3],[4,5,6]],a.map { |r| r.to_a })
483
- end
484
-
511
+ assert_equal([[1,2,3],[4,5,6]],a.map { |r| r.to_a })
512
+ end
513
+
485
514
  def test_add_column
486
- a = Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
515
+ a = Ruport.Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
487
516
  a.add_column("c")
488
- assert_equal Table(%w[a b c], :data => [[1,2,nil],[3,4,nil],[5,6,nil]]), a
517
+ assert_equal Ruport.Table(%w[a b c], :data => [[1,2,nil],[3,4,nil],[5,6,nil]]), a
489
518
 
490
- a = Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
519
+ a = Ruport.Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
491
520
  a.add_column("c",:default => "x")
492
- assert_equal Table(%w[a b c], :data => [[1,2,'x'],[3,4,'x'],[5,6,'x']]), a
521
+ assert_equal Ruport.Table(%w[a b c], :data => [[1,2,'x'],[3,4,'x'],[5,6,'x']]), a
493
522
 
494
523
  b = a.dup
495
524
  b.add_column("x",:before => "b")
496
- assert_equal Table(%w[a x b c],
497
- :data => [[1,nil,2,'x'],[3,nil,4,'x'],[5,nil,6,'x']]), b
525
+ assert_equal Ruport.Table(%w[a x b c],
526
+ :data => [[1,nil,2,'x'],[3,nil,4,'x'],[5,nil,6,'x']]), b
498
527
 
499
528
  b = a.dup
500
529
  b.add_column("x",:after => "b")
501
- assert_equal Table(%w[a b x c],
502
- :data => [[1,2,nil,'x'],[3,4,nil,'x'],[5,6,nil,'x']]), b
530
+ assert_equal Ruport.Table(%w[a b x c],
531
+ :data => [[1,2,nil,'x'],[3,4,nil,'x'],[5,6,nil,'x']]), b
503
532
 
504
533
 
505
534
  a.add_column("d") { |r| r[0]+r[1] }
506
- assert_equal Table(%w[a b c d],
535
+ assert_equal Ruport.Table(%w[a b c d],
507
536
  :data => [ [1,2,'x',3],[3,4,'x',7],[5,6,'x',11] ]), a
508
537
 
509
538
  a.add_column("x",:position => 1)
510
- assert_equal Table(%w[a x b c d],
539
+ assert_equal Ruport.Table(%w[a x b c d],
511
540
  :data => [ [1,nil,2,'x',3],[3,nil,4,'x',7],[5,nil,6,'x',11] ]), a
512
541
  end
513
542
 
514
543
  def test_add_columns
515
- a = Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
544
+ a = Ruport.Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
516
545
  a.add_columns(%w[c d])
517
- expected = Table(%w[a b c d],
546
+ expected = Ruport.Table(%w[a b c d],
518
547
  :data => [ [1,2,nil,nil],[3,4,nil,nil],[5,6,nil,nil] ])
519
548
 
520
- assert_equal expected, a
549
+ assert_equal expected, a
521
550
 
522
- a = Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
551
+ a = Ruport.Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
523
552
 
524
553
  a.add_columns(%w[c d],:after => "a")
525
554
 
526
- expected = Table(%w[a c d b],
527
- :data => [ [1,nil,nil,2],[3,nil,nil,4],[5,nil,nil,6], ])
555
+ expected = Ruport.Table(%w[a c d b],
556
+ :data => [ [1,nil,nil,2],[3,nil,nil,4],[5,nil,nil,6], ])
528
557
 
529
- assert_equal expected, a
558
+ assert_equal expected, a
530
559
 
531
560
  a.add_columns(%w[x f],:before => "a")
532
561
 
533
- expected = Table(%w[x f a c d b],
562
+ expected = Ruport.Table(%w[x f a c d b],
534
563
  :data => [ [nil,nil,1,nil,nil,2],
535
564
  [nil,nil,3,nil,nil,4],
536
565
  [nil,nil,5,nil,nil,6] ])
537
566
 
538
- assert_equal expected, a
567
+ assert_equal expected, a
539
568
 
540
- a = Table(%w[a b c], :data => [[1,2,0],[3,4,0],[5,6,0]])
569
+ a = Ruport.Table(%w[a b c], :data => [[1,2,0],[3,4,0],[5,6,0]])
541
570
 
542
571
  a.add_columns(%w[x y],:default => 9, :position => 1)
543
572
 
544
- expected = Table(%w[a x y b c],
545
- :data => [[1,9,9,2,0],[3,9,9,4,0],[5,9,9,6,0]])
573
+ expected = Ruport.Table(%w[a x y b c],
574
+ :data => [[1,9,9,2,0],[3,9,9,4,0],[5,9,9,6,0]])
546
575
 
547
576
  assert_equal expected, a
548
577
 
549
- a = Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
578
+ a = Ruport.Table(%w[a b], :data => [[1,2],[3,4],[5,6]])
550
579
  a.add_columns(%w[f x],:default => 0)
551
580
 
552
- expected = Table(%w[a b f x], :data => [[1,2,0,0],[3,4,0,0],[5,6,0,0]])
581
+ expected = Ruport.Table(%w[a b f x], :data => [[1,2,0,0],[3,4,0,0],[5,6,0,0]])
553
582
  assert_equal expected, a
554
583
 
555
- assert_raises(RuntimeError) do
556
- a.add_columns(%w[a b]) { }
584
+ assert_raises(RuntimeError) do
585
+ a.add_columns(%w[a b]) { }
557
586
  end
558
587
  end
559
588
 
560
589
  def test_remove_column
561
- a = Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
590
+ a = Ruport.Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
562
591
  b = a.dup
563
592
 
564
593
  a.remove_column("b")
565
- assert_equal Table(%w[a c]) { |t| t << [1,3] << [4,6] }, a
594
+ assert_equal Ruport.Table(%w[a c]) { |t| t << [1,3] << [4,6] }, a
566
595
 
567
596
  b.remove_column(2)
568
- assert_equal Table(%w[a b]) { |t| t << [1,2] << [4,5] }, b
569
- end
597
+ assert_equal Ruport.Table(%w[a b]) { |t| t << [1,2] << [4,5] }, b
598
+ end
570
599
 
571
600
  def test_remove_columns
572
- a = Table(%w[a b c d]) { |t| t << [1,2,3,4] << [5,6,7,8] }
601
+ a = Ruport.Table(%w[a b c d]) { |t| t << [1,2,3,4] << [5,6,7,8] }
573
602
  b = a.dup
574
603
  a.remove_columns("b","d")
575
- assert_equal Table(%w[a c]) { |t| t << [1,3] << [5,7] }, a
604
+ assert_equal Ruport.Table(%w[a c]) { |t| t << [1,3] << [5,7] }, a
576
605
  b.remove_columns(%w[a c])
577
- assert_equal Table(%w[b d]) { |t| t << [2,4] << [6,8] }, b
578
- end
606
+ assert_equal Ruport.Table(%w[b d]) { |t| t << [2,4] << [6,8] }, b
607
+ end
579
608
 
580
609
  def test_rename_column
581
- a = Table(%w[a b]) { |t| t << [1,2] << [3,4] }
610
+ a = Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }
582
611
  a.rename_column("b","x")
583
- assert_equal Table(%w[a x]) { |t| t << [1,2] << [3,4] }, a
584
- end
612
+ assert_equal Ruport.Table(%w[a x]) { |t| t << [1,2] << [3,4] }, a
613
+ end
585
614
 
586
615
  def test_rename_columns
587
- a = Table(%w[a b]) { |t| t << [1,2] << [3,4] }
616
+ a = Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }
588
617
  a.rename_columns(%w[a b], %w[x y])
589
- assert_equal Table(%w[x y]) { |t| t << [1,2] << [3,4] }, a
618
+ assert_equal Ruport.Table(%w[x y]) { |t| t << [1,2] << [3,4] }, a
590
619
 
591
- a = Table(%w[a b]) { |t| t << [1,2] << [3,4] }
620
+ a = Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }
592
621
  a.rename_columns("a"=>"x","b"=>"y")
593
- assert_equal Table(%w[x y]) { |t| t << [1,2] << [3,4] }, a
622
+ assert_equal Ruport.Table(%w[x y]) { |t| t << [1,2] << [3,4] }, a
594
623
 
595
- a = Table(%w[a b]) { |t| t << [1,2] << [3,4] }
596
- assert_raise(ArgumentError) { a.rename_columns(%w[a b], %w[x]) }
624
+ a = Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }
625
+ assert_raises(ArgumentError) { a.rename_columns(%w[a b], %w[x]) }
597
626
 
598
- a = Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
627
+ a = Ruport.Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
599
628
  a.rename_columns { |r| r.to_sym }
600
- assert_equal(a, Table(:a,:b,:c) { |t| t << [1,2,3] << [4,5,6] })
629
+ assert_equal(a, Ruport.Table(:a,:b,:c) { |t| t << [1,2,3] << [4,5,6] })
601
630
 
602
- a = Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
631
+ a = Ruport.Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
603
632
  a.rename_columns(%w[a c]) { |r| r.to_sym }
604
- assert_equal(a, Table(:a,"b",:c) { |t| t << [1,2,3] << [4,5,6] })
605
- end
633
+ assert_equal(a, Ruport.Table(:a,"b",:c) { |t| t << [1,2,3] << [4,5,6] })
634
+ end
606
635
 
607
636
  def test_swap_column
608
- a = Table(%w[a b]) { |t| t << [1,2] << [3,4] }
637
+ a = Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }
609
638
  a.swap_column("a","b")
610
- assert_equal Table(%w[b a]) { |t| t << [2,1] << [4,3] }, a
639
+ assert_equal Ruport.Table(%w[b a]) { |t| t << [2,1] << [4,3] }, a
611
640
  a.swap_column(1,0)
612
- assert_equal Table(%w[a b]) { |t| t << [1,2] << [3,4] }, a
613
- end
641
+ assert_equal Ruport.Table(%w[a b]) { |t| t << [1,2] << [3,4] }, a
642
+ end
614
643
 
615
644
  def test_replace_column
616
- a = Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
645
+ a = Ruport.Table(%w[a b c]) { |t| t << [1,2,3] << [4,5,6] }
617
646
  a.replace_column("b","d") { |r| r.b.to_s }
618
- assert_equal Table(%w[a d c]) { |t| t << [1,"2",3] << [4,"5",6] }, a
647
+ assert_equal Ruport.Table(%w[a d c]) { |t| t << [1,"2",3] << [4,"5",6] }, a
619
648
  a.replace_column("d") { |r| r.d.to_i }
620
- assert_equal Table(%w[a d c]) { |t| t << [1,2,3] << [4,5,6] }, a
621
- end
622
-
623
- # --- BUG TRAPS ------------------------------------
624
-
649
+ assert_equal Ruport.Table(%w[a d c]) { |t| t << [1,2,3] << [4,5,6] }, a
650
+ end
651
+
652
+ # --- BUG TRAPS ------------------------------------
653
+
625
654
  def test_ensure_setting_column_names_changes_record_attributes
626
- table = Ruport::Data::Table.new :column_names => %w[a b c],
655
+ table = Ruport::Data::Table.new :column_names => %w[a b c],
627
656
  :data => [[1,2,3],[4,5,6]]
628
-
657
+
629
658
  assert_equal %w[a b c], table.column_names
630
659
  assert_equal %w[a b c], table.data[0].attributes
631
660
  assert_equal %w[a b c], table.data[1].attributes
@@ -635,22 +664,22 @@ class TestTableColumnOperations < Test::Unit::TestCase
635
664
  assert_equal %w[d e f], table.column_names
636
665
  assert_equal %w[d e f], table.data[0].attributes
637
666
  assert_equal %w[d e f], table.data[1].attributes
638
- end
639
-
667
+ end
668
+
640
669
  def test_ensure_setting_column_names_later_does_not_break_replace_column
641
- a = Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
670
+ a = Ruport.Table(%w[a b c], :data => [[1,2,3],[4,5,6]])
642
671
  a.replace_column("b","q") { |r| r.a + r.c }
643
672
  a.column_names = %w[d e f]
644
- assert_equal Table(%w[d e f], :data => [[1,4,3],[4,10,6]]), a
673
+ assert_equal Ruport.Table(%w[d e f], :data => [[1,4,3],[4,10,6]]), a
645
674
 
646
- a = Table([], :data => [[1,2,3],[4,5,6]])
675
+ a = Ruport.Table([], :data => [[1,2,3],[4,5,6]])
647
676
 
648
677
  a.replace_column(1) { |r| r[0] + r[2] }
649
678
 
650
679
  a.column_names = %w[d e f]
651
- assert_equal Table(%w[d e f], :data => [[1,4,3],[4,10,6]]), a
680
+ assert_equal Ruport.Table(%w[d e f], :data => [[1,4,3],[4,10,6]]), a
652
681
 
653
- a = Table([], :data => [[1,2,3],[4,5,6]])
682
+ a = Ruport.Table([], :data => [[1,2,3],[4,5,6]])
654
683
 
655
684
  a.replace_column(2) { |r| r[0] + 5 }
656
685
 
@@ -659,98 +688,98 @@ class TestTableColumnOperations < Test::Unit::TestCase
659
688
  a.replace_column("b") { |r| r.a + 4 }
660
689
  a.replace_column("b","foo") { |r| r.b + 1 }
661
690
 
662
- assert_equal Table(%w[a foo c], :data => [[1,6,6],[4,9,9]]), a
663
- end
691
+ assert_equal Ruport.Table(%w[a foo c], :data => [[1,6,6],[4,9,9]]), a
692
+ end
664
693
 
665
694
  def test_ensure_renaming_a_missing_column_fails_silently
666
- a = Table(%w[a b c])
667
- assert_nothing_raised do
668
- a.rename_column("d", "z")
669
- end
695
+ a = Ruport.Table(%w[a b c])
696
+
697
+ a.rename_column("d", "z")
698
+
670
699
  end
671
700
 
672
- end
701
+ end
702
+
703
+ class TestTableFromCSV < Minitest::Test
673
704
 
674
- class TestTableFromCSV < Test::Unit::TestCase
675
-
676
705
  def test_csv_load
677
706
  table = Ruport::Data::Table.load(File.join(TEST_SAMPLES,"data.csv"))
678
707
  assert_equal %w[col1 col2 col3], table.column_names
679
708
  rows = [%w[a b c],["d",nil,"e"]]
680
709
  table.each { |r| assert_equal rows.shift, r.to_a
681
710
  assert_equal %w[col1 col2 col3], r.attributes }
682
- expected = Table(%w[a b c], :data => [%w[1 2 3],%w[4 5 6]])
683
-
711
+ expected = Ruport.Table(%w[a b c], :data => [%w[1 2 3],%w[4 5 6]])
712
+
684
713
  # ticket:94
685
- table = Ruport::Data::Table.load( File.join(TEST_SAMPLES,"data.tsv"),
714
+ table = Ruport::Data::Table.load( File.join(TEST_SAMPLES,"data.tsv"),
686
715
  :csv_options => { :col_sep => "\t" } )
687
- assert_equal expected, table
716
+ assert_equal expected, table
688
717
 
689
718
  expected = ['c','e']
690
-
719
+
691
720
  table = Ruport::Data::Table.load( File.join(TEST_SAMPLES,"data.csv"),
692
721
  :csv_options => { :headers => true, :header_converters => :symbol }
693
- ) do |s,r|
722
+ ) do |_s,r|
694
723
  assert_equal expected.shift, r[:col3]
695
724
  end
696
725
 
697
726
  assert_equal [:col1,:col2,:col3], table.column_names
698
727
 
699
728
  expected = ['c','e']
700
-
701
- Ruport::Data::Table.load( File.join(TEST_SAMPLES,"data.csv"),
702
- :records => true ) do |s,r|
729
+
730
+ Ruport::Data::Table.load( File.join(TEST_SAMPLES,"data.csv"),
731
+ :records => true ) do |_s,r|
703
732
  assert_equal expected.shift, r.col3
704
733
  assert_kind_of Ruport::Data::Record, r
705
734
  end
706
-
707
- table = Ruport::Data::Table.load( File.join(TEST_SAMPLES, "data.csv"),
735
+
736
+ table = Ruport::Data::Table.load( File.join(TEST_SAMPLES, "data.csv"),
708
737
  :has_names => false )
709
738
  assert_equal([],table.column_names)
710
- assert_equal(Table([],
739
+ assert_equal(Ruport.Table([],
711
740
  :data => [%w[col1 col2 col3],%w[a b c],["d",nil,"e"]]), table)
712
741
  end
713
742
 
714
743
  # ticket:76
715
744
  def test_parse
716
- assert_nothing_raised {
717
- Ruport::Data::Table.parse("a,b,c\n1,2,3\n")
718
- }
719
-
745
+
746
+ Ruport::Data::Table.parse("a,b,c\n1,2,3\n")
747
+
748
+
720
749
  table = Ruport::Data::Table.parse("a,b,c\n1,2,3\n4,5,6\n")
721
- expected = Table(%w[a b c], :data => [%w[1 2 3],%w[4 5 6]])
722
-
723
- table = Ruport::Data::Table.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6\n",
750
+ expected = Ruport.Table(%w[a b c], :data => [%w[1 2 3],%w[4 5 6]])
751
+
752
+ table = Ruport::Data::Table.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6\n",
724
753
  :csv_options => { :col_sep => "\t" } )
725
- assert_equal expected, table
754
+ assert_equal expected, table
726
755
 
727
- table = Ruport::Data::Table.parse( "a,b,c\n1,2,3\n4,5,6\n",
756
+ table = Ruport::Data::Table.parse( "a,b,c\n1,2,3\n4,5,6\n",
728
757
  :has_names => false)
729
758
  assert_equal([],table.column_names)
730
- assert_equal(Table([], :data => [%w[a b c],%w[1 2 3],%w[4 5 6]]), table)
759
+ assert_equal(Ruport.Table([], :data => [%w[a b c],%w[1 2 3],%w[4 5 6]]), table)
731
760
  end
732
-
761
+
733
762
  def test_csv_block_form
734
763
  expected = [%w[a b],%w[1 2],%w[3 4]]
735
- t = Ruport::Data::Table.send(:get_table_from_csv,
736
- :parse, "a,b\n1,2\n3,4",
764
+ t = Ruport::Data::Table.send(:get_table_from_csv,
765
+ :parse, "a,b\n1,2\n3,4",
737
766
  :has_names => false) do |s,r|
738
767
  assert_equal expected.shift, r
739
- s << r
768
+ s << r
740
769
  end
741
- assert_equal Table([], :data => [%w[a b],%w[1 2],%w[3 4]]), t
742
- end
743
-
770
+ assert_equal Ruport.Table([], :data => [%w[a b],%w[1 2],%w[3 4]]), t
771
+ end
772
+
744
773
  # - BUG TRAPS --------------------
745
-
774
+
746
775
  def test_ensure_using_csv_block_mode_works
747
776
  expected = [%w[a b],%w[1 2],%w[3 4]]
748
777
  t = Ruport::Data::Table.parse("a,b\n1,2\n3,4",:has_names => false) { |s,r|
749
778
  assert_equal expected.shift, r
750
- s << r
779
+ s << r
751
780
  s << r
752
781
  }
753
- assert_equal Table([],
782
+ assert_equal Ruport.Table([],
754
783
  :data => [%w[a b],%w[a b],%w[1 2], %w[1 2],%w[3 4],%w[3 4]]), t
755
784
  x = Ruport::Data::Table.load(File.join(TEST_SAMPLES,"data.csv")) { |s,r|
756
785
  assert_kind_of Ruport::Data::Feeder, s
@@ -759,37 +788,31 @@ class TestTableFromCSV < Test::Unit::TestCase
759
788
  s << r
760
789
  }
761
790
  assert_equal 4, x.length
762
- end
763
-
791
+ end
792
+
764
793
  def test_ensure_csv_loading_accepts_table_options
765
- a = Table(File.join(TEST_SAMPLES,"addressbook.csv"),
766
- :record_class => DuckRecord)
767
- a.each { |r| assert_kind_of(DuckRecord,r) }
768
- end
769
-
794
+ a = Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"), :record_class => DuckRecord)
795
+ a.each { |r| assert_kind_of(DuckRecord,r) }
796
+ end
797
+
770
798
  def test_ensure_table_from_csv_accepts_record_class_in_block_usage
771
- a = Table(File.join(TEST_SAMPLES,"addressbook.csv"),
772
- :record_class => DuckRecord, :records => true) do |s,r|
773
- assert_kind_of(DuckRecord,r)
799
+ Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"), :record_class => DuckRecord, :records => true) do |_s,r|
800
+ assert_kind_of(DuckRecord,r)
774
801
  end
775
802
  end
776
-
777
803
  end
778
804
 
779
- class TestTableKernelHack < Test::Unit::TestCase
780
-
805
+ class TestTableKernelHack < Minitest::Test
781
806
  def test_simple
782
- assert_equal Ruport::Data::Table.new(:column_names => %w[a b c]),
783
- Table(%w[a b c])
784
- assert_equal Ruport::Data::Table.new(:column_names => %w[a b c]),
785
- Table("a","b","c")
807
+ assert_equal Ruport::Data::Table.new(:column_names => %w[a b c]), Ruport.Table(%w[a b c])
808
+ assert_equal Ruport::Data::Table.new(:column_names => %w[a b c]), Ruport.Table("a","b","c")
786
809
  assert_equal Ruport::Data::Table.load(
787
810
  File.join(TEST_SAMPLES,"addressbook.csv")),
788
- Table(File.join(TEST_SAMPLES,"addressbook.csv"))
811
+ Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"))
789
812
  assert_equal Ruport::Data::Table.load(
790
813
  File.join(TEST_SAMPLES,"addressbook.csv"), :has_names => false),
791
- Table(File.join(TEST_SAMPLES,"addressbook.csv"), :has_names => false)
792
- Table("a","b","c") do |t|
814
+ Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv"), :has_names => false)
815
+ Ruport.Table("a","b","c") do |t|
793
816
  t << [1,2,3]
794
817
  assert_equal(
795
818
  Ruport::Data::Table.new(:column_names => %w[a b c], :data => [[1,2,3]]),
@@ -797,19 +820,19 @@ class TestTableKernelHack < Test::Unit::TestCase
797
820
  )
798
821
  end
799
822
 
800
- assert_equal Table("a"), Table(%w[a])
801
- assert_equal Table(:a), Table([:a])
823
+ assert_equal Ruport.Table("a"), Ruport.Table(%w[a])
824
+ assert_equal Ruport.Table(:a), Ruport.Table([:a])
802
825
  end
803
826
 
804
827
  def test_iterators
805
- Table(File.join(TEST_SAMPLES,"addressbook.csv")) do |s,r|
828
+ Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv")) do |s,r|
806
829
  assert_kind_of(Array,r)
807
830
  assert_kind_of(Ruport::Data::Feeder,s)
808
831
  end
809
832
 
810
833
  n = 0
811
834
 
812
- Table(:string => "a,b,c\n1,2,3\n4,5,6\n") do |s,r|
835
+ Ruport.Table(:string => "a,b,c\n1,2,3\n4,5,6\n") do |s,r|
813
836
  assert_kind_of(Array,r)
814
837
  assert_kind_of(Ruport::Data::Feeder,s)
815
838
  n += 1
@@ -817,22 +840,21 @@ class TestTableKernelHack < Test::Unit::TestCase
817
840
 
818
841
  assert_equal 2, n
819
842
  end
820
-
843
+
821
844
  def test_with_file_arg
822
- assert_equal Table(File.join(TEST_SAMPLES,"addressbook.csv")),
823
- Table(:file => File.join(TEST_SAMPLES,"addressbook.csv"))
845
+ assert_equal Ruport.Table(File.join(TEST_SAMPLES,"addressbook.csv")),
846
+ Ruport.Table(:file => File.join(TEST_SAMPLES,"addressbook.csv"))
824
847
  end
825
-
848
+
826
849
  def test_with_string_arg
827
850
  csv_string = "id,name\n1,Inky\n2,Blinky\n3,Clyde"
828
-
851
+
829
852
  assert_equal Ruport::Data::Table.parse(csv_string),
830
- Table(:string => csv_string)
853
+ Ruport.Table(:string => csv_string)
831
854
  end
832
855
 
833
856
  def test_ensure_table_hack_accepts_normal_constructor_args
834
857
  assert_equal Ruport::Data::Table.new(:column_names => %w[a b c]),
835
- Table(:column_names => %w[a b c])
836
- end
837
-
858
+ Ruport.Table(:column_names => %w[a b c])
859
+ end
838
860
  end