condition 0.0.5 → 0.0.6

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.
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