condition 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d4a0cebdd36e6c4981bab4edb93a5d713d2bc82
4
- data.tar.gz: 5062bf4d8a141fe2767c09971d638819f60cd402
3
+ metadata.gz: e3eb00ca6c24ba6ae12cd36c71d7e90c9dcbf1be
4
+ data.tar.gz: a610828831e5f8bf184fde0ced8e7ae492684b23
5
5
  SHA512:
6
- metadata.gz: 1b1beb3167e03ec67a760aef3502edb55d854c75ff2ce44bcd5cc95db2844ab51f34d83370fbacba31689ace2f0c9da2120a18aeb6714d3f07866991de1e6c7b
7
- data.tar.gz: 17723d890d078b0faedc501e28b9ac3c2c6d40981fe8304504b66059b0c91c9410548a1c82ac5a512dd737ad48fb41a38fae5ddb1754831c3f3bd6f10382985c
6
+ metadata.gz: 5b956d6a735d1768218b04442dc5a1c247c4019fbf3e817afe3cf5ea228e6d869906e13d11206f197540091168a73176bc3159376b13bce94e3cceec6ce0a29e
7
+ data.tar.gz: ba048d48feb07537cdb30bc3f3e351fff2827facaa012938082d49d3cc475e3713219ac05755bf49952e69312bc3f450498e4f3bf378332695bf736926292cd2
data/README.md CHANGED
@@ -30,6 +30,17 @@ TODO: Write usage instructions here
30
30
 
31
31
  ## Changes
32
32
 
33
+ 2013-04-17 0.0.6
34
+ modify symbol or string
35
+ check hash and ary
36
+ modify check_value raise
37
+
38
+ 2013-04-17 0.0.5
39
+ add pre_after exec
40
+
41
+ 2013-04-15 0.0.4
42
+ add default to precondition
43
+
33
44
  2013-04-15 0.0.3
34
45
  add default to precondition
35
46
 
@@ -24,4 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "pg"
25
25
  spec.add_dependency "roo"
26
26
  spec.add_dependency "sequel"
27
+ spec.add_dependency "json"
28
+ spec.add_dependency "activesupport"
27
29
  end
@@ -1,5 +1,7 @@
1
1
  # coding: utf-8
2
2
  require 'time'
3
+ require 'json'
4
+ require 'active_support/all'
3
5
 
4
6
  module Condition
5
7
  class ParamItem
@@ -69,7 +71,36 @@ module Condition
69
71
  if Time === real
70
72
  real == Time.parse(expected)
71
73
  elsif nil == real
72
- expected == nil
74
+ expected == nil || expected == "#NULL"
75
+ elsif Hash === real
76
+ ex = expected
77
+ if !(Hash === expected)
78
+ ex = JSON.parse(expected)
79
+ end
80
+ ex = ex.symbolize_keys
81
+ result = true
82
+ ex.each_pair do |k, v|
83
+ res = value_match?(v, real[k])
84
+ result = false if !res
85
+ end
86
+ result
87
+ elsif Array === real
88
+ ex = expected
89
+ if !(Array === expected)
90
+ ex = JSON.parse(expected)
91
+ end
92
+ false if Array === ex
93
+ size = ex.size()
94
+ true if size == 0 && real.size() == 0
95
+ false if size != real.size()
96
+ index = 0
97
+ while true
98
+ break if index >= size
99
+ result = value_match?(ex[index], real[index])
100
+ return false if !result
101
+ index = index + 1
102
+ end
103
+ true
73
104
  else
74
105
  real.to_s == expected
75
106
  end
@@ -78,8 +109,11 @@ module Condition
78
109
  def check_value(real, value)
79
110
  targetFlag = true
80
111
  matchFlag = true
112
+ unmatch_info = []
113
+ real = real.symbolize_keys
81
114
  value.each_pair do |k, v|
82
- match = value_match?(v, nil == real[k] ? real[k.to_s] : real[k])
115
+ match = value_match?(v, real[k])
116
+ unmatch_info << v.to_s + " <> " + real[k].to_s if !match
83
117
  whereKeyFlag = nil != @keys.index(k.to_s)
84
118
  matchFlag = false if !match
85
119
  targetFlag = false if whereKeyFlag && !match
@@ -89,7 +123,7 @@ module Condition
89
123
  elsif !targetFlag
90
124
  return false
91
125
  else
92
- raise "#{@name} not match " + real.to_s
126
+ raise "#{@name} not match " + real.to_s + "\n" + unmatch_info.join("\n")
93
127
  end
94
128
  end
95
129
 
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Condition
4
- VERSION = "0.0.5"
4
+ VERSION = "0.0.6"
5
5
  end
@@ -28,5 +28,11 @@ describe Condition do
28
28
  list = DB["SELECT * FROM t_user"].all
29
29
  param.check('list', list)
30
30
  param.check('list', [{"user_id" => 1, "user_name" => "aaax"}])
31
+ param.check('ary', [{name: "a", val1: {a: "b"}, val2: [{a: {c: "d"}}], val3: [], val4: nil}])
32
+ end
33
+
34
+ it 'unmatch' do
35
+ param = Condition::Param.new(FILES + '/t_user.ods', 2)
36
+ lambda{param.check('unmatch', [{id: 1, name: "bbb", val: 456}])}.should raise_error
31
37
  end
32
38
  end
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: condition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - aoyagikouhei
@@ -94,6 +94,34 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  description: Condition Test
98
126
  email:
99
127
  - aoyagi.kouhei@gmail.com