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.
- data/bin/greenpepperize +71 -0
- data/bin/greenpepperrails +33 -0
- data/bin/greenpepperruby +15 -0
- data/data/greenpepper.rake +37 -0
- data/data/helper.rb +32 -0
- data/data/tags +6 -0
- data/lib/greenpepper/argumentparser.rb +161 -0
- data/lib/greenpepper/common/loadpath.rb +7 -0
- data/lib/greenpepper/context/htmlcontext.rb +26 -0
- data/lib/greenpepper/converter.rb +347 -0
- data/lib/greenpepper/core.rb +152 -0
- data/lib/greenpepper/example/collectionexample.rb +305 -0
- data/lib/greenpepper/example/dowithexample.rb +192 -0
- data/lib/greenpepper/example/exampleheader.rb +41 -0
- data/lib/greenpepper/example/examplewithfixture.rb +73 -0
- data/lib/greenpepper/example/executionresults.rb +160 -0
- data/lib/greenpepper/example/fieldaccessor.rb +36 -0
- data/lib/greenpepper/example/freetextexample.rb +51 -0
- data/lib/greenpepper/example/importexample.rb +39 -0
- data/lib/greenpepper/example/nameresolver.rb +69 -0
- data/lib/greenpepper/example/ruleforexample.rb +117 -0
- data/lib/greenpepper/example/setupexample.rb +79 -0
- data/lib/greenpepper/example/silentexample.rb +14 -0
- data/lib/greenpepper/example/unknownexample.rb +17 -0
- data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
- data/lib/greenpepper/executionunit.rb +39 -0
- data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
- data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
- data/lib/greenpepper/factory/examplefactory.rb +14 -0
- data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
- data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
- data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
- data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
- data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
- data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
- data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
- data/lib/greenpepper/freetext.rb +164 -0
- data/lib/greenpepper/grammar/array.treetop +51 -0
- data/lib/greenpepper/grammar/arrayparser.rb +14 -0
- data/lib/greenpepper/greenpepperconfig.rb +19 -0
- data/lib/greenpepper/greenpeppertask.rb +60 -0
- data/lib/greenpepper/logger.rb +45 -0
- data/lib/greenpepper/parser/freetextparser.rb +96 -0
- data/lib/greenpepper/parser/htmlparser.rb +70 -0
- data/lib/greenpepper/parser/scenario.rb +25 -0
- data/lib/greenpepper/parser/table.rb +37 -0
- data/lib/greenpepper/parser/wikiparser.rb +26 -0
- data/lib/greenpepper/pass/freetextpass.rb +24 -0
- data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
- data/lib/greenpepper/pass/tablepass.rb +38 -0
- data/lib/greenpepper/railsargumentparser.rb +46 -0
- data/lib/greenpepper/redpeppertask.rb +89 -0
- data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
- data/lib/greenpepper/writer/consolewriter.rb +21 -0
- data/lib/greenpepper/writer/freetextresult.rb +233 -0
- data/lib/greenpepper/writer/freetextwriter.rb +44 -0
- data/lib/greenpepper/writer/html.rb +14 -0
- data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
- data/lib/greenpepper/writer/htmlresult.rb +192 -0
- data/lib/greenpepper/writer/htmlwriter.rb +112 -0
- data/lib/greenpepper/writer/output.rb +26 -0
- data/lib/greenpepper/writer/result.rb +35 -0
- data/lib/greenpepper/writer/xmlwriter.rb +32 -0
- data/test/coreseedstest.rb +39 -0
- data/test/greenpepper/argumentparsertest.rb +162 -0
- data/test/greenpepper/common/loadpathtest.rb +24 -0
- data/test/greenpepper/common/stattest.rb +186 -0
- data/test/greenpepper/convertertest.rb +371 -0
- data/test/greenpepper/coretest.rb +159 -0
- data/test/greenpepper/example/collectionexampletest.rb +484 -0
- data/test/greenpepper/example/dowithexampletest.rb +148 -0
- data/test/greenpepper/example/exampletest.rb +28 -0
- data/test/greenpepper/example/freetextexampletest.rb +151 -0
- data/test/greenpepper/example/importexampletest.rb +79 -0
- data/test/greenpepper/example/nameresolvertest.rb +56 -0
- data/test/greenpepper/example/ruleforexampletest.rb +225 -0
- data/test/greenpepper/example/setupexampletest.rb +140 -0
- data/test/greenpepper/example/silentexampletest.rb +17 -0
- data/test/greenpepper/example/unknownexampletest.rb +17 -0
- data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
- data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
- data/test/greenpepper/factory/examplefactorytest.rb +88 -0
- data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
- data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
- data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
- data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
- data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
- data/test/greenpepper/freetexttest.rb +222 -0
- data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
- data/test/greenpepper/loggertest.rb +26 -0
- data/test/greenpepper/parser/freetextparsertest.rb +124 -0
- data/test/greenpepper/parser/htmlparsertest.rb +77 -0
- data/test/greenpepper/parser/wikiparsertest.rb +21 -0
- data/test/greenpepper/pass/freetextpasstest.rb +54 -0
- data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
- data/test/greenpepper/pass/tablepasstest.rb +23 -0
- data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
- data/test/greenpepper/writer/freetextwritertest.rb +301 -0
- data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
- data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
- data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
- data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
- data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
- data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
- data/test/greenpepper/writer/writertest.rb +33 -0
- data/test/greenpepper/writer/xmlwritertest.rb +34 -0
- data/test/integration/collectionexampleintegrationtest.rb +64 -0
- data/test/integration/errorhandlingintegrationtest.rb +68 -0
- data/test/integration/freetextexampleintegrationtest.rb +75 -0
- data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
- data/test/integration/importexampleintegrationtest.rb +41 -0
- data/test/integration/interpretationordertest.rb +48 -0
- data/test/integration/ruleforexampleintegrationtest.rb +102 -0
- data/test/integration/securityintegrationtest.rb +30 -0
- data/test/integration/setupexampleintegrationtest.rb +31 -0
- data/test/integration/silentexampleintegrationtest.rb +29 -0
- data/test/task/greenpeppertasktest.rb +96 -0
- data/test/task/redpeppertasktest.rb +120 -0
- data/vendor/accents.rb +85 -0
- metadata +234 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
authors: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
Sebastien Boisclair (sebboisclair@gmail.com)
|
|
4
|
+
date: March 3, 2009
|
|
5
|
+
=end
|
|
6
|
+
|
|
7
|
+
require 'test/unit'
|
|
8
|
+
require 'test/helper/assert.rb'
|
|
9
|
+
require 'greenpepper/converter'
|
|
10
|
+
require 'greenpepper/example/ruleforexample'
|
|
11
|
+
require 'date'
|
|
12
|
+
require 'test/fixtures/fixture'
|
|
13
|
+
|
|
14
|
+
include GreenPepper
|
|
15
|
+
|
|
16
|
+
class TypeConverterTest< Test::Unit::TestCase
|
|
17
|
+
def test_global_convert_int
|
|
18
|
+
s = "123"
|
|
19
|
+
assert_value_and_type_convert_string 123, s
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_global_convert_float
|
|
23
|
+
s = "123.56"
|
|
24
|
+
assert_value_and_type_convert_string 123.56, s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_global_convert_string
|
|
28
|
+
s = ["123A", "a123", "12 3"]
|
|
29
|
+
|
|
30
|
+
s.each{ |n|
|
|
31
|
+
assert_value_and_type_convert_string n, n
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_global_convert_bool
|
|
36
|
+
s = ['True', 'true', 'False', 'false', 'Yes', 'yes', 'No', 'no', 'fALse',
|
|
37
|
+
'tRUe']
|
|
38
|
+
r = [true, true, false, false, true, true, false, false, false, true]
|
|
39
|
+
|
|
40
|
+
s.each_index{ |i|
|
|
41
|
+
assert_value_and_type_convert_string r[i], s[i]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_global_convert_blank_string
|
|
47
|
+
s = "blank"
|
|
48
|
+
assert_value_and_type_convert_string "", s
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_global_convert_nils
|
|
52
|
+
s = ['nil', 'null', 'NIL', 'NULL', 'none', 'nothing']
|
|
53
|
+
|
|
54
|
+
s.each{ |n|
|
|
55
|
+
assert_value_and_type_convert_string nil, n
|
|
56
|
+
}
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_global_iso_date_conversion
|
|
60
|
+
date = ["2009-03-04",
|
|
61
|
+
"2009-03-04 03:32Z",
|
|
62
|
+
"2009-03-04T03:32Z"]
|
|
63
|
+
|
|
64
|
+
date.each{ |d|
|
|
65
|
+
assert_value_and_type_convert_string DateTime.parse(d), d
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_global_array
|
|
70
|
+
s = "[1,5.0,null]"
|
|
71
|
+
assert_value_and_type_convert_string [1,5.0,nil], s
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_global_array_conversion
|
|
75
|
+
s = "[1,2,3.0]"
|
|
76
|
+
assert_value_and_type_convert_string [1,2,3.0], s
|
|
77
|
+
|
|
78
|
+
s = "[1]"
|
|
79
|
+
assert_value_and_type_convert_string [1], s
|
|
80
|
+
|
|
81
|
+
s = "[2,]"
|
|
82
|
+
assert_value_and_type_convert_string [2,], s
|
|
83
|
+
|
|
84
|
+
s = "[]"
|
|
85
|
+
assert_value_and_type_convert_string [], s
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_global_array_conversion_empty_array
|
|
89
|
+
s = "empty"
|
|
90
|
+
assert_value_and_type_convert_string [], s
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_global_array_with_string_containing_comma
|
|
94
|
+
s = "[1,\"test,comma\",5.0]"
|
|
95
|
+
assert_value_and_type_convert_string [1,"test,comma",5.0], s
|
|
96
|
+
|
|
97
|
+
s = "[1,'test,comma',5.0]"
|
|
98
|
+
assert_value_and_type_convert_string [1,'test,comma',5.0], s
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_global_array_with_all_types
|
|
102
|
+
s = "[1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
|
|
103
|
+
e = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),"test,comma"]
|
|
104
|
+
assert_value_and_type_convert_string e, s
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_global_csv
|
|
108
|
+
s = "1,2,3.0"
|
|
109
|
+
assert_value_and_type_convert_string [1,2,3.0], s
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_global_csv_with_string_containing_comma
|
|
113
|
+
s = "1,\"test,comma\",5.0"
|
|
114
|
+
assert_value_and_type_convert_string [1,"test,comma",5.0], s
|
|
115
|
+
|
|
116
|
+
s = "1,'test,comma',5.0"
|
|
117
|
+
assert_value_and_type_convert_string [1,'test,comma',5.0], s
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_global_csv_with_all_types
|
|
121
|
+
s = "1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\""
|
|
122
|
+
e = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),"test,comma"]
|
|
123
|
+
assert_value_and_type_convert_string e, s
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class MoneyType < TypeBase
|
|
127
|
+
def self.regex
|
|
128
|
+
/^\$\d+\.\d+$/
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def self.convert
|
|
132
|
+
Proc.new {|s| s[1..-1].to_f }
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def self.format
|
|
136
|
+
Proc.new { |money,expected_format|
|
|
137
|
+
money = money.to_s.split(".")
|
|
138
|
+
"\$" + money[0] + "." + money[1].ljust(2,'0')
|
|
139
|
+
}
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def test_custom_type_define
|
|
144
|
+
assert_value_and_type_convert_string 1.01, '$1.01'
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
#TODO : Integration test, shall not use example and results
|
|
148
|
+
=begin
|
|
149
|
+
def test_fixture_convert_type
|
|
150
|
+
ex = RuleForExample.new "ConvertTypeFixture", NameResolver
|
|
151
|
+
ex.add_input_header "operand1"
|
|
152
|
+
ex.add_output_header "value"
|
|
153
|
+
ex.add_row ['01/01/01', '01/01/01']
|
|
154
|
+
results = ex.execute
|
|
155
|
+
assert_results_success stats
|
|
156
|
+
assert_value_and_type_convert_string Date.parse('01/01/01'),
|
|
157
|
+
stats.rows[0][0].expected_value
|
|
158
|
+
end
|
|
159
|
+
=end
|
|
160
|
+
|
|
161
|
+
def test_explicit_string_declaration
|
|
162
|
+
s = "\"allo\""
|
|
163
|
+
assert_value_and_type_convert_string "allo", s
|
|
164
|
+
|
|
165
|
+
s = "'allo'"
|
|
166
|
+
assert_value_and_type_convert_string "allo", s
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def test_global_convert_exceptions
|
|
170
|
+
s = "1,5.0,not,blAnk,noone,2009#03#04,\"test,comma\",typenonexistant"
|
|
171
|
+
assert_raise(GreenPepperTypeError) {
|
|
172
|
+
TypeConverter.instance.convert_string s
|
|
173
|
+
}
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
class FormatFixture
|
|
177
|
+
def format_date(date)
|
|
178
|
+
"my date: " + date.to_s
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def test_fixture_format
|
|
183
|
+
f = FormatFixture.new
|
|
184
|
+
s = TypeConverter.instance.auto_convert_object(
|
|
185
|
+
f, "date", 'my date: 2001-01-01', Date.parse('01/01/2001'))
|
|
186
|
+
assert_equal 'my date: 2001-01-01', s
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def test_global_format_money_type
|
|
190
|
+
f = FormatFixture.new
|
|
191
|
+
s = TypeConverter.instance.auto_convert_object(
|
|
192
|
+
f, "undefined format in fixture", '$1.50', 1.2)
|
|
193
|
+
assert_equal '$1.20', s
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def test_global_format_int
|
|
197
|
+
assert_value_and_type_format_object "123", 123, "456"
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def test_global_format_float
|
|
201
|
+
assert_value_and_type_format_object "123.56", 123.56, "456.78"
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def test_global_format_bool
|
|
205
|
+
boolean_true = ['True', 'true', 'Yes', 'yes']
|
|
206
|
+
boolean_false = ['False', 'false', 'No', 'no']
|
|
207
|
+
|
|
208
|
+
boolean_true.each{ |true_expected|
|
|
209
|
+
assert_value_format_object true_expected, true, true_expected
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
boolean_false.each{ |false_expected|
|
|
213
|
+
assert_value_format_object false_expected, false, false_expected
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
boolean_true.each_index{ |i|
|
|
217
|
+
assert_value_format_object boolean_false[i], false, boolean_true[i]
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
r = TypeConverter.instance.format_object "tRue", true
|
|
221
|
+
assert_not_equal "tRue", r
|
|
222
|
+
assert_equal true.to_s, r
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def test_global_format_blank_string
|
|
226
|
+
assert_value_and_type_format_object "blank", "", "blank"
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def test_global_format_nils
|
|
230
|
+
s = ['nil', 'null', 'NIL', 'NULL', 'none', 'nothing']
|
|
231
|
+
|
|
232
|
+
s.each{ |nil_expected|
|
|
233
|
+
assert_value_and_type_format_object nil_expected, nil, nil_expected
|
|
234
|
+
}
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def test_global_format_iso_date
|
|
238
|
+
assert_value_and_type_format_object "2009-03-04",
|
|
239
|
+
DateTime.parse("2009-03-04"), "0001-02-03"
|
|
240
|
+
assert_value_and_type_format_object "2009-03-04 03:32",
|
|
241
|
+
DateTime.parse("2009-03-04 03:32"), "0001-02-03 04:05"
|
|
242
|
+
assert_value_and_type_format_object "2009-03-04 03:32Z",
|
|
243
|
+
DateTime.parse("2009-03-04 03:32Z"), "0001-02-03 04:05Z"
|
|
244
|
+
assert_value_and_type_format_object "2009-03-04T03:32Z",
|
|
245
|
+
DateTime.parse("2009-03-04T03:32Z"), "0001-02-03T04:05Z"
|
|
246
|
+
assert_value_and_type_format_object "2009/03/04",
|
|
247
|
+
DateTime.parse("2009/03/04"), "0001/02/03"
|
|
248
|
+
assert_value_and_type_format_object "2009/03/04 03:32",
|
|
249
|
+
DateTime.parse("2009/03/04 03:32"), "0001/02/03 04:05"
|
|
250
|
+
assert_value_and_type_format_object "2009/03/04 03:32Z",
|
|
251
|
+
DateTime.parse("2009/03/04 03:32Z"), "0001/02/03 04:05Z"
|
|
252
|
+
assert_value_and_type_format_object "2009/03/04T03:32Z",
|
|
253
|
+
DateTime.parse("2009/03/04T03:32Z"), "0001/02/03T04:05Z"
|
|
254
|
+
|
|
255
|
+
date = DateTime.parse("04-03-2009")
|
|
256
|
+
r = TypeConverter.instance.format_object "01-02-0003", date
|
|
257
|
+
assert_not_equal "03-04-2009", r
|
|
258
|
+
assert_equal date.to_s, r
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def test_global_format_array
|
|
262
|
+
assert_value_and_type_format_object "[1,2,3.0]", [1,2,3.0], "[4,5,6.0]"
|
|
263
|
+
assert_value_and_type_format_object "[1]", [1], "[2]"
|
|
264
|
+
assert_value_and_type_format_object "[1,]", [1,], "[2,]"
|
|
265
|
+
assert_value_and_type_format_object "[]", [], "[ ]"
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def test_global_format_array_with_string_containing_commas
|
|
269
|
+
array = [1,'test,comma',5.0]
|
|
270
|
+
e = "[1,'test,comma',5.0]"
|
|
271
|
+
f = "[4,'format,virgule',2.5]"
|
|
272
|
+
assert_value_and_type_format_object e, array, f
|
|
273
|
+
|
|
274
|
+
array = [1,"test,comma",5.0]
|
|
275
|
+
e = "[1,\"test,comma\",5.0]"
|
|
276
|
+
f = "[4,\"format,virgule\",2.5]"
|
|
277
|
+
assert_value_and_type_format_object e, array, f
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def test_global_format_array_with_all_types
|
|
281
|
+
array = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),
|
|
282
|
+
"test,comma"]
|
|
283
|
+
e = "[1,5.0,Yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
|
|
284
|
+
f = "[2,10.20,No,blank,nothing,2008-02-05 07:33Z,\"message,virgule\"]"
|
|
285
|
+
assert_value_and_type_format_object e, array, f
|
|
286
|
+
|
|
287
|
+
array = [1,5.0,true]
|
|
288
|
+
r = TypeConverter.instance.format_object(
|
|
289
|
+
"[2,10.20,type boolean existant pas,]", array)
|
|
290
|
+
assert_not_equal "[1,5.0,type boolean existant pas,]", r
|
|
291
|
+
assert_equal "[1,5.0," + true.to_s + ",]", r
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
def test_global_format_csv
|
|
295
|
+
assert_value_and_type_format_object "1,2,3.0", [1,2,3.0], "4,5,6.0"
|
|
296
|
+
assert_value_and_type_format_object "1,2,", [1,2,], "4,5,"
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def test_global_format_csv_with_string_containing_commas
|
|
300
|
+
array = [1,'test,comma',5.0]
|
|
301
|
+
e = "1,'test,comma',5.0"
|
|
302
|
+
f = "4,'format,virgule',2.5"
|
|
303
|
+
assert_value_and_type_format_object e, array, f
|
|
304
|
+
|
|
305
|
+
array = [1,"test,comma",5.0]
|
|
306
|
+
e = "1,\"test,comma\",5.0"
|
|
307
|
+
f = "4,\"format,virgule\",2.5"
|
|
308
|
+
assert_value_and_type_format_object e, array, f
|
|
309
|
+
|
|
310
|
+
array = [1,"test,comma",5.0,]
|
|
311
|
+
e = "1,\"test,comma\",5.0,"
|
|
312
|
+
f = "4,\"format,virgule\",2.5,"
|
|
313
|
+
assert_value_and_type_format_object e, array, f
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def test_global_format_csv_with_all_types
|
|
317
|
+
array = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),
|
|
318
|
+
"test,comma",]
|
|
319
|
+
formatter = "2,10.20,No,blank,nothing,2008-02-05 07:33Z,\""
|
|
320
|
+
formatter += "message,virgule\""
|
|
321
|
+
expected = "1,5.0,Yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\""
|
|
322
|
+
assert_value_and_type_format_object expected, array, formatter
|
|
323
|
+
|
|
324
|
+
array = [1,5.0,true]
|
|
325
|
+
r = TypeConverter.instance.format_object(
|
|
326
|
+
"2,10.20,type boolean existant pas,", array)
|
|
327
|
+
assert_not_equal "1,5.0,type boolean existant pas,", r
|
|
328
|
+
assert_equal "1,5.0," + true.to_s + ",", r
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def test_global_format_empty_array
|
|
332
|
+
assert_value_and_type_format_object "empty", [], "empty"
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def test_global_format_explicit_string_declaration
|
|
336
|
+
assert_value_and_type_format_object "\"allo\"", "allo", "\"value\""
|
|
337
|
+
assert_value_and_type_format_object "'allo'", 'allo', "'value'"
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def test_global_format_inexistent_type
|
|
341
|
+
s = "type inexistant"
|
|
342
|
+
assert_value_and_type_format_object s.to_s, s, s
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def test_global_parse_convert_spaces_to_nil
|
|
346
|
+
assert_value_and_type_convert_string nil, ' '
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def test_global_parse_float_beginning_by_a_point
|
|
350
|
+
assert_value_and_type_convert_string 0.8, '.8'
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
private
|
|
354
|
+
def assert_value_and_type_convert_string expected_value, string_to_convert
|
|
355
|
+
value = TypeConverter.instance.convert_string string_to_convert
|
|
356
|
+
assert_equal expected_value.class, value.class
|
|
357
|
+
assert_equal expected_value, value
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def assert_value_and_type_format_object(expected_value, string_to_format,
|
|
361
|
+
formater)
|
|
362
|
+
value = TypeConverter.instance.format_object formater, string_to_format
|
|
363
|
+
assert_equal expected_value.class, value.class
|
|
364
|
+
assert_equal expected_value, value
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def assert_value_format_object expected_value, string_to_format, formater
|
|
368
|
+
value = TypeConverter.instance.format_object formater, string_to_format
|
|
369
|
+
assert_equal expected_value, value
|
|
370
|
+
end
|
|
371
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Basic test to see if the integration server works.
|
|
3
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require '../common/test/helper/assertion'
|
|
7
|
+
require 'greenpepper/core'
|
|
8
|
+
require 'test/fixtures/fixture'
|
|
9
|
+
require 'test/fixtures/setupfixture'
|
|
10
|
+
require 'test/fixtures/dowithfixture'
|
|
11
|
+
require 'stringio'
|
|
12
|
+
|
|
13
|
+
include GreenPepper
|
|
14
|
+
|
|
15
|
+
class GreenPepperCoreTest < Test::Unit::TestCase
|
|
16
|
+
def setup
|
|
17
|
+
#Disable console output
|
|
18
|
+
@old_stdout, $stdout = $stdout, StringIO.new
|
|
19
|
+
@core = GreenPepperCore.new(Logger.new($stdout))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def teardown
|
|
23
|
+
$stdout = @old_stdout
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_no_file_name_into_arg
|
|
27
|
+
assert_raise(GreenPepperFileNotFoundError) {
|
|
28
|
+
@core.run ['a', 'b', 'c']
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_no_results_in_html
|
|
33
|
+
args = ["--no-html-results",
|
|
34
|
+
"test/seeds/calculator_n_in_n_out.html",
|
|
35
|
+
"test/results/calculator_add_n_in_n_out_output_no_result_in_html.html"]
|
|
36
|
+
|
|
37
|
+
expected = "test/expected/" +
|
|
38
|
+
"calculator_add_n_in_n_out_output_no_result_in_html.html"
|
|
39
|
+
|
|
40
|
+
@core.run args
|
|
41
|
+
|
|
42
|
+
assert_file_equal expected, args[2]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_command_line_results
|
|
46
|
+
file_output = "test/seeds/console_output.html"
|
|
47
|
+
|
|
48
|
+
args = ["test/seeds/calculator_n_in_n_out.html", file_output]
|
|
49
|
+
|
|
50
|
+
expected = "6 tests: 5 right, 1 wrong, 0 ignored, 0 exception(s)\n"
|
|
51
|
+
res = $stdout.string
|
|
52
|
+
|
|
53
|
+
@core.run args
|
|
54
|
+
File.delete file_output
|
|
55
|
+
|
|
56
|
+
assert_equal expected, res
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_command_line_results_with_load_path
|
|
60
|
+
file_output = "test/seeds/console_output.html"
|
|
61
|
+
path1, path2 = "test/fixtures", "test/seeds"
|
|
62
|
+
args = ["test/seeds/calculator_n_in_n_out.html", file_output, "--loadpath",
|
|
63
|
+
path1, path2]
|
|
64
|
+
|
|
65
|
+
init_load_path = $LOAD_PATH.dup
|
|
66
|
+
begin
|
|
67
|
+
@core.run args
|
|
68
|
+
ensure
|
|
69
|
+
File.delete file_output if File.exists? file_output
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
paths = $LOAD_PATH - init_load_path
|
|
73
|
+
assert_equal 2, paths.size
|
|
74
|
+
assert_equal path1, paths[0]
|
|
75
|
+
assert_equal path2, paths[1]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_freetext_in_seed
|
|
79
|
+
args = ["test/seeds/calculator_freetext.html",
|
|
80
|
+
"test/results/calculator_freetext_output.html"]
|
|
81
|
+
|
|
82
|
+
expected = "test/expected/calculator_freetext_output.html"
|
|
83
|
+
|
|
84
|
+
@core.run args
|
|
85
|
+
|
|
86
|
+
assert_file_equal expected, args[1]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_xml_output_with_specified_output_file
|
|
90
|
+
args = ["test/seeds/calculator_no_expected_results.html",
|
|
91
|
+
"test/results/calculator_no_expected_results_1.xml",
|
|
92
|
+
"--xml"]
|
|
93
|
+
|
|
94
|
+
expected = "test/expected/calculator_no_expected_results_output.xml"
|
|
95
|
+
|
|
96
|
+
@core.run args
|
|
97
|
+
|
|
98
|
+
assert_file_equal expected, args[1]
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_xml_output_with_specified_output_file_in_xml_param
|
|
102
|
+
args = ["test/seeds/calculator_no_expected_results.html",
|
|
103
|
+
"test/results/calculator_no_expected_results_3.xml",
|
|
104
|
+
"--xml",
|
|
105
|
+
"test/results/calculator_no_expected_results_param.xml"]
|
|
106
|
+
|
|
107
|
+
expected = "test/expected/calculator_no_expected_results_output.xml"
|
|
108
|
+
|
|
109
|
+
@core.run args
|
|
110
|
+
|
|
111
|
+
assert_file_equal expected, args[3]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_xml_output_with_specified_output_file_in_xml_param_output_after_xml
|
|
115
|
+
args = ["test/seeds/calculator_no_expected_results.html",
|
|
116
|
+
"--xml",
|
|
117
|
+
"test/results/calculator_no_expected_results_param_no_output.xml",
|
|
118
|
+
"test/results/calculator_no_expected_results.xml"]
|
|
119
|
+
|
|
120
|
+
expected = "test/expected/calculator_no_expected_results_output.xml"
|
|
121
|
+
|
|
122
|
+
@core.run args
|
|
123
|
+
|
|
124
|
+
assert_file_equal expected, args[2]
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_multiple_formalisms_in_seed
|
|
128
|
+
args = ["test/seeds/multiple_formalisms_integration.html",
|
|
129
|
+
"test/results/multiple_formalisms_integration.html"]
|
|
130
|
+
|
|
131
|
+
expected = "test/expected/multiple_formalisms_integration.html"
|
|
132
|
+
|
|
133
|
+
@core.run args
|
|
134
|
+
|
|
135
|
+
assert_file_equal expected, args[1]
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_found_bug_with_multiple_do_with_in_table
|
|
139
|
+
args = ["test/seeds/multiple_table_do_with_bug.html",
|
|
140
|
+
"test/results/multiple_table_do_with_bug.html"]
|
|
141
|
+
|
|
142
|
+
expected = "test/expected/multiple_table_do_with_bug.html"
|
|
143
|
+
|
|
144
|
+
@core.run args
|
|
145
|
+
|
|
146
|
+
assert_file_equal expected, args[1]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def test_core_should_return_empty_result_if_input_document_is_empty
|
|
150
|
+
empty_input_file = "test/seeds/empty_file.html"
|
|
151
|
+
empty_output_file = "test/results/empty_file.html"
|
|
152
|
+
|
|
153
|
+
args = [empty_input_file, empty_output_file]
|
|
154
|
+
@core.run args
|
|
155
|
+
|
|
156
|
+
output = File.read empty_output_file
|
|
157
|
+
assert_equal "", output
|
|
158
|
+
end
|
|
159
|
+
end
|