ruport 0.4.13 → 0.4.15

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.
@@ -10,11 +10,22 @@ class MockPlugin < Ruport::Format::Plugin
10
10
 
11
11
  renderer(:document) { data }
12
12
 
13
- register_on :table_engine
14
- register_on :document_engine
15
-
16
13
  rendering_options :red_cloth_enabled => true,
17
14
  :erb_enabled => true
15
+
16
+ action(:reverse_data) { data.reverse }
17
+ action(:mock_action) { "mock" }
18
+
19
+ helper(:test) { |eng| eng }
20
+
21
+ attribute :apple
22
+
23
+ helper(:complex_test) { |eng|
24
+ eng.rewrite_column(0) { "a" } if apple
25
+ }
26
+
27
+ register_on :table_engine
28
+ register_on :document_engine
18
29
 
19
30
  end
20
31
 
@@ -25,13 +36,36 @@ class TestTabularFormatEngine < Test::Unit::TestCase
25
36
  def setup
26
37
  @engine = Format::Engine::Table.dup
27
38
  end
28
-
39
+
40
+ def test_plugin_attributes
41
+ assert_equal nil, @engine.active_plugin.apple
42
+ @engine.active_plugin.apple = :banana
43
+ assert_equal :banana, @engine.active_plugin.apple
44
+ end
29
45
  def test_basic_render
30
46
  @engine.plugin = :mock
31
47
  @engine.data = [[1,2,3],[4,5,6],[7,8,9]]
32
48
  assert_equal( "#{@engine.data}", @engine.render )
33
49
  end
34
50
 
51
+ def test_plugin_actions
52
+ @engine.plugin = :mock
53
+ @engine.data = [1,2,3,4]
54
+ assert_equal( [4,3,2,1], @engine.active_plugin.reverse_data )
55
+ assert_equal( "mock", @engine.active_plugin.mock_action )
56
+ end
57
+
58
+ def test_helper
59
+ @engine.plugin = :mock
60
+ assert_equal @engine, @engine.test
61
+ @engine.data = [[1,2,3],[4,5,6]]
62
+ @engine.complex_test
63
+ assert_equal([[1,2,3],[4,5,6]],@engine.data)
64
+ @engine.active_plugin.apple = true
65
+ @engine.complex_test
66
+ assert_equal([['a',2,3],['a',5,6]],@engine.data)
67
+ end
68
+
35
69
  def test_render_without_field_names
36
70
  @engine.plugin = :mock
37
71
  @engine.show_field_names = false
@@ -68,7 +102,63 @@ class TestTabularFormatEngine < Test::Unit::TestCase
68
102
  @engine.data = [[1,2,3],[4,5,6]].to_ds(%w[a b c])
69
103
  assert_equal(3,@engine.num_cols)
70
104
  end
105
+
106
+ def test_plugin_access
107
+ @engine.plugin = :mock
108
+ @engine.data = [[1,5],[3,8]]
109
+
110
+ #normal access
111
+ assert_equal :mock, @engine.active_plugin.plugin_name
112
+ assert_equal [[1,5],[3,8]], @engine.active_plugin.data
113
+
114
+ #block access
115
+ @engine.active_plugin do |p|
116
+ assert_equal :mock, p.plugin_name
117
+ assert_equal [[1,5],[3,8]], p.data
118
+ end
119
+ end
120
+
121
+ def test_prune
122
+ @engine.plugin = :mock
123
+ @engine.data = [[1,2,3],[1,4,3],[2,4,1]]
124
+ @engine.prune
125
+ assert_equal([[1,2,3],[nil,4,3],[2,4,1]],@engine.data)
126
+ @engine.data = [[1,2,3],[2,4,1],[2,7,9],[1,2,3],[1,7,9]]
127
+ @engine.prune
128
+ assert_equal([[1,2,3],[2,4,1],[nil,7,9],[1,2,3],[nil,7,9]],
129
+ @engine.data)
130
+ @engine.data = [[1,2,3],[1,2,4],[1,3,7],[2,1,9],[2,2,3],[2,2,9]]
131
+ @engine.prune
132
+ assert_equal( [[1,2,3],[nil,nil,4],[nil,3,7],
133
+ [2,1,9],[nil,2,3],[nil,nil,9]], @engine.data)
134
+
135
+ @engine.data = [[1,2,3],[1,2,4],[1,3,7],[2,1,9],[2,2,3],[2,2,9]]
136
+ @engine.prune(1)
137
+ assert_equal( [[1,2,3],[nil,2,4],[nil,3,7],
138
+ [2,1,9],[nil,2,3],[nil,2,9]], @engine.data)
139
+
140
+ data = DataSet.new %w[name date service amount]
141
+ data << [ "Greg Gibson", "1/1/2000", "Prophy", "100.00" ] <<
142
+ [ "Greg Gibson", "1/1/2000", "Filling", "100.00" ] <<
143
+ [ "Greg Gibson", "1/12/2000", "Prophy", "100.00" ] <<
144
+ [ "Greg Gibson", "1/12/2000", "Filling", "100.00" ] <<
145
+ [ "Greg Brown", "1/12/2000", "Prophy", "100.00" ]
146
+
147
+ @engine.data = data
148
+ @engine.prune(1)
149
+ data2 = data.dup
150
+ data2[1][0] = data2[2][0] = data2[3][0] = nil
151
+ assert_equal(data2, @engine.data)
71
152
 
