spectus 2.0.2 → 2.0.3

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.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -36,6 +36,15 @@ Or install it yourself as:
36
36
 
37
37
  $ gem install spectus
38
38
 
39
+ ## Results
40
+
41
+ | Requirement levels | **MUST** | **SHOULD** | **MAY** |
42
+ | ------------------------- | -------- | ---------- | ------- |
43
+ | Implemented & Matched | `true` | `true` | `true` |
44
+ | Implemented & Not matched | `false` | `true` | `false` |
45
+ | Implemented & Exception | `false` | `false` | `false` |
46
+ | Not implemented | `false` | `false` | `true` |
47
+
39
48
  ## Usage
40
49
 
41
50
  **Absolute requirement** definition:
data/VERSION.semver CHANGED
@@ -1 +1 @@
1
- 2.0.2
1
+ 2.0.3
@@ -5,6 +5,8 @@ require_relative File.join 'requirement_level', 'low'
5
5
  module Spectus
6
6
  # Wraps the target of an expectation.
7
7
  #
8
+ # @api private
9
+ #
8
10
  # @example
9
11
  # this { stuff } # => ExpectationTarget wrapping the block
10
12
  class ExpectationTarget < BasicObject
@@ -0,0 +1,20 @@
1
+ require 'matchi'
2
+
3
+ module Spectus
4
+ # This module provides matchers to define expectations.
5
+ module Matcher
6
+ # Evaluate the expectation with the passed block.
7
+ #
8
+ # @param [Hash, Symbol] definition
9
+ #
10
+ # @return [Boolean] report if the expectation is true or false
11
+ def self.pass?(definition, &actual)
12
+ params = Array(definition).flatten(1)
13
+ name = params.first.to_s.split('_').map(&:capitalize).join.to_sym
14
+ expected_args = params[1..-1]
15
+ matcher = Matchi.const_get(name).new(*expected_args)
16
+
17
+ matcher.matches?(&actual)
18
+ end
19
+ end
20
+ end
@@ -23,7 +23,7 @@ module Spectus
23
23
  #
24
24
  # @return [Boolean] report if the expectation is true or false.
25
25
  def sandbox(&actual)
26
- Sandbox.new(@definition, &actual)
26
+ Sandbox.new(@definition, @negate, &actual)
27
27
  end
28
28
  end
29
29
  end
@@ -9,7 +9,7 @@ module Spectus
9
9
  #
10
10
  # @return [Boolean] report if the expectation is true or false.
11
11
  def pass?(&actual)
12
- sandbox(&actual).pass?(@negate)
12
+ sandbox(&actual).pass?
13
13
  end
14
14
  end
15
15
  end
@@ -14,7 +14,7 @@ module Spectus
14
14
  if result.exception.class.equal?(::NoMethodError)
15
15
  true
16
16
  else
17
- result.pass?(@negate)
17
+ result.pass?
18
18
  end
19
19
  end
20
20
  end
@@ -11,7 +11,7 @@ module Spectus
11
11
  def pass?(&actual)
12
12
  result = sandbox(&actual)
13
13
 
14
- if result.pass?(@negate)
14
+ if result.pass?
15
15
  true
16
16
  else
17
17
  result.exception.nil?
@@ -1,4 +1,4 @@
1
- require 'expect'
1
+ require_relative 'matcher'
2
2
 
3
3
  module Spectus
4
4
  # This class evaluate the expectation with the passed block.
@@ -11,22 +11,22 @@ module Spectus
11
11
  # Execute the untested code from the passed block against the definition.
12
12
  #
13
13
  # @param [Hash] definition
14
- def initialize(definition, &actual)
15
- @got = ::Expect.this(&actual).to(definition)
14
+ # @param [Boolean] negate
15
+ # @yieldparam actual the value which is compared with the expected value.
16
+ def initialize(definition, negate, &actual)
17
+ @got = negate ^ Matcher.pass?(definition, &actual)
16
18
  rescue => e
17
19
  @exception = e
18
20
  end
19
21
 
20
- # Return the result as a positive or a negative assertion.
21
- #
22
- # @param [Boolean] negate
22
+ # Return the result.
23
23
  #
24
24
  # @return [Boolean] Report if the test was true or false.
25
- def pass?(negate)
25
+ def pass?
26
26
  if defined?(@exception)
27
27
  false
28
28
  else
29
- negate ^ @got
29
+ @got
30
30
  end
31
31
  end
32
32
  end
