greenpepper-ruby 0.0.1

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 (120) hide show
  1. data/bin/greenpepperize +71 -0
  2. data/bin/greenpepperrails +33 -0
  3. data/bin/greenpepperruby +15 -0
  4. data/data/greenpepper.rake +37 -0
  5. data/data/helper.rb +32 -0
  6. data/data/tags +6 -0
  7. data/lib/greenpepper/argumentparser.rb +161 -0
  8. data/lib/greenpepper/common/loadpath.rb +7 -0
  9. data/lib/greenpepper/context/htmlcontext.rb +26 -0
  10. data/lib/greenpepper/converter.rb +347 -0
  11. data/lib/greenpepper/core.rb +152 -0
  12. data/lib/greenpepper/example/collectionexample.rb +305 -0
  13. data/lib/greenpepper/example/dowithexample.rb +192 -0
  14. data/lib/greenpepper/example/exampleheader.rb +41 -0
  15. data/lib/greenpepper/example/examplewithfixture.rb +73 -0
  16. data/lib/greenpepper/example/executionresults.rb +160 -0
  17. data/lib/greenpepper/example/fieldaccessor.rb +36 -0
  18. data/lib/greenpepper/example/freetextexample.rb +51 -0
  19. data/lib/greenpepper/example/importexample.rb +39 -0
  20. data/lib/greenpepper/example/nameresolver.rb +69 -0
  21. data/lib/greenpepper/example/ruleforexample.rb +117 -0
  22. data/lib/greenpepper/example/setupexample.rb +79 -0
  23. data/lib/greenpepper/example/silentexample.rb +14 -0
  24. data/lib/greenpepper/example/unknownexample.rb +17 -0
  25. data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
  26. data/lib/greenpepper/executionunit.rb +39 -0
  27. data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
  28. data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
  29. data/lib/greenpepper/factory/examplefactory.rb +14 -0
  30. data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
  31. data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
  32. data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
  33. data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
  34. data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
  35. data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
  36. data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
  37. data/lib/greenpepper/freetext.rb +164 -0
  38. data/lib/greenpepper/grammar/array.treetop +51 -0
  39. data/lib/greenpepper/grammar/arrayparser.rb +14 -0
  40. data/lib/greenpepper/greenpepperconfig.rb +19 -0
  41. data/lib/greenpepper/greenpeppertask.rb +60 -0
  42. data/lib/greenpepper/logger.rb +45 -0
  43. data/lib/greenpepper/parser/freetextparser.rb +96 -0
  44. data/lib/greenpepper/parser/htmlparser.rb +70 -0
  45. data/lib/greenpepper/parser/scenario.rb +25 -0
  46. data/lib/greenpepper/parser/table.rb +37 -0
  47. data/lib/greenpepper/parser/wikiparser.rb +26 -0
  48. data/lib/greenpepper/pass/freetextpass.rb +24 -0
  49. data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
  50. data/lib/greenpepper/pass/tablepass.rb +38 -0
  51. data/lib/greenpepper/railsargumentparser.rb +46 -0
  52. data/lib/greenpepper/redpeppertask.rb +89 -0
  53. data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
  54. data/lib/greenpepper/writer/consolewriter.rb +21 -0
  55. data/lib/greenpepper/writer/freetextresult.rb +233 -0
  56. data/lib/greenpepper/writer/freetextwriter.rb +44 -0
  57. data/lib/greenpepper/writer/html.rb +14 -0
  58. data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
  59. data/lib/greenpepper/writer/htmlresult.rb +192 -0
  60. data/lib/greenpepper/writer/htmlwriter.rb +112 -0
  61. data/lib/greenpepper/writer/output.rb +26 -0
  62. data/lib/greenpepper/writer/result.rb +35 -0
  63. data/lib/greenpepper/writer/xmlwriter.rb +32 -0
  64. data/test/coreseedstest.rb +39 -0
  65. data/test/greenpepper/argumentparsertest.rb +162 -0
  66. data/test/greenpepper/common/loadpathtest.rb +24 -0
  67. data/test/greenpepper/common/stattest.rb +186 -0
  68. data/test/greenpepper/convertertest.rb +371 -0
  69. data/test/greenpepper/coretest.rb +159 -0
  70. data/test/greenpepper/example/collectionexampletest.rb +484 -0
  71. data/test/greenpepper/example/dowithexampletest.rb +148 -0
  72. data/test/greenpepper/example/exampletest.rb +28 -0
  73. data/test/greenpepper/example/freetextexampletest.rb +151 -0
  74. data/test/greenpepper/example/importexampletest.rb +79 -0
  75. data/test/greenpepper/example/nameresolvertest.rb +56 -0
  76. data/test/greenpepper/example/ruleforexampletest.rb +225 -0
  77. data/test/greenpepper/example/setupexampletest.rb +140 -0
  78. data/test/greenpepper/example/silentexampletest.rb +17 -0
  79. data/test/greenpepper/example/unknownexampletest.rb +17 -0
  80. data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
  81. data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
  82. data/test/greenpepper/factory/examplefactorytest.rb +88 -0
  83. data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
  84. data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
  85. data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
  86. data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
  87. data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
  88. data/test/greenpepper/freetexttest.rb +222 -0
  89. data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
  90. data/test/greenpepper/loggertest.rb +26 -0
  91. data/test/greenpepper/parser/freetextparsertest.rb +124 -0
  92. data/test/greenpepper/parser/htmlparsertest.rb +77 -0
  93. data/test/greenpepper/parser/wikiparsertest.rb +21 -0
  94. data/test/greenpepper/pass/freetextpasstest.rb +54 -0
  95. data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
  96. data/test/greenpepper/pass/tablepasstest.rb +23 -0
  97. data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
  98. data/test/greenpepper/writer/freetextwritertest.rb +301 -0
  99. data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
  100. data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
  101. data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
  102. data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
  103. data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
  104. data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
  105. data/test/greenpepper/writer/writertest.rb +33 -0
  106. data/test/greenpepper/writer/xmlwritertest.rb +34 -0
  107. data/test/integration/collectionexampleintegrationtest.rb +64 -0
  108. data/test/integration/errorhandlingintegrationtest.rb +68 -0
  109. data/test/integration/freetextexampleintegrationtest.rb +75 -0
  110. data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
  111. data/test/integration/importexampleintegrationtest.rb +41 -0
  112. data/test/integration/interpretationordertest.rb +48 -0
  113. data/test/integration/ruleforexampleintegrationtest.rb +102 -0
  114. data/test/integration/securityintegrationtest.rb +30 -0
  115. data/test/integration/setupexampleintegrationtest.rb +31 -0
  116. data/test/integration/silentexampleintegrationtest.rb +29 -0
  117. data/test/task/greenpeppertasktest.rb +96 -0
  118. data/test/task/redpeppertasktest.rb +120 -0
  119. data/vendor/accents.rb +85 -0
  120. metadata +234 -0
