spectus 1.0.1 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96536d6c2a867a9c5b529617dc77dae7116260f9
4
- data.tar.gz: d4b4c8eb31aa8acf82e9c4168b257aa809cdbe95
3
+ metadata.gz: 3b29a968ab4babf3a903050203e7deb144040793
4
+ data.tar.gz: 88bceace4526d5b32086d8cffc4b0bafe0a63eea
5
5
  SHA512:
6
- metadata.gz: dcf717c9763e6f17c6d5aa7649e70fdab32858fc909f8916a7a9a26dd6cb51ec5da739be759ef2f299f0c9a9eca9e4e8aeadcd239e1928c0006d5981c1e03054
7
- data.tar.gz: 9db3be6caec7add9777241dc1e26919fe088056136d8ee342bd1d66f4e67bc091f32f2c72c2f84bbbf46a464f70668e15069b935ee55d0ca7d1b72db3db01ed6
6
+ metadata.gz: 33c4154ad5a8df2a17a18c150f8f08415cde517314b3b108ae25eb5e2150016d88653ff7a20e0bb0f6dd90e4daa4cdf4d443ec6e96da003cc8d0b5a3874ad506
7
+ data.tar.gz: 044277ab6398d8d44b2566b858cb394f22e75c6f8dcd09eae299e3beb3245c7c1304f2fb6966d925feb20f0f119e480b3d1635d5011688fc046c6142176ad660
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -41,8 +41,8 @@ $ gem install spectus
41
41
 
42
42
  ## Why would I want this library?
43
43
 
44
- * It's 194 lines of fast and KISS code.
45
- * Atomic state transitions, immutable objects, thread-safe.
44
+ * It's 143 lines of fast and KISS code.
45
+ * Atomic state transitions, unmutated objects, thread-safe.
46
46
  * Provides a generic and consistent DSL for assertions.
47
47
 
48
48
  ## API
@@ -53,7 +53,7 @@ It takes a block parameter and responds to:
53
53
  * `to(definition)`
54
54
  * `not_to(definition)`
55
55
 
56
- Then it returns `true`, `false`, or a cached exception.
56
+ Then, it returns `true` or `false`; or it raises an exception.
57
57
 
58
58
  ## Usage
59
59
 
@@ -81,6 +81,29 @@ end
81
81
  require 'spectus'
82
82
  extend Spectus::DSL
83
83
 
84
+ # Let's define the custom matcher `capture_stdout`.
85
+ require 'stringio'
86
+ module Spectus
87
+ module Matcher
88
+ class CaptureStdout
89
+ def initialize expected
90
+ @expected = expected
91
+ end
92
+
93
+ def matches?
94
+ begin
95
+ orig_std = $stdout
96
+ $stdout = StringIO.new
97
+ yield
98
+ $stdout.string.eql? @expected
99
+ ensure
100
+ $stdout = orig_std
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+
84
107
  expectation_1 = expect { @bird.walks }.to eql: "Klop klop!"
85
108
  expectation_2 = expect { @bird.swims }.to eql: "Swoosh..."
86
109
  expectation_3 = expect { @bird.quacks }.to capture_stdout: "Quaaaaaack!\n"
@@ -99,18 +122,6 @@ end
99
122
 
100
123
  ## Built-in matchers
101
124
 
102
- ### Standard error
103
-
104
- ```ruby
105
- expect { warn 'foo' }.to capture_stderr: "foo\n" # => true
106
- ```
107
-
108
- ### Standard output
109
-
110
- ```ruby
111
- expect { puts 'foo' }.to capture_stdout: "foo\n" # => true
112
- ```
113
-
114
125
  ### Equivalence
115
126
 
