greenpepper-ruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|