data/spectus.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.executables = spec.files.grep(/^exe\//) { |f| File.basename(f) }
15
15
  spec.require_paths = ['lib']
16
16
 
17
- spec.add_dependency 'expect', '~> 0.0.4'
17
+ spec.add_dependency 'matchi', '~> 0.0.4'
18
18
 
19
19
  spec.add_development_dependency 'bundler', '~> 1.8'
20
20
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,119 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spectus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Cyril Wack
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQ4wDAYDVQQDDAVjeXJp
14
- bDEXMBUGCgmSJomT8ixkARkWB3Nhc2hpdGUxEzARBgoJkiaJk/IsZAEZFgNjb20w
15
- HhcNMTQwOTI0MTUyOTE0WhcNMTUwOTI0MTUyOTE0WjA+MQ4wDAYDVQQDDAVjeXJp
16
- bDEXMBUGCgmSJomT8ixkARkWB3Nhc2hpdGUxEzARBgoJkiaJk/IsZAEZFgNjb20w
17
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDpolrc0SLpDakbnGS/hPqX
18
- DBsM9WKIrIiDmpmdM0PBR5tW1Jad0/17xGCTGwxKjul3zqjfh9wQK+NnS4NUtxQj
19
- brxQroYotsVwaUXOKuruDsL8lfx8+dqYvWBE6mt4Ggx3lnausO5IWQ1bSpdcYpyr
20
- mxuR6ch1E5yS3+AdTFNp19iwFv6EOL/O0iE7Jb4RCcfp4Ua/9RAo3GHz+/iVkLjx
21
- HxVZf/4F8lvpCBadg8TsHZTqQgr8EW6THeHi5YXVFth3LH7eAY7Q+vCKhQoIOPmj
22
- C4AylJ7zT5tD9BJMwSenrtF0oZntmlKLgygyntxbZUExMjesdPXXzpZZ6v8Vco6N
23
- AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRq64f9
24
- CZGW/N6a/4Q/glHHiA05VDAcBgNVHREEFTATgRFjeXJpbEBzYXNoaXRlLmNvbTAc
25
- BgNVHRIEFTATgRFjeXJpbEBzYXNoaXRlLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEA
26
- OMD+bOYidquEGI87612sDP2QJXmIhDbbUFmvm8dGTABtyYdrdl77dEsaL8gEDSOC
27
- nABh6/LOnLYlvAQE8bGMKdy/V4qwndS5i2j4ZfZTKEUUQ+FCcOfbHE1LrzYvuCyD
28
- etFGUmqF5UtCBzDlwCiupv1m5f4yp/3IVARf3jwMVzlCLcTw7WVCrXL4ZgnStiBI
29
- wRdxjXHZe3W/Ux7Irtd+JPd8pwuObE8i7h1tepcMWNQWFFmYOmYwmkB46WUTqa3Y
30
- zeYBFLJQAl0AQPaGujsG5tssIabiNy1ryydKAjWkNDxqLgvtwST3L0Qr9UQFQgoA
31
- O2Rl8PjSD+2P9XE7T2x1xQ==
32
- -----END CERTIFICATE-----
33
- date: 2015-02-19 00:00:00.000000000 Z
12
+ - !binary |-
13
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURiRENDQWxTZ0F3SUJB
14
+ Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREErTVE0d0RBWURWUVFEREFWamVY
15
+ SnAKYkRFWE1CVUdDZ21TSm9tVDhpeGtBUmtXQjNOaGMyaHBkR1V4RXpBUkJn
16
+ b0praWFKay9Jc1pBRVpGZ05qYjIwdwpIaGNOTVRRd09USTBNVFV5T1RFMFdo
17
+ Y05NVFV3T1RJME1UVXlPVEUwV2pBK01RNHdEQVlEVlFRRERBVmplWEpwCmJE
18
+ RVhNQlVHQ2dtU0pvbVQ4aXhrQVJrV0IzTmhjMmhwZEdVeEV6QVJCZ29Ka2lh
19
+ SmsvSXNaQUVaRmdOamIyMHcKZ2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJ
20
+ QkR3QXdnZ0VLQW9JQkFRRHBvbHJjMFNMcERha2JuR1MvaFBxWApEQnNNOVdL
21
+ SXJJaURtcG1kTTBQQlI1dFcxSmFkMC8xN3hHQ1RHd3hLanVsM3pxamZoOXdR
22
+ SytOblM0TlV0eFFqCmJyeFFyb1lvdHNWd2FVWE9LdXJ1RHNMOGxmeDgrZHFZ
23
+ dldCRTZtdDRHZ3gzbG5hdXNPNUlXUTFiU3BkY1lweXIKbXh1UjZjaDFFNXlT
24
+ MytBZFRGTnAxOWl3RnY2RU9ML08waUU3SmI0UkNjZnA0VWEvOVJBbzNHSHor
25
+ L2lWa0xqeApIeFZaZi80RjhsdnBDQmFkZzhUc0haVHFRZ3I4RVc2VEhlSGk1
26
+ WVhWRnRoM0xIN2VBWTdRK3ZDS2hRb0lPUG1qCkM0QXlsSjd6VDV0RDlCSk13
27
+ U2VucnRGMG9abnRtbEtMZ3lneW50eGJaVUV4TWplc2RQWFh6cFpaNnY4VmNv
28
+ Nk4KQWdNQkFBR2pkVEJ6TUFrR0ExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFn
29
+ U3dNQjBHQTFVZERnUVdCQlJxNjRmOQpDWkdXL042YS80US9nbEhIaUEwNVZE
30
+ QWNCZ05WSFJFRUZUQVRnUkZqZVhKcGJFQnpZWE5vYVhSbExtTnZiVEFjCkJn
31
+ TlZIUklFRlRBVGdSRmplWEpwYkVCellYTm9hWFJsTG1OdmJUQU5CZ2txaGtp
32
+ Rzl3MEJBUVVGQUFPQ0FRRUEKT01EK2JPWWlkcXVFR0k4NzYxMnNEUDJRSlht
33
+ SWhEYmJVRm12bThkR1RBQnR5WWRyZGw3N2RFc2FMOGdFRFNPQwpuQUJoNi9M
34
+ T25MWWx2QVFFOGJHTUtkeS9WNHF3bmRTNWkyajRaZlpUS0VVVVErRkNjT2Zi
35
+ SEUxTHJ6WXZ1Q3lECmV0RkdVbXFGNVV0Q0J6RGx3Q2l1cHYxbTVmNHlwLzNJ
36
+ VkFSZjNqd01WemxDTGNUdzdXVkNyWEw0WmduU3RpQkkKd1JkeGpYSFplM1cv
37
+ VXg3SXJ0ZCtKUGQ4cHd1T2JFOGk3aDF0ZXBjTVdOUVdGRm1ZT21Zd21rQjQ2
38
+ V1VUcWEzWQp6ZVlCRkxKUUFsMEFRUGFHdWpzRzV0c3NJYWJpTnkxcnl5ZEtB
39
+ aldrTkR4cUxndnR3U1QzTDBRcjlVUUZRZ29BCk8yUmw4UGpTRCsyUDlYRTdU
40
+ MngxeFE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
41
+ date: 2015-02-22 00:00:00.000000000 Z
34
42
  dependencies:
35
43
  - !ruby/object:Gem::Dependency
36
- name: expect
44
+ name: matchi
37
45
  requirement: !ruby/object:Gem::Requirement
46
+ none: false
38
47
  requirements:
39
- - - "~>"
48
+ - - ~>
40
49
  - !ruby/object:Gem::Version
41
50
  version: 0.0.4
42
51
  type: :runtime
43
52
  prerelease: false
44
53
  version_requirements: !ruby/object:Gem::Requirement
54
+ none: false
45
55
  requirements:
46
- - - "~>"
56
+ - - ~>
47
57
  - !ruby/object:Gem::Version
48
58
  version: 0.0.4
49
59
  - !ruby/object:Gem::Dependency
50
60
  name: bundler
51
61
  requirement: !ruby/object:Gem::Requirement
62
+ none: false
52
63
  requirements:
53
- - - "~>"
64
+ - - ~>
54
65
  - !ruby/object:Gem::Version
55
66
  version: '1.8'
56
67
  type: :development
57
68
  prerelease: false
58
69
  version_requirements: !ruby/object:Gem::Requirement
70
+ none: false
59
71
  requirements:
60
- - - "~>"
72
+ - - ~>
61
73
  - !ruby/object:Gem::Version
62
74
  version: '1.8'
63
75
  - !ruby/object:Gem::Dependency
64
76
  name: rake
65
77
  requirement: !ruby/object:Gem::Requirement
78
+ none: false
66
79
  requirements:
67
- - - "~>"
80
+ - - ~>
68
81
  - !ruby/object:Gem::Version
69
82
  version: '10.0'
70
83
  type: :development
71
84
  prerelease: false
72
85
  version_requirements: !ruby/object:Gem::Requirement
86
+ none: false
73
87
  requirements:
74
- - - "~>"
88
+ - - ~>
75
89
  - !ruby/object:Gem::Version
76
90
  version: '10.0'
77
91
  - !ruby/object:Gem::Dependency
78
92
  name: yard
79
93
  requirement: !ruby/object:Gem::Requirement
94
+ none: false
80
95
  requirements:
81
- - - "~>"
96
+ - - ~>
82
97
  - !ruby/object:Gem::Version
83
98
  version: '0.8'
84
99
  type: :development
85
100
  prerelease: false
86
101
  version_requirements: !ruby/object:Gem::Requirement
102
+ none: false
87
103
  requirements:
88
- - - "~>"
104
+ - - ~>
89
105
  - !ruby/object:Gem::Version
90
106
  version: '0.8'
91
107
  - !ruby/object:Gem::Dependency
92
108
  name: simplecov
93
109
  requirement: !ruby/object:Gem::Requirement
110
+ none: false
94
111
  requirements:
95
- - - "~>"
112
+ - - ~>
96
113
  - !ruby/object:Gem::Version
97
114
  version: 0.9.1
98
115
  type: :development
99
116
  prerelease: false
100
117
  version_requirements: !ruby/object:Gem::Requirement
118
+ none: false
101
119
  requirements:
102
- - - "~>"
120
+ - - ~>
103
121
  - !ruby/object:Gem::Version
104
122
  version: 0.9.1
105
123
  - !ruby/object:Gem::Dependency
106
124
  name: rubocop
107
125
  requirement: !ruby/object:Gem::Requirement
126
+ none: false
108
127
  requirements:
109
- - - "~>"
128
+ - - ~>
110
129
  - !ruby/object:Gem::Version
111
130
  version: '0.29'
112
131
  type: :development
113
132
  prerelease: false
114
133
  version_requirements: !ruby/object:Gem::Requirement
134
+ none: false
115
135
  requirements:
116
- - - "~>"
136
+ - - ~>
117
137
  - !ruby/object:Gem::Version
118
138
  version: '0.29'
119
139
  description: Expectation library with RFC 2119's requirement levels, and some matchers
@@ -124,9 +144,9 @@ executables: []
124
144
  extensions: []
125
145
  extra_rdoc_files: []
126
146
  files:
127
- - ".gitignore"
128
- - ".travis.yml"
129
- - ".yardopts"
147
+ - .gitignore
148
+ - .travis.yml
149
+ - .yardopts
130
150
  - CODE_OF_CONDUCT.md
131
151
  - Gemfile
132
152
  - LICENSE.md
@@ -137,6 +157,7 @@ files:
137
157
  - bin/setup
138
158
  - lib/spectus.rb
139
159
  - lib/spectus/expectation_target.rb
160
+ - lib/spectus/matcher.rb
140
161
  - lib/spectus/requirement.rb
141
162
  - lib/spectus/requirement_level/high.rb
142
163
  - lib/spectus/requirement_level/low.rb
@@ -147,26 +168,33 @@ files:
147
168
  homepage: https://github.com/fixrb/spectus
148
169
  licenses:
149
170
  - MIT
150
- metadata: {}
151
171
  post_install_message:
152
172
  rdoc_options: []
153
173
  require_paths:
154
174
  - lib
155
175
  required_ruby_version: !ruby/object:Gem::Requirement
176
+ none: false
156
177
  requirements:
157
- - - ">="
178
+ - - ! '>='
158
179
  - !ruby/object:Gem::Version
159
180
  version: '0'
181
+ segments:
182
+ - 0
183
+ hash: 273438499911024764
160
184
  required_rubygems_version: !ruby/object:Gem::Requirement
185
+ none: false
161
186
  requirements:
162
- - - ">="
187
+ - - ! '>='
163
188
  - !ruby/object:Gem::Version
164
189
  version: '0'
190
+ segments:
191
+ - 0
192
+ hash: 273438499911024764
165
193
  requirements: []
166
194
  rubyforge_project:
167
- rubygems_version: 2.4.5
195
+ rubygems_version: 1.8.23.2
168
196
  signing_key:
169
- specification_version: 4
197
+ specification_version: 3
170
198
  summary: Expectation library with requirement levels.
171
199
  test_files: []
172
200
  has_rdoc:
metadata.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- !�w��1)��;A�?�҇�ƍ{ַE��5?LK~�_CC{α�����3:�VZݽQ��}J!н����
2
- ��8�7��l'T�p�f�,�G�m���qK�������1u4xsS��R�D�MG��w�
1
+ AEh.;� �҆�Κ��:Y�h���� �|��iy;<W�H���bU��J�T�[iҦ��e��<��k>/J*lvG�t���� �K�eo�ܦxUa
2
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 0c3e542950b2210e49686b15023c8be3d160aa49
4
- data.tar.gz: b45fe15296e94a7ae911b126172183a9149758f5
5
- SHA512:
6
- metadata.gz: 8ac7132ac401af9effa9b7e2613492a5fa3f4892cfdd302d22d01c500b1c3c63c30ba7e2ee1e429c8acbfaa7d2f0572c3a62926d72f33e5b50d10c51b720a407
7
- data.tar.gz: 265522140ef91356450d32a5cf4fa16b0ffaedf9da7209ba7e66c1435e3248df0cf8ae7b56aa6676a42e653e47c2a39cc9308281a0bdd124f6f0c63f49a5b7f4
checksums.yaml.gz.sig DELETED
Binary file