116
127
  ```ruby
data/VERSION.semver CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.1.1
data/example/duck/app.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  require_relative 'lib'
2
2
 
3
- @app = Duck.new
3
+ @bird = Duck.new
data/example/duck/lib.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  class Duck
2
2
  def walks
3
- "Quaaa... Klop klop!"
3
+ "Klop klop!"
4
4
  end
5
5
 
6
6
  def swims
7
- warn " ..."
8
- "Quaaa.."
7
+ "Swoosh..."
9
8
  end
10
9
 
11
10
  def quacks
data/example/duck/test.rb CHANGED
@@ -2,19 +2,42 @@
2
2
 
3
3
  require_relative 'app'
4
4
 
5
- require 'spectus'
5
+ require_relative '../../lib/spectus'
6
6
 
7
7
  extend Spectus::DSL
8
8
 
9
- expectation_1 = expect { @app.swims }.to capture_stderr: " ...\n"
10
- expectation_2 = expect { @app.quacks }.to capture_stdout: "Quaaaaaack!\n"
11
- expectation_3 = expect { @app.speaks }.to raise_exception: NoMethodError
12
- expectation_4 = expect { @app.walks }.to eql: "Quaaa... Klop klop!"
9
+ # Let's define the custom matcher `capture_stdout`.
10
+ require 'stringio'
11
+ module Spectus
12
+ module Matcher
13
+ class CaptureStdout
14
+ def initialize expected
15
+ @expected = expected
16
+ end
17
+
18
+ def matches?
19
+ begin
20
+ orig_std = $stdout
21
+ $stdout = StringIO.new
22
+ yield
23
+ $stdout.string.eql? @expected
24
+ ensure
25
+ $stdout = orig_std
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ expectation_1 = expect { @bird.walks }.to eql: "Klop klop!"
33
+ expectation_2 = expect { @bird.swims }.to eql: "Swoosh..."
34
+ expectation_3 = expect { @bird.quacks }.to capture_stdout: "Quaaaaaack!\n"
35
+ expectation_4 = expect { @bird.speaks }.to raise_exception: NoMethodError
13
36
 
14
37
  case (expectation_1 == true &&
15
38
  expectation_2 == true &&
16
39
  expectation_3 == true &&
17
40
  expectation_4 == true)
18
- when true then puts "I call that #{@app} a duck."
41
+ when true then puts "I call that #{@bird} a duck."
19
42
  else abort 'WAT?'
20
43
  end
@@ -6,29 +6,27 @@ module Spectus
6
6
  #
7
7
  # @example
8
8
  # expect { do_something } # => ExpectationTarget wrapping the block
9
- class ExpectationTarget
9
+ class ExpectationTarget < BasicObject
10
10
  def initialize &actual
11
11
  @actual = actual
12
-
13
- freeze
14
12
  end
15
13
 
16
14
  # Evaluate to a positive assertion.
17
15
  #
18
16
  # @api public
19
17
  #
20
- # @see Matcher#eval
18
+ # @see Matcher#pass?
21
19
  def to definition
22
- Matcher.eval false, definition, &@actual
20
+ Matcher.pass? false, definition, &@actual
23
21
  end
24
22
 
25
23
  # Evaluate to a negative assertion.
26
24
  #
27
25
  # @api public
28
26
  #
29
- # @see Matcher#eval
27
+ # @see Matcher#pass?
30
28
  def not_to definition
31
- Matcher.eval true, definition, &@actual
29
+ Matcher.pass? true, definition, &@actual
32
30
  end
33
31
  end
34
32
  end
@@ -8,18 +8,14 @@ module Spectus
8
8
  # @param [Boolean] negated
9
9
  # @param [Hash] definition
10
10
  #
11
- # @return [ExceptionClass, false, true] true, false, or a cached exception.
12
- def self.eval negated, definition, &actual
13
- params = Array(definition).flatten(1)
11
+ # @return [Boolean] Report if the expectation is true or false.
12
+ def self.pass? negated, definition, &actual
13
+ params = Array(definition).flatten 1
14
14
  name = params.first
15
15
  expected_args = params[1..-1]
16
16
  matcher = Matcher.get(name).new(*expected_args)
17
17
 
18
- begin
19
- negated ^ matcher.matches?(&actual)
20
- rescue => e
21
- e
22
- end
18
+ negated ^ matcher.matches?(&actual)
23
19
  end
24
20
 
25
21
  # Get the class of a matcher from its symbol.
@@ -2,11 +2,9 @@ module Spectus
2
2
  module Matcher
3
3
 
4
4
  # Provides the implementation for `eql`.
5
- class Eql
5
+ class Eql < BasicObject
6
6
  def initialize expected
7
7
  @expected = expected
8
-
9
- freeze
10
8
  end
11
9
 
12
10
  # @return [Boolean] Comparison between actual and expected values.
@@ -2,11 +2,9 @@ module Spectus
2
2
  module Matcher
3
3
 
4
4
  # Provides the implementation for `equal`.
5
- class Equal
5
+ class Equal < BasicObject
6
6
  def initialize expected
7
7
  @expected = expected
8
-
9
- freeze
10
8
  end
11
9
 
12
10
  # @return [Boolean] Comparison between actual and expected values.
@@ -2,11 +2,9 @@ module Spectus
2
2
  module Matcher
3
3
 
4
4
  # Provides the implementation for `match`.
5
- class Match
5
+ class Match < BasicObject
6
6
  def initialize expected
7
7
  @expected = expected
8
-
9
- freeze
10
8
  end
11
9
 
12
10
  # @return [Boolean] Comparison between actual and expected values.
@@ -2,11 +2,9 @@ module Spectus
2
2
  module Matcher
3
3
 
4
4
  # Provides the implementation for `raise_exception`.
5
- class RaiseException
5
+ class RaiseException < BasicObject
6
6
  def initialize expected
7
7
  @expected = expected
8
-
9
- freeze
10
8
  end
11
9
 
12
10
  # @return [Boolean] Comparison between actual and expected values.
@@ -4,15 +4,15 @@ subject 'eql built-in matcher' do
4
4
  Spectus::Matcher::Eql.new 'foo'
5
5
  end
6
6
 
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to eql: 'foo'
9
- end
10
-
11
7
  it 'must be eql' do
12
8
  expect { subject.matches? { 'foo' } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not be eql' do
12
+ expect { subject.matches? { 'bar' } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { 'bar' } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'equal built-in matcher' do
4
4
  Spectus::Matcher::Equal.new :foo
5
5
  end
6
6
 
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to equal: :foo
9
- end
10
-
11
7
  it 'must be equal' do
12
8
  expect { subject.matches? { :foo } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not be equal' do
12
+ expect { subject.matches? { :bar } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { :bar } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'match built-in matcher' do
4
4
  Spectus::Matcher::Match.new(/^foo/)
5
5
  end
6
6
 
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to({eql: /^foo/})
9
- end
10
-
11
7
  it 'must match the string' do
12
8
  expect { subject.matches? { 'foobar' } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not match the string' do
12
+ expect { subject.matches? { 'bar' } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { 'bar' } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'raise exception built-in matcher' do
4
4
  Spectus::Matcher::RaiseException.new ZeroDivisionError
5
5
  end
6
6
 
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to equal: ZeroDivisionError
9
- end
10
-
11
7
  it 'must raise the expected exception' do
12
8
  expect { subject.matches? { 0 / 0 } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not raise any exceptions' do
12
+ expect { subject.matches? { :foo } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { :foo } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'be prime custom matcher' do
4
4
  Spectus::Matcher::BePrime.new
5
5
  end
6
6
 
7
- it 'must confirm that the instance variable is undefined' do
8
- expect { subject.instance_variable_defined?(:@expected) }.to equal: false
9
- end
10
-
11
7
  it 'must be prime' do
12
8
  expect { subject.matches? { 3 } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not match the string' do
12
+ expect { subject.matches? { 4 } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { 4 } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'be the answer custom matcher' do
4
4
  Spectus::Matcher::BeTheAnswer.new
5
5
  end
6
6
 
7
- it 'must confirm that the instance variable is undefined' do
8
- expect { subject.instance_variable_defined?(:@expected) }.to equal: false
9
- end
10
-
11
7
  it 'must be the answer' do
12
8
  expect { subject.matches? { 42 } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not match the string' do
12
+ expect { subject.matches? { 'foo' } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { 'foo' } }.to equal: false
17
17
  end
18
18
 
@@ -4,15 +4,15 @@ subject 'start with custom matcher' do
4
4
  Spectus::Matcher::StartWith.new('foo')
5
5
  end
6
6
 
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to eql: 'foo'
9
- end
10
-
11
7
  it 'must match the string' do
12
8
  expect { subject.matches? { 'foobar' } }.to equal: true
13
9
  end
14
10
 
15
11
  it 'must not match the string' do
12
+ expect { subject.matches? { 'bar' } }.not_to equal: true
13
+ end
14
+
15
+ it 'must return false' do
16
16
  expect { subject.matches? { 'bar' } }.to equal: false
17
17
  end
18
18
 
@@ -5,22 +5,23 @@ subject "matcher module" do
5
5
  end
6
6
 
7
7
  it 'must return true after the evaluation' do
8
- expect { subject.eval(false, eql: 'foo') { 'foo' } }.to equal: true
8
+ expect { subject.pass?(false, eql: 'foo') { 'foo' } }.to equal: true
9
9
  end
10
10
 
11
11
  it 'must return false after the evaluation' do
12
- expect { subject.eval(false, eql: 'foo') { 'bar' } }.to equal: false
12
+ expect { subject.pass?(false, eql: 'foo') { 'bar' } }.to equal: false
13
13
  end
14
14
 
15
- it 'must return an exception after the evaluation' do
16
- expect { subject.eval(false, eql: 'foo') { BOOM }.class }.to equal: NameError
15
+ it 'must raise a name error exception' do
16
+ expect { subject.pass?(false, eql: 'foo') { BOOM } }.
17
+ to raise_exception: NameError
17
18
  end
18
19
 
19
20
  it 'must return the class of a matcher from its symbol' do
20
21
  expect { subject.get(:eql).equal? subject.const_get(:Eql) }.to equal: true
21
22
  end
22
23
 
23
- it 'must raise: uninitialized constant Foo' do
24
+ it 'must raise a name error exception' do
24
25
  expect { subject.get(:foo).equal? subject.const_get(:Foo) }.
25
26
  to raise_exception: NameError
26
27
  end
@@ -29,9 +30,6 @@ it 'must no longer raise' do
29
30
  module Spectus
30
31
  module Matcher
31
32
  class Foo
32
- def matches?
33
- true
34
- end
35
33
  end
36
34
  end
37
35
  end
@@ -1,3 +1,11 @@
1
+ require 'simplecov'
1
2
  require 'coveralls'
2
3
 
3
- Coveralls.wear!
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+
9
+ SimpleCov.start do
10
+ minimum_coverage 100
11
+ end
data/test/support/env.rb CHANGED
@@ -1,4 +1 @@
1
- if RUBY_VERSION < '2.0.0'
2
- warn "Needs Ruby 2.0.0, you're running: #{RUBY_VERSION}"
3
- exit 1
4
- end
1
+ abort "Needs Ruby 2, you're running: #{RUBY_VERSION}" if RUBY_VERSION < '2'
@@ -0,0 +1,12 @@
1
+ class Object
2
+ alias_method :overridden_initialize, :initialize
3
+
4
+ def initialize
5
+ overridden_initialize
6
+
7
+ if !self.class.ancestors.include?(SimpleCov::Formatter::MultiFormatter) &&
8
+ !self.class.ancestors.include?(SimpleCov::Formatter::HTMLFormatter)
9
+ freeze
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,3 @@
1
- @failures = 0
2
-
3
1
  def subject title = nil, &block
4
2
  if block
5
3
  @subject = block.call
@@ -11,21 +9,5 @@ end
11
9
 
12
10
  def it describe, &expectation
13
11
  print " * #{describe}: ".ljust 79
14
-
15
- result = expectation.call
16
-
17
- case result
18
- when true
19
- puts "\e[32m.\e[0m"
20
- when false
21
- @failures += 1
22
- warn "\e[31mF\e[0m"
23
- else
24
- @failures += 1
25
- fail result
26
- end
27
- end
28
-
29
- at_exit do
30
- abort("\e[31mFailure.\e[0m") unless @failures.zero?
12
+ expectation.call.equal?(true) ? puts('.') : abort('F')
31
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spectus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Wack
@@ -30,7 +30,7 @@ cert_chain:
30
30
  zeYBFLJQAl0AQPaGujsG5tssIabiNy1ryydKAjWkNDxqLgvtwST3L0Qr9UQFQgoA
31
31
  O2Rl8PjSD+2P9XE7T2x1xQ==
32
32
  -----END CERTIFICATE-----
33
- date: 2014-10-13 00:00:00.000000000 Z
33
+ date: 2014-10-19 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: bundler
@@ -112,8 +112,6 @@ files:
112
112
  - lib/spectus/dsl.rb
113
113
  - lib/spectus/expectation_target.rb
114
114
  - lib/spectus/matcher.rb
115
- - lib/spectus/matcher/capture_stderr.rb
116
- - lib/spectus/matcher/capture_stdout.rb
117
115
  - lib/spectus/matcher/eql.rb
118
116
  - lib/spectus/matcher/equal.rb
119
117
  - lib/spectus/matcher/match.rb
@@ -124,8 +122,6 @@ files:
124
122
  - test/helper_test.rb
125
123
  - test/spectus/helper_test.rb
126
124
  - test/spectus/matcher/built_in/helper_test.rb
127
- - test/spectus/matcher/built_in/test_capture_stderr.rb
128
- - test/spectus/matcher/built_in/test_capture_stdout.rb
129
125
  - test/spectus/matcher/built_in/test_eql.rb
130
126
  - test/spectus/matcher/built_in/test_equal.rb
131
127
  - test/spectus/matcher/built_in/test_match.rb
@@ -139,12 +135,12 @@ files:
139
135
  - test/spectus/matcher/custom/start_with/test_start_with.rb
140
136
  - test/spectus/matcher/helper_test.rb
141
137
  - test/spectus/test_dsl.rb
142
- - test/spectus/test_expectation_target.rb
143
138
  - test/spectus/test_matcher.rb
144
139
  - test/spectus/test_version.rb
145
140
  - test/support.rb
146
141
  - test/support/coverage.rb
147
142
  - test/support/env.rb
143
+ - test/support/immutable.rb
148
144
  - test/support/presenter.rb
149
145
  homepage: https://github.com/fixrb/spectus
150
146
  licenses:
@@ -174,8 +170,6 @@ test_files:
174
170
  - test/helper_test.rb
175
171
  - test/spectus/helper_test.rb
176
172
  - test/spectus/matcher/built_in/helper_test.rb
177
- - test/spectus/matcher/built_in/test_capture_stderr.rb
178
- - test/spectus/matcher/built_in/test_capture_stdout.rb
179
173
  - test/spectus/matcher/built_in/test_eql.rb
180
174
  - test/spectus/matcher/built_in/test_equal.rb
181
175
  - test/spectus/matcher/built_in/test_match.rb
@@ -189,11 +183,11 @@ test_files:
189
183
  - test/spectus/matcher/custom/start_with/test_start_with.rb
190
184
  - test/spectus/matcher/helper_test.rb
191
185
  - test/spectus/test_dsl.rb
192
- - test/spectus/test_expectation_target.rb
193
186
  - test/spectus/test_matcher.rb
194
187
  - test/spectus/test_version.rb
195
188
  - test/support.rb
196
189
  - test/support/coverage.rb
197
190
  - test/support/env.rb
191
+ - test/support/immutable.rb
198
192
  - test/support/presenter.rb
199
193
  has_rdoc:
metadata.gz.sig CHANGED
Binary file
@@ -1,28 +0,0 @@
1
- require 'stringio'
2
-
3
- module Spectus
4
- module Matcher
5
-
6
- # Provides the implementation for `capture_stderr`.
7
- class CaptureStderr
8
- def initialize expected
9
- @expected = expected
10
-
11
- freeze
12
- end
13
-
14
- # @return [Boolean] Comparison between actual and expected values.
15
- def matches?
16
- begin
17
- orig_std = $stderr
18
- $stderr = StringIO.new
19
-
20
- yield
21
- $stderr.string.eql? @expected
22
- ensure
23
- $stderr = orig_std
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- require 'stringio'
2
-
3
- module Spectus
4
- module Matcher
5
-
6
- # Provides the implementation for `capture_stdout`.
7
- class CaptureStdout
8
- def initialize expected
9
- @expected = expected
10
-
11
- freeze
12
- end
13
-
14
- # @return [Boolean] Comparison between actual and expected values.
15
- def matches?
16
- begin
17
- orig_std = $stdout
18
- $stdout = StringIO.new
19
-
20
- yield
21
- $stdout.string.eql? @expected
22
- ensure
23
- $stdout = orig_std
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,21 +0,0 @@
1
- require_relative 'helper_test'
2
-
3
- subject 'capture standard error built-in matcher' do
4
- Spectus::Matcher::CaptureStderr.new "foo\n"
5
- end
6
-
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to eql: "foo\n"
9
- end
10
-
11
- it 'must match the captured standard error' do
12
- expect { subject.matches? { warn 'foo' } }.to equal: true
13
- end
14
-
15
- it 'must not match the captured standard error' do
16
- expect { subject.matches? { warn 'bar' } }.to equal: false
17
- end
18
-
19
- it 'must return the raised exception' do
20
- expect { raise subject.matches? { BOOM } }.to raise_exception: NameError
21
- end
@@ -1,21 +0,0 @@
1
- require_relative 'helper_test'
2
-
3
- subject 'capture standard output built-in matcher' do
4
- Spectus::Matcher::CaptureStdout.new "foo\n"
5
- end
6
-
7
- it 'must return the expected value' do
8
- expect { subject.instance_variable_get(:@expected) }.to eql: "foo\n"
9
- end
10
-
11
- it 'must match the captured standard output' do
12
- expect { subject.matches? { puts 'foo' } }.to equal: true
13
- end
14
-
15
- it 'must not match the captured standard output' do
16
- expect { subject.matches? { puts 'bar' } }.to equal: false
17
- end
18
-
19
- it 'must return the raised exception' do
20
- expect { raise subject.matches? { BOOM } }.to raise_exception: NameError
21
- end
@@ -1,17 +0,0 @@
1
- require_relative 'helper_test'
2
-
3
- subject "expectation target" do
4
- Spectus::ExpectationTarget.new { 42 }
5
- end
6
-
7
- it 'must confirm that the block is defined' do
8
- expect { subject.instance_variable_defined?(:@actual) }.to equal: true
9
- end
10
-
11
- it 'must responds to :to' do
12
- expect { subject.respond_to? :to }.to equal: true
13
- end
14
-
15
- it 'must responds to :not_to' do
16
- expect { subject.respond_to? :not_to }.to equal: true
17
- end