153
+ @engine.data=data
154
+
155
+ data3 = data2.dup
156
+ data3[1][1] = data3[3][1] = nil
157
+ @engine.prune(2)
158
+
159
+ assert_equal(data3, @engine.data)
160
+ end
161
+
72
162
  end
73
163
 
74
164
  class TestDocumentFormatEngine < Test::Unit::TestCase
data/test/tc_record.rb ADDED
@@ -0,0 +1,140 @@
1
+ require "test/unit"
2
+ require "ruport"
3
+
4
+
5
+ class RecordTest < Test::Unit::TestCase
6
+
7
+ include Ruport::Data
8
+
9
+ def setup
10
+ @attributes = %w[a b c d]
11
+ @record = Ruport::Data::Record.new [1,2,3,4], :attributes => @attributes
12
+ end
13
+
14
+ def test_init
15
+ record = Ruport::Data::Record.new [1,2,3,4]
16
+ assert_equal 1, record[0]
17
+ assert_equal 2, record[1]
18
+ assert_equal 3, record[2]
19
+ assert_equal 4, record[3]
20
+
21
+ assert_equal 1, @record["a"]
22
+ assert_equal 4, @record["d"]
23
+ assert_equal 2, @record.b
24
+ assert_equal 3, @record.c
25
+
26
+ end
27
+
28
+ def test_brackets
29
+ assert_equal 1, @record[0]
30
+ assert_equal 2, @record[1]
31
+ assert_equal 3, @record[2]
32
+ assert_equal 4, @record[3]
33
+
34
+ assert_equal 1, @record["a"]
35
+ assert_equal 2, @record["b"]
36
+ assert_equal 3, @record["c"]
37
+ assert_equal 4, @record["d"]
38
+ end
39
+
40
+ def test_bracket_equals
41
+ @record[1] = "godzilla"
42
+ @record["d"] = "mothra"
43
+
44
+ assert_equal @record[1], "godzilla"
45
+ assert_equal @record["b"], "godzilla"
46
+
47
+ assert_equal @record[3], "mothra"
48
+ assert_equal @record["d"], "mothra"
49
+ end
50
+
51
+ def test_accessors
52
+ assert_equal @record.a, @record["a"]
53
+ assert_equal @record.b, @record["b"]
54
+ assert_equal @record.c, @record["c"]
55
+ assert_equal @record.d, @record["d"]
56
+ end
57
+
58
+ def test_attribute_setting
59
+ @record.a = 10
60
+ @record.b = 20
61
+ assert_equal 10, @record.a
62
+ assert_equal 20, @record.b
63
+ end
64
+
65
+ def test_to_a
66
+ assert_equal [1,2,3,4], a = @record.to_a; a[0] = "q"
67
+ assert_equal [1,2,3,4], @record.to_a
68
+ end
69
+
70
+ def test_to_h
71
+ assert_nothing_raised { @record.to_h }
72
+ assert_equal({ "a" => 1, "b" => 2, "c" => 3, "d" => 4 }, @record.to_h)
73
+ end
74
+
75
+ def test_equality
76
+
77
+ dc = %w[a b c d]
78
+ dc2 = %w[a b c d]
79
+ dc3 = %w[a b c]
80
+
81
+ rec1 = Record.new [1,2,3,4]
82
+ rec2 = Record.new [1,2,3,4]
83
+ rec3 = Record.new [1,2]
84
+ rec4 = Record.new [1,2,3,4], :attributes => dc
85
+ rec5 = Record.new [1,2,3,4], :attributes => dc2
86
+ rec6 = Record.new [1,2,3,4], :attributes => dc3
87
+ rec7 = Record.new [1,2], :attributes => dc
88
+
89
+ [:==, :eql?].each do |op|
90
+ assert rec1.send(op, rec2)
91
+ assert rec4.send(op, rec5)
92
+ assert ! rec1.send(op,rec3)
93
+ assert ! rec1.send(op,rec4)
94
+ assert ! rec6.send(op,rec7)
95
+ assert ! rec3.send(op,rec4)
96
+ end
97
+
98
+ end
99
+
100
+ def test_attributes
101
+ assert_equal %w[a b c d], @record.attributes
102
+ @record.attributes = %w[apple banana courier django]
103
+ assert_equal %w[apple banana courier django], @record.attributes
104
+ end
105
+
106
+ def test_reordering
107
+ r = @record.reorder "a","d","b","c"
108
+ assert_equal [1,4,2,3], r.data
109
+ assert_equal %w[a d b c], r.attributes
110
+
111
+ assert_equal [1,2,3,4], @record.data
112
+ assert_equal %w[a b c d], @record.attributes
113
+
114
+ @record.reorder! "a","d","b","c"
115
+ assert_equal [1,4,2,3], @record.data
116
+ assert_equal %w[a d b c], @record.attributes
117
+
118
+ @record.reorder! 3,1,2
119
+ assert_equal [3,4,2], @record.data
120
+ assert_equal %w[c d b], @record.attributes
121
+ end
122
+
123
+ def test_dup
124
+ rec1 = Record.new [1,2,3,4], :attributes => %w[a b c d]
125
+ rec2 = rec1.dup
126
+
127
+ rec2.a = 5
128
+ rec2["b"] = 7
129
+ rec2[2] = 9
130
+
131
+ rec2.tag(:apple)
132
+
133
+ assert_equal [1,2,3,4], rec1.data
134
+ assert_equal [5,7,9,4], rec2.data
135
+
136
+ assert_equal [], rec1.tags
137
+ assert_equal [:apple], rec2.tags
138
+ end
139
+
140
+ end
data/test/tc_table.rb ADDED
@@ -0,0 +1,39 @@
1
+ require "test/unit"
2
+ require "ruport"
3
+
4
+ class TestTable < Test::Unit::TestCase
5
+ def test_constructors
6
+ table = Ruport::Data::Table.new
7
+ table2 = Ruport::Data::Table.new :column_names => %w[a b c]
8
+ table3 = Ruport::Data::Table.new :data => [[1,2,3]]
9
+ table4 = Ruport::Data::Table.new :column_names => %w[col1 col2 col3],
10
+ :data => [[1,2,3]]
11
+ tables = [table,table2,table3,table4]
12
+ tables.zip([nil,%w[a b c], nil, %w[col1 col2 col3]]).each do |t,n|
13
+ assert_equal n, t.column_names
14
+ end
15
+
16
+ a = Ruport::Data::Record.new [1,2,3]
17
+ b = a.dup
18
+ b.attributes = %w[col1 col2 col3]
19
+ tables.zip([[],[],[a],[b]]).each { |t,n| assert_equal n, t.data }
20
+ end
21
+
22
+ def test_csv_load
23
+ table = Ruport::Data::Table.load("test/samples/data.csv")
24
+ assert_equal %w[col1 col2 col3], table.column_names
25
+ rows = [%w[a b c],["d",nil,"e"]]
26
+ table.each { |r| assert_equal rows.shift, r.data
27
+ assert_equal %w[col1 col2 col3], r.attributes }
28
+ end
29
+
30
+ def test_reorder
31
+ table = Ruport::Data::Table.load("test/samples/data.csv")
32
+ table.reorder! *%w[col1 col3]
33
+ assert_equal %w[col1 col3], table.column_names
34
+ rows = [%w[a c], %w[d e]]
35
+ table.each { |r| assert_equal rows.shift, r.data
36
+ assert_equal %w[col1 col3], r.attributes }
37
+ end
38
+
39
+ end
@@ -0,0 +1,53 @@
1
+ #!/usr/local/bin/ruby -w
2
+
3
+ require "test/unit"
4
+ require "ruport"
5
+
6
+ class TestTaggable < Test::Unit::TestCase
7
+
8
+ include Ruport::Data
9
+
10
+ def setup
11
+ @obj = Object.new.extend(Taggable)
12
+ end
13
+
14
+ def test_tags_are_nil_initially
15
+ assert_equal nil, @obj.instance_variable_get(:@ruport_tags)
16
+ end
17
+
18
+ def test_get_tags
19
+ @obj.instance_variable_set(:@ruport_tags, [:blue, :red])
20
+ assert_equal [:blue, :red], @obj.tags
21
+ end
22
+
23
+ def test_set_tags
24
+ @obj.tags = [:orange, :yellow]
25
+ assert_equal [:orange, :yellow], @obj.instance_variable_get(:@ruport_tags)
26
+ end
27
+
28
+ def test_tag
29
+ @obj.tag(:purple)
30
+ assert_equal [:purple], @obj.instance_variable_get(:@ruport_tags)
31
+ end
32
+
33
+ def test_has_tag
34
+ @obj.tag(:maroon)
35
+ assert @obj.has_tag?(:maroon)
36
+ end
37
+
38
+ def test_delete_tag
39
+ @obj.tag(:scarlet)
40
+ assert @obj.has_tag?(:scarlet)
41
+ @obj.delete_tag(:scarlet)
42
+ assert !@obj.has_tag?(:scarlet)
43
+ end
44
+
45
+ def test_avoid_duplication
46
+ @obj.tag(:smelly)
47
+ assert_equal 1, @obj.tags.select { |t| t.eql? :smelly }.length
48
+ @obj.tag(:smelly)
49
+ assert_equal 1, @obj.tags.select { |t| t.eql? :smelly }.length
50
+ end
51
+
52
+ end
53
+
data/test/ts_all.rb CHANGED
@@ -7,3 +7,6 @@ require "test/tc_config"
7
7
  require "test/tc_report"
8
8
  require "test/tc_data_set"
9
9
  require "test/tc_data_row"
10
+ require "test/tc_taggable"
11
+ require "test/tc_record"
12
+ require "test/tc_table"