@@ -0,0 +1,225 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: Februrary 24, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'test/helper/assert.rb'
8
+ require 'test/fixtures/fixture.rb'
9
+ require 'greenpepper/example/ruleforexample'
10
+
11
+ include GreenPepper
12
+
13
+ class RuleForExampleTest < Test::Unit::TestCase
14
+ def test_for_example_one_input_one_output
15
+ ex = base_equality_ruleforexample
16
+
17
+ ex.add_row ["1","1"]
18
+ results = ex.execute
19
+ assert_results_success results
20
+ end
21
+
22
+ def test_for_example_two_input_one_output
23
+ ex = RuleForExample.new "RuleForExampleSumFixture"
24
+ ex.add_input_header "operand1"
25
+ ex.add_input_header "operand2"
26
+ ex.add_output_header "sum"
27
+ ex.add_row ["1","2","3"]
28
+ results = ex.execute
29
+ assert_results_success results
30
+ end
31
+
32
+ def test_for_example_two_input_two_output
33
+ ex = base_add_sub_ruleforexample
34
+
35
+ ex.add_row ["1","2","3","-1"]
36
+ results = ex.execute
37
+ assert_results_success results
38
+ end
39
+
40
+ def test_for_example_two_input_two_output_failure
41
+ ex = base_add_sub_ruleforexample
42
+
43
+ ex.add_row ["2","5","7","1"]
44
+ results = ex.execute
45
+ assert_equal 1, results.failures
46
+ end
47
+
48
+ def test_for_example_one_input_one_output_two_rows
49
+ ex = base_equality_ruleforexample
50
+
51
+ ex.add_row ["1","1"]
52
+ ex.add_row ["2","2"]
53
+ results = ex.execute
54
+ assert_results_success results
55
+ end
56
+
57
+ def test_for_example_three_inputs_two_outputs_two_rows
58
+ ex = RuleForExample.new "RuleForExampleAddSubFixtureThreeOperand"
59
+ ex.add_input_header "operand1"
60
+ ex.add_input_header "operand2"
61
+ ex.add_output_header "sum"
62
+ ex.add_input_header "operand3"
63
+ ex.add_output_header "sub"
64
+ ex.add_row ["1","2","3","1","-2"]
65
+ ex.add_row ["3","4","7","3","-4"]
66
+ results = ex.execute
67
+ assert_results_success results
68
+ end
69
+
70
+ def test_for_example_test_failure_count
71
+ ex = base_equality_ruleforexample
72
+
73
+ ex.add_row ["1","2"]
74
+ ex.add_row ["3","3"]
75
+ ex.add_row ["5","9"]
76
+ ex.add_row ["8","8"]
77
+
78
+ results = ex.execute
79
+ assert_equal 2, results.failures
80
+ end
81
+
82
+ def test_for_example_test_success_count
83
+ ex = base_equality_ruleforexample
84
+
85
+ ex.add_row ["1","1"]
86
+ ex.add_row ["3","3"]
87
+ ex.add_row ["5","-9"]
88
+ ex.add_row ["8","6"]
89
+
90
+ results = ex.execute
91
+ assert_equal 2, results.successes
92
+ end
93
+
94
+ def test_for_example_result_per_output
95
+ #all true
96
+ ex = base_equality_ruleforexample
97
+
98
+ ex.add_row ["1","1"]
99
+ results = ex.execute
100
+
101
+ results.each { |stat|
102
+ assert !stat.failure?
103
+ }
104
+
105
+ #all false
106
+ ex = base_equality_ruleforexample
107
+
108
+ ex.add_row ["1","2"]
109
+ results = ex.execute
110
+
111
+ assert results.at(2,1).failure?
112
+ end
113
+
114
+ def test_for_example_with_exception
115
+ ex = RuleForExample.new "RaiseErrorFixture"
116
+ ex.add_input_header "operand_1"
117
+ ex.add_output_header "raise_error"
118
+ ex.add_row ["1","2"]
119
+ results = ex.execute
120
+
121
+ assert_equal RuntimeError, results.at(2,1).exception.class
122
+ end
123
+
124
+ def test_for_example_non_existing_Fixture
125
+ ex = RuleForExample.new "Non existing fixture"
126
+ ex.add_input_header "value"
127
+ ex.add_output_header "equality"
128
+ ex.add_row ["1","1"]
129
+ results = ex.execute
130
+
131
+ assert_results_fixture_not_found(results)
132
+ assert_equal results.errors, 1
133
+ end
134
+
135
+ def test_for_example_no_expected_result_should_return_value
136
+ ex = base_add_sub_ruleforexample
137
+
138
+ ex.add_row ["1","2","",""]
139
+ results = ex.execute
140
+
141
+ assert_equal results.ignored, 2
142
+ assert_results_success results
143
+ end
144
+
145
+ def test_for_example_should_initialize_fixture_with_initial_arguments
146
+ ex = RuleForExample.new "RuleForExampleWithInitialValues"
147
+ ex.add_fixture_argument '1'
148
+ ex.add_fixture_argument '2'
149
+ ex.add_output_header "initial_1"
150
+ ex.add_output_header "initial_2"
151
+ ex.add_row ["1", "2"]
152
+ results = ex.execute
153
+
154
+ assert_results_success results
155
+ end
156
+
157
+ def test_for_example_with_name_of_output_column_with_no_function_corresponding_to_the_name
158
+ ex = RuleForExample.new "RuleForExampleEqualityFixture"
159
+ ex.add_input_header "value"
160
+ ex.add_output_header "wrong name"
161
+
162
+ ex.add_row ["1","1"]
163
+ results = ex.execute
164
+ assert_equal 1, results.errors
165
+ end
166
+
167
+ def test_for_example_with_expected_result_is_an_error
168
+ ex = RuleForExample.new "RaiseErrorFixture"
169
+ ex.add_input_header "operand 1"
170
+ ex.add_output_header "raise_error"
171
+ ex.add_row ["1","Error"]
172
+ results = ex.execute
173
+ assert_results_success results
174
+ end
175
+
176
+ def test_for_example_with_expect_an_error_but_do_not_encounter_one
177
+ ex = base_equality_ruleforexample
178
+ ex.add_row ["1","Error"]
179
+ results = ex.execute
180
+ assert_equal 1, results.failures
181
+ end
182
+
183
+ def test_missing_method_in_rule_for_should_not_return_address_in_error
184
+ ex = RuleForExample.new "Object"
185
+ ex.add_output_header('toto')
186
+ ex.add_row [' aaa ']
187
+ results = ex.execute
188
+ res = results.at(1, 0)
189
+
190
+ assert_equal 1, results.errors
191
+ assert res.exception.is_a?(GreenPepperMissingHeaderError)
192
+ end
193
+
194
+ def test_errors_in_results_when_header_accessor_missing_in_fixture
195
+ ex = RuleForExample.new "RuleFor_example_equality_fixture"
196
+ ex.add_input_header "value"
197
+ ex.add_input_header "non existing header"
198
+ ex.add_output_header "equality"
199
+ ex.add_row ['1', '2', '1']
200
+
201
+ results = ex.execute
202
+
203
+ assert results.at(1, 1).exception.is_a?(GreenPepperMissingHeaderError)
204
+ assert results.at(2, 2).success?
205
+
206
+ assert_equal 1, results.errors
207
+ end
208
+
209
+ private
210
+ def base_equality_ruleforexample
211
+ ex = RuleForExample.new "RuleForExampleEqualityFixture"
212
+ ex.add_input_header "value"
213
+ ex.add_output_header "equality"
214
+ ex
215
+ end
216
+
217
+ def base_add_sub_ruleforexample
218
+ ex = RuleForExample.new "RuleForExampleAddSubFixture"
219
+ ex.add_input_header "operand1"
220
+ ex.add_input_header "operand2"
221
+ ex.add_output_header "sum"
222
+ ex.add_output_header "sub"
223
+ ex
224
+ end
225
+ end
@@ -0,0 +1,140 @@
1
+ =begin
2
+ author: Martin Provencher (martin.provencher@usherbrooke.ca)
3
+ date: March 23, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'test/fixtures/setupfixture'
8
+ require 'test/helper/assert'
9
+ require 'greenpepper/example/setupexample'
10
+ require 'greenpepper/example/nameresolver'
11
+
12
+ include GreenPepper
13
+
14
+ class SetupExampleTest < Test::Unit::TestCase
15
+ def setup
16
+ $global_one_value_tab = nil
17
+ end
18
+
19
+ def test_example_execution_calls_enter_row
20
+ ex = SetupExample.new "SetupCreateGlobalTableOneValue"
21
+ ex.add_header "h1"
22
+ ex.add_header "h2"
23
+ ex.add_header "h3"
24
+ ex.add_row ["value 11", "value 12", "value 13" ]
25
+ ex.add_row ["value 21", "value 22", "value 23" ]
26
+ ex.add_row ["value 31", "value 32", "value 33" ]
27
+ results = ex.execute
28
+
29
+ expected = ["value 11", "value 12", "value 13",
30
+ "value 21", "value 22", "value 23",
31
+ "value 31", "value 32", "value 33" ]
32
+
33
+ assert_equal expected, $global_one_value_tab
34
+ assert_results_equals results, 0, 0, 0
35
+
36
+ end
37
+
38
+ def test_example_execution_returns_error_results
39
+ ex = SetupExample.new "Setup create_GLOBAL Table_OneValue"
40
+ ex.add_header "h1"
41
+ ex.add_header "h2"
42
+ ex.add_header "h3"
43
+ ex.add_row ["value 11", "value 12", "value 13" ]
44
+ ex.add_row ["value 21", "value 22", "value 23" ]
45
+ ex.add_row ["value 31", "value 32" ] # missing a value
46
+ results = ex.execute
47
+
48
+ assert_results_equals results, 0, 1, 0
49
+ end
50
+
51
+ def test_nil_error
52
+ ex = SetupExample.new "SetupNilFixture"
53
+ ex.add_header "h1"
54
+ ex.add_row ["v1"]
55
+ results = ex.execute
56
+
57
+ assert_results_equals results, 0, 0, 2
58
+ end
59
+
60
+ def test_no_fixture
61
+ ex = SetupExample.new "NotExistingFixture"
62
+ ex.add_header "h1"
63
+ ex.add_row ["v1"]
64
+ results = ex.execute
65
+
66
+ assert_results_equals results, 0, 0, 1
67
+ end
68
+
69
+ def test_example_execution_natural_language_header
70
+ ex = SetupExample.new "SetupCreateGlobalTableNaturalColumnName",
71
+ NameResolver
72
+ ex.add_header "header 1"
73
+ ex.add_header "header 2"
74
+ ex.add_header "header 3"
75
+ ex.add_row ["value 31", "value 32", "value 33" ]
76
+ results = ex.execute
77
+
78
+ expected = ["value 31", "value 32", "value 33" ]
79
+
80
+ assert_equal expected, $global_one_value_tab
81
+ assert_results_equals results, 0, 0, 0
82
+ end
83
+
84
+ def test_example_execution_error_while_setting_value
85
+ ex = SetupExample.new "SetupRaiseErrorInSetter"
86
+ ex.add_header "h1"
87
+ ex.add_header "h2"
88
+ ex.add_header "h3"
89
+ ex.add_row ["value 11", "value 12", "value 13" ]
90
+ ex.add_row [RuntimeError.new, "value 22", "value 23" ]
91
+ ex.add_row ["value 31", "value 32", "value 33" ]
92
+ results = ex.execute
93
+
94
+ expected = ["value 11", "value 12", "value 13",
95
+ "value 31", "value 32", "value 33" ]
96
+
97
+ assert_results_equals results, 0, 1, 1
98
+ result = results.at 3, 3
99
+
100
+ assert_not_nil result
101
+ assert result.failure?
102
+ end
103
+
104
+ def test_exception_should_be_raised_when_header_accessor_missing_in_fixture
105
+ ex = SetupExample.new "SetupCreateGlobalTableOneValue"
106
+ ex.add_header "non existing header"
107
+ ex.add_row ["value 11"]
108
+ results = ex.execute
109
+
110
+ assert_results_equals results, 0, 1, 1
111
+
112
+ result = results.at 1, 0
113
+ assert result.error?
114
+ assert result.exception.is_a?(GreenPepperMissingHeaderError)
115
+ end
116
+
117
+ def test_setup_gives_relevent_error_if_fixture_has_no_enter_row_method
118
+ ex = SetupExample.new "SetupWithoutEnterRow"
119
+ ex.add_header "h1"
120
+ results = ex.execute
121
+
122
+ assert results.at(0,1).exception.is_a?(GreenPepperMissingMethodError)
123
+ end
124
+
125
+ def test_empty_header_does_not_raise_error
126
+ ex = SetupExample.new "SetupCreateGlobalTableOneValue"
127
+ ex.add_header ''
128
+ ex.add_row ['']
129
+ results = ex.execute
130
+ assert_equal NoExampleResult, results.at(1,0).class
131
+ assert_equal WriteFailExampleResult, results.at(2,1).class
132
+ end
133
+
134
+ private
135
+ def assert_results_equals(results, success, failures, errors)
136
+ assert_equal success, results.successes
137
+ assert_equal failures, results.failures
138
+ assert_equal errors, results.errors
139
+ end
140
+ end
@@ -0,0 +1,17 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 27, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'greenpepper/example/silentexample'
8
+
9
+ include GreenPepper
10
+
11
+ class SilentExampleTest < Test::Unit::TestCase
12
+ def test_silent_example_returns_ignode_result
13
+ ex = SilentExample.new
14
+ results = ex.execute
15
+ assert results.at(0, 0).ignored?
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 26, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'greenpepper/example/unknownexample'
8
+
9
+ include GreenPepper
10
+
11
+ class UnknownExampleTest < Test::Unit::TestCase
12
+ def test_unknown_example_returns_failure_in_results
13
+ ex = UnknownExample.new
14
+ results = ex.execute
15
+ assert results.at(0, 0).error?
16
+ end
17
+ end
@@ -0,0 +1,51 @@
1
+ =begin
2
+ Author: Simon Mathieu (simon.math@gmail.com)
3
+ Date: March 30, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+
8
+ require 'greenpepper/factory/collectionexamplefactory'
9
+
10
+ include GreenPepper
11
+
12
+ class CollectionExampleFactoryTest < Test::Unit::TestCase
13
+ def setup
14
+ @table = Table.new
15
+ @table.push_row ['List Of', 'Provinces Of Canada']
16
+ @table.push_row ['name', 'code']
17
+ @table.push_row ['British Columbia', 'BC']
18
+ @table.push_row ['Ontario', 'ON']
19
+ end
20
+
21
+ def test_construct_collection_list
22
+ factory_builder_and_tester(ListOfExampleFactory, @table, ListOfExample)
23
+ end
24
+
25
+ def test_construct_collection_setof
26
+ factory_builder_and_tester(SetOfExampleFactory, @table, SetOfExample)
27
+ end
28
+
29
+ def test_construct_collection_subsetof
30
+ factory_builder_and_tester(SubsetOfExampleFactory, @table, SubsetOfExample)
31
+ end
32
+
33
+ def disabled_test_construct_collection_supersetof
34
+ factory_builder_and_tester(SupersetOfExampleFactory, @table, SupersetOfExample)
35
+ end
36
+
37
+ private
38
+ def assert_example_complete(ex)
39
+ assert_equal ['name', 'code'], ex.headers_array
40
+ assert_equal 'Provinces Of Canada', ex.fixture_name
41
+ assert_equal ['British Columbia', 'BC'], ex.data[0]
42
+ assert_equal ['Ontario', 'ON'], ex.data[1]
43
+ end
44
+
45
+ def factory_builder_and_tester factory_type, table, set_type
46
+ factory = factory_type.new
47
+ ex = factory.create_example table
48
+ assert set_type, ex.class
49
+ assert_example_complete ex
50
+ end
51
+ end