anodator 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 (53) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +13 -0
  4. data/Gemfile.lock +28 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.ja.rdoc +33 -0
  7. data/README.rdoc +41 -0
  8. data/Rakefile +50 -0
  9. data/VERSION +1 -0
  10. data/example/example_01.rb +129 -0
  11. data/lib/anodator/anodator_error.rb +5 -0
  12. data/lib/anodator/check_result.rb +41 -0
  13. data/lib/anodator/checker.rb +58 -0
  14. data/lib/anodator/input_spec.rb +199 -0
  15. data/lib/anodator/input_spec_item.rb +33 -0
  16. data/lib/anodator/message.rb +59 -0
  17. data/lib/anodator/output_spec.rb +164 -0
  18. data/lib/anodator/rule.rb +97 -0
  19. data/lib/anodator/rule_set.rb +52 -0
  20. data/lib/anodator/utils.rb +234 -0
  21. data/lib/anodator/validator/base.rb +168 -0
  22. data/lib/anodator/validator/blank_validator.rb +14 -0
  23. data/lib/anodator/validator/complex_validator.rb +60 -0
  24. data/lib/anodator/validator/configuration_error.rb +8 -0
  25. data/lib/anodator/validator/date_validator.rb +151 -0
  26. data/lib/anodator/validator/format_validator.rb +48 -0
  27. data/lib/anodator/validator/inclusion_validator.rb +21 -0
  28. data/lib/anodator/validator/length_validator.rb +37 -0
  29. data/lib/anodator/validator/numeric_validator.rb +46 -0
  30. data/lib/anodator/validator/presence_validator.rb +14 -0
  31. data/lib/anodator/validator.rb +10 -0
  32. data/lib/anodator.rb +3 -0
  33. data/spec/anodator/check_result_spec.rb +101 -0
  34. data/spec/anodator/checker_spec.rb +273 -0
  35. data/spec/anodator/input_spec_item_spec.rb +100 -0
  36. data/spec/anodator/input_spec_spec.rb +584 -0
  37. data/spec/anodator/message_spec.rb +112 -0
  38. data/spec/anodator/output_spec_spec.rb +355 -0
  39. data/spec/anodator/rule_set_spec.rb +190 -0
  40. data/spec/anodator/rule_spec.rb +169 -0
  41. data/spec/anodator/validator/base_spec.rb +214 -0
  42. data/spec/anodator/validator/blank_validator_spec.rb +52 -0
  43. data/spec/anodator/validator/complex_validator_spec.rb +268 -0
  44. data/spec/anodator/validator/date_validator_spec.rb +350 -0
  45. data/spec/anodator/validator/format_validator_spec.rb +158 -0
  46. data/spec/anodator/validator/inclusion_validator_spec.rb +77 -0
  47. data/spec/anodator/validator/length_validator_spec.rb +236 -0
  48. data/spec/anodator/validator/numeric_validator_spec.rb +468 -0
  49. data/spec/anodator/validator/presence_validator_spec.rb +52 -0
  50. data/spec/anodator/validator_spec.rb +16 -0
  51. data/spec/anodator_spec.rb +2 -0
  52. data/spec/spec_helper.rb +12 -0
  53. metadata +188 -0
@@ -0,0 +1,236 @@
1
+ require "spec_helper"
2
+
3
+ # Anodator::Validator::LengthValidator
4
+ require "anodator/validator/length_validator"
5
+
6
+ include Anodator::Validator
7
+
8
+ describe LengthValidator, ".new" do
9
+ context "with no paramerters" do
10
+ it "should raise error" do
11
+ lambda {
12
+ LengthValidator.new()
13
+ }.should raise_error
14
+ end
15
+ end
16
+
17
+ context "with only target expression" do
18
+ it "should not raise error" do
19
+ lambda {
20
+ LengthValidator.new("1")
21
+ }.should_not raise_error
22
+ end
23
+ end
24
+
25
+ context "with target expression and :maximum parameters" do
26
+ before(:each) do
27
+ @new_proc = lambda {
28
+ LengthValidator.new("1", :maximum => 10)
29
+ }
30
+ end
31
+
32
+ it "should not raise error" do
33
+ @new_proc.should_not raise_error
34
+ end
35
+
36
+ it "should have :maximum option value" do
37
+ validator = @new_proc.call
38
+ validator.options[:maximum].should == 10
39
+ end
40
+ end
41
+
42
+ context "with target expression and :minimum parameters" do
43
+ before(:each) do
44
+ @new_proc = lambda {
45
+ LengthValidator.new("1", :minimum => 10)
46
+ }
47
+ end
48
+
49
+ it "should not raise error" do
50
+ @new_proc.should_not raise_error
51
+ end
52
+
53
+ it "should have :minimum option value" do
54
+ validator = @new_proc.call
55
+ validator.options[:minimum].should == 10
56
+ end
57
+ end
58
+
59
+ context "with target expression and :is parameters" do
60
+ before(:each) do
61
+ @new_proc = lambda {
62
+ LengthValidator.new("1", :is => 10)
63
+ }
64
+ end
65
+
66
+ it "should not raise error" do
67
+ @new_proc.should_not raise_error
68
+ end
69
+
70
+ it "should have :is option value" do
71
+ validator = @new_proc.call
72
+ validator.options[:is].should == 10
73
+ end
74
+ end
75
+
76
+ context "with target expression and :in parameters" do
77
+ before(:each) do
78
+ @new_proc = lambda {
79
+ LengthValidator.new("1", :in => 3..6)
80
+ }
81
+ end
82
+
83
+ it "should not raise error" do
84
+ @new_proc.should_not raise_error
85
+ end
86
+
87
+ it "should have :in option value" do
88
+ validator = @new_proc.call
89
+ validator.options[:in].should == (3..6)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe LengthValidator, "#valid?" do
95
+ context "with only target expression" do
96
+ before(:each) do
97
+ @validator = LengthValidator.new("1")
98
+ Base.values = {
99
+ "1" => "string",
100
+ "2" => "string",
101
+ "3" => "string",
102
+ "4" => "string",
103
+ }
104
+ end
105
+
106
+ it "should not raise error" do
107
+ lambda {
108
+ @validator.valid?
109
+ }.should_not raise_error
110
+ end
111
+ end
112
+
113
+ context "with target expression and :maximum parameters" do
114
+ before(:each) do
115
+ @validator = LengthValidator.new("1", :maximum => 10)
116
+ end
117
+
118
+ context "values for valid" do
119
+ before(:each) do
120
+ Base.values = {
121
+ "1" => "1234567890"
122
+ }
123
+ end
124
+
125
+ it { @validator.should be_valid }
126
+ end
127
+
128
+ context "values for invalid" do
129
+ before(:each) do
130
+ Base.values = {
131
+ "1" => "12345678901"
132
+ }
133
+ end
134
+
135
+ it { @validator.should_not be_valid }
136
+ end
137
+ end
138
+
139
+ context "with target expression and :minimum parameters" do
140
+ before(:each) do
141
+ @validator = LengthValidator.new("1", :minimum => 10)
142
+ end
143
+
144
+ context "values for valid" do
145
+ before(:each) do
146
+ Base.values = {
147
+ "1" => "1234567890"
148
+ }
149
+ end
150
+
151
+ it { @validator.should be_valid }
152
+ end
153
+
154
+ context "values for invalid" do
155
+ before(:each) do
156
+ Base.values = {
157
+ "1" => "123456789"
158
+ }
159
+ end
160
+
161
+ it { @validator.should_not be_valid }
162
+ end
163
+ end
164
+
165
+ context "with target expression and :is parameters" do
166
+ before(:each) do
167
+ @validator = LengthValidator.new("1", :is => 10)
168
+ end
169
+
170
+ context "values for valid" do
171
+ before(:each) do
172
+ Base.values = {
173
+ "1" => "1234567890"
174
+ }
175
+ end
176
+
177
+ it { @validator.should be_valid }
178
+ end
179
+
180
+ context "values for invalid" do
181
+ before(:each) do
182
+ Base.values = {
183
+ "1" => "123456789"
184
+ }
185
+ end
186
+
187
+ it { @validator.should_not be_valid }
188
+ end
189
+ end
190
+
191
+ context "with target expression and :in parameters" do
192
+ before(:each) do
193
+ @validator = LengthValidator.new("1", :in => 3..6)
194
+ end
195
+
196
+ context "values for minimum equal valid" do
197
+ before(:each) do
198
+ Base.values = {
199
+ "1" => "123"
200
+ }
201
+ end
202
+
203
+ it { @validator.should be_valid }
204
+ end
205
+
206
+ context "values for minimum invalid" do
207
+ before(:each) do
208
+ Base.values = {
209
+ "1" => "12"
210
+ }
211
+ end
212
+
213
+ it { @validator.should_not be_valid }
214
+ end
215
+
216
+ context "values for maximum equal valid" do
217
+ before(:each) do
218
+ Base.values = {
219
+ "1" => "123456"
220
+ }
221
+ end
222
+
223
+ it { @validator.should be_valid }
224
+ end
225
+
226
+ context "values for maximum invalid" do
227
+ before(:each) do
228
+ Base.values = {
229
+ "1" => "1234567"
230
+ }
231
+ end
232
+
233
+ it { @validator.should_not be_valid }
234
+ end
235
+ end
236
+ end
@@ -0,0 +1,468 @@
1
+ require "spec_helper"
2
+
3
+ # Anodator::Validator::NumericValidator
4
+ require "anodator/validator/numeric_validator"
5
+
6
+ include Anodator::Validator
7
+
8
+ describe NumericValidator, ".new" do
9
+ context "with no parameters" do
10
+ it "should raise ArgumentError" do
11
+ lambda {
12
+ NumericValidator.new
13
+ }.should raise_error ArgumentError
14
+ end
15
+ end
16
+
17
+ context "with only target expression" do
18
+ before(:each) do
19
+ @new_proc = lambda {
20
+ NumericValidator.new("1")
21
+ }
22
+ end
23
+
24
+ it "should not raise error" do
25
+ @new_proc.should_not raise_error
26
+ end
27
+
28
+ it ":only_integer option must be false by default option" do
29
+ @new_proc.call.options[:only_integer].should == false
30
+ end
31
+ end
32
+
33
+ context "with target expression and :only_integer" do
34
+ before(:each) do
35
+ @new_proc = lambda {
36
+ NumericValidator.new("1", :only_integer => true)
37
+ }
38
+ end
39
+
40
+ it "should not raise error" do
41
+ @new_proc.should_not raise_error
42
+ end
43
+
44
+ it ":only_integer option must be exists" do
45
+ @new_proc.call.options[:only_integer].should == true
46
+ end
47
+ end
48
+
49
+ context "with target expression and :greater_than" do
50
+ before(:each) do
51
+ @new_proc = lambda {
52
+ NumericValidator.new("1", :greater_than => 10)
53
+ }
54
+ end
55
+
56
+ it "should not raise error" do
57
+ @new_proc.should_not raise_error
58
+ end
59
+
60
+ it ":greater_than option must be exists" do
61
+ @new_proc.call.options[:greater_than].should == 10
62
+ end
63
+ end
64
+
65
+ context "with target expression and :greater_than_or_equal_to" do
66
+ before(:each) do
67
+ @new_proc = lambda {
68
+ NumericValidator.new("1", :greater_than_or_equal_to => 10)
69
+ }
70
+ end
71
+
72
+ it "should not raise error" do
73
+ @new_proc.should_not raise_error
74
+ end
75
+
76
+ it ":greater_than_or_equal_to option must be exists" do
77
+ @new_proc.call.options[:greater_than_or_equal_to].should == 10
78
+ end
79
+ end
80
+
81
+ context "with target expression and :less_than" do
82
+ before(:each) do
83
+ @new_proc = lambda {
84
+ NumericValidator.new("1", :less_than => 10)
85
+ }
86
+ end
87
+
88
+ it "should not raise error" do
89
+ @new_proc.should_not raise_error
90
+ end
91
+
92
+ it ":less_than option must be exists" do
93
+ @new_proc.call.options[:less_than].should == 10
94
+ end
95
+ end
96
+
97
+ context "with target expression and :less_than_or_equal_to" do
98
+ before(:each) do
99
+ @new_proc = lambda {
100
+ NumericValidator.new("1", :less_than_or_equal_to => 10)
101
+ }
102
+ end
103
+
104
+ it "should not raise error" do
105
+ @new_proc.should_not raise_error
106
+ end
107
+
108
+ it ":less_than_or_equal_to option must be exists" do
109
+ @new_proc.call.options[:less_than_or_equal_to].should == 10
110
+ end
111
+ end
112
+
113
+ context "with target expression and :equal_to" do
114
+ before(:each) do
115
+ @new_proc = lambda {
116
+ NumericValidator.new("1", :equal_to => 10)
117
+ }
118
+ end
119
+
120
+ it "should not raise error" do
121
+ @new_proc.should_not raise_error
122
+ end
123
+
124
+ it ":equal_to option must be exists" do
125
+ @new_proc.call.options[:equal_to].should == 10
126
+ end
127
+ end
128
+ end
129
+
130
+ describe NumericValidator, "#valid?" do
131
+ context "with only target expression" do
132
+ before(:each) do
133
+ @validator = NumericValidator.new("1")
134
+ end
135
+
136
+ context "values for valid integer" do
137
+ before(:each) do
138
+ Base.values = { "1" => "132" }
139
+ end
140
+
141
+ it { @validator.should be_valid }
142
+ end
143
+
144
+ context "values for valid floating point value" do
145
+ before(:each) do
146
+ Base.values = { "1" => "132.42" }
147
+ end
148
+
149
+ it { @validator.should be_valid }
150
+ end
151
+
152
+ context "values for invalid character" do
153
+ before(:each) do
154
+ Base.values = { "1" => "abdcd" }
155
+ end
156
+
157
+ it { @validator.should_not be_valid }
158
+ end
159
+
160
+ context "values for invalid number include alphabet" do
161
+ before(:each) do
162
+ Base.values = { "1" => "124.43fsd" }
163
+ end
164
+
165
+ it { @validator.should_not be_valid }
166
+ end
167
+
168
+ context "values for valid negative integer" do
169
+ before(:each) do
170
+ Base.values = { "1" => "-312" }
171
+ end
172
+
173
+ it { @validator.should be_valid }
174
+ end
175
+
176
+ context "values for valid negative floating point value" do
177
+ before(:each) do
178
+ Base.values = { "1" => "-13.442" }
179
+ end
180
+
181
+ it { @validator.should be_valid }
182
+ end
183
+ end
184
+
185
+ context "with target expression and :only_integer" do
186
+ before(:each) do
187
+ @validator = NumericValidator.new("1", :only_integer => true)
188
+ end
189
+
190
+ context "values for valid integer" do
191
+ before(:each) do
192
+ Base.values = { "1" => "3252" }
193
+ end
194
+
195
+ it { @validator.should be_valid }
196
+ end
197
+
198
+ context "values for invalid floating point vlaue" do
199
+ before(:each) do
200
+ Base.values = { "1" => "42.43" }
201
+ end
202
+
203
+ it { @validator.should_not be_valid }
204
+ end
205
+ end
206
+
207
+ context "with target expression and :greater_than" do
208
+ before(:each) do
209
+ @validator = NumericValidator.new("1", :greater_than => 10)
210
+ end
211
+
212
+ context "values for valid minimum value" do
213
+ before(:each) do
214
+ Base.values = { "1" => "11" }
215
+ end
216
+
217
+ it { @validator.should be_valid }
218
+ end
219
+
220
+ context "values for valid floating point value" do
221
+ before(:each) do
222
+ Base.values = { "1" => "10.00001" }
223
+ end
224
+
225
+ it { @validator.should be_valid }
226
+ end
227
+
228
+ context "values for invalid equal value" do
229
+ before(:each) do
230
+ Base.values = { "1" => "10" }
231
+ end
232
+
233
+ it { @validator.should_not be_valid }
234
+ end
235
+
236
+ context "values for invalid maximum value" do
237
+ before(:each) do
238
+ Base.values = { "1" => "9" }
239
+ end
240
+
241
+ it { @validator.should_not be_valid }
242
+ end
243
+
244
+ context "values for invalid maximum floating potin value" do
245
+ before(:each) do
246
+ Base.values = { "1" => "9.999999" }
247
+ end
248
+
249
+ it { @validator.should_not be_valid }
250
+ end
251
+ end
252
+
253
+ context "with target expression and :greater_than_or_equal_to" do
254
+ before(:each) do
255
+ @validator = NumericValidator.new("1", :greater_than_or_equal_to => 10)
256
+ end
257
+
258
+ context "values for valid minimum value" do
259
+ before(:each) do
260
+ Base.values = { "1" => "11" }
261
+ end
262
+
263
+ it { @validator.should be_valid }
264
+ end
265
+
266
+ context "values for valid floating point value" do
267
+ before(:each) do
268
+ Base.values = { "1" => "10.0001" }
269
+ end
270
+
271
+ it { @validator.should be_valid }
272
+ end
273
+
274
+ context "values for valid equal value" do
275
+ before(:each) do
276
+ Base.values = { "1" => "10" }
277
+ end
278
+
279
+ it { @validator.should be_valid }
280
+ end
281
+
282
+ context "values for valid equal floating point value" do
283
+ before(:each) do
284
+ Base.values = { "1" => "10.0" }
285
+ end
286
+
287
+ it { @validator.should be_valid }
288
+ end
289
+
290
+ context "values for invalid maximum value" do
291
+ before(:each) do
292
+ Base.values = { "1" => "9" }
293
+ end
294
+
295
+ it { @validator.should_not be_valid }
296
+ end
297
+
298
+ context "values for invalid maximum floating potin value" do
299
+ before(:each) do
300
+ Base.values = { "1" => "9.999999" }
301
+ end
302
+
303
+ it { @validator.should_not be_valid }
304
+ end
305
+ end
306
+
307
+ context "with target expression and :less_than" do
308
+ before(:each) do
309
+ @validator = NumericValidator.new("1", :less_than => 10)
310
+ end
311
+
312
+ context "values for valid maximum value" do
313
+ before(:each) do
314
+ Base.values = { "1" => "9" }
315
+ end
316
+
317
+ it { @validator.should be_valid }
318
+ end
319
+
320
+ context "values for valid maximum floating point value" do
321
+ before(:each) do
322
+ Base.values = { "1" => "9.9999999" }
323
+ end
324
+
325
+ it { @validator.should be_valid }
326
+ end
327
+
328
+ context "values for invalid equal value" do
329
+ before(:each) do
330
+ Base.values = { "1" => "10" }
331
+ end
332
+
333
+ it { @validator.should_not be_valid }
334
+ end
335
+
336
+ context "values for invalid equal floating point value" do
337
+ before(:each) do
338
+ Base.values = { "1" => "10.0" }
339
+ end
340
+
341
+ it { @validator.should_not be_valid }
342
+ end
343
+
344
+ context "values for invalid minimum value" do
345
+ before(:each) do
346
+ Base.values = { "1" => "11" }
347
+ end
348
+
349
+ it { @validator.should_not be_valid }
350
+ end
351
+
352
+ context "values for invalid minimum floating potin value" do
353
+ before(:each) do
354
+ Base.values = { "1" => "10.0000001" }
355
+ end
356
+
357
+ it { @validator.should_not be_valid }
358
+ end
359
+ end
360
+
361
+ context "with target expression and :less_than_or_equal_to" do
362
+ before(:each) do
363
+ @validator = NumericValidator.new("1", :less_than_or_equal_to => 10)
364
+ end
365
+
366
+ context "values for valid maximum value" do
367
+ before(:each) do
368
+ Base.values = { "1" => "9" }
369
+ end
370
+
371
+ it { @validator.should be_valid }
372
+ end
373
+
374
+ context "values for valid maximum floating point value" do
375
+ before(:each) do
376
+ Base.values = { "1" => "9.9999999" }
377
+ end
378
+
379
+ it { @validator.should be_valid }
380
+ end
381
+
382
+ context "values for valid equal value" do
383
+ before(:each) do
384
+ Base.values = { "1" => "10" }
385
+ end
386
+
387
+ it { @validator.should be_valid }
388
+ end
389
+
390
+ context "values for valid equal floating point value" do
391
+ before(:each) do
392
+ Base.values = { "1" => "10.0" }
393
+ end
394
+
395
+ it { @validator.should be_valid }
396
+ end
397
+
398
+ context "values for invalid minimum value" do
399
+ before(:each) do
400
+ Base.values = { "1" => "11" }
401
+ end
402
+
403
+ it { @validator.should_not be_valid }
404
+ end
405
+
406
+ context "values for invalid minimum floating potin value" do
407
+ before(:each) do
408
+ Base.values = { "1" => "10.0000001" }
409
+ end
410
+
411
+ it { @validator.should_not be_valid }
412
+ end
413
+ end
414
+
415
+ context "with target expression and :equal_to" do
416
+ before(:each) do
417
+ @validator = NumericValidator.new("1", :equal_to => 10)
418
+ end
419
+
420
+ context "values for invalid maximum value" do
421
+ before(:each) do
422
+ Base.values = { "1" => "9" }
423
+ end
424
+
425
+ it { @validator.should_not be_valid }
426
+ end
427
+
428
+ context "values for invalid maximum floating point value" do
429
+ before(:each) do
430
+ Base.values = { "1" => "9.9999999" }
431
+ end
432
+
433
+ it { @validator.should_not be_valid }
434
+ end
435
+
436
+ context "values for valid equal value" do
437
+ before(:each) do
438
+ Base.values = { "1" => "10" }
439
+ end
440
+
441
+ it { @validator.should be_valid }
442
+ end
443
+
444
+ context "values for valid equal floating point value" do
445
+ before(:each) do
446
+ Base.values = { "1" => "10.0" }
447
+ end
448
+
449
+ it { @validator.should be_valid }
450
+ end
451
+
452
+ context "values for invalid minimum value" do
453
+ before(:each) do
454
+ Base.values = { "1" => "11" }
455
+ end
456
+
457
+ it { @validator.should_not be_valid }
458
+ end
459
+
460
+ context "values for invalid minimum floating potin value" do
461
+ before(:each) do
462
+ Base.values = { "1" => "10.0000001" }
463
+ end
464
+
465
+ it { @validator.should_not be_valid }
466
+ end
467
+ end
468
+ end