rsanheim-micronaut 0.1.3.2
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/LICENSE +45 -0
- data/README +17 -0
- data/RSPEC-LICENSE +23 -0
- data/Rakefile +83 -0
- data/bin/micronaut +4 -0
- data/examples/example_helper.rb +36 -0
- data/examples/lib/micronaut/behaviour_example.rb +188 -0
- data/examples/lib/micronaut/configuration_example.rb +70 -0
- data/examples/lib/micronaut/example_example.rb +46 -0
- data/examples/lib/micronaut/expectations/extensions/object_example.rb +72 -0
- data/examples/lib/micronaut/expectations/fail_with_example.rb +17 -0
- data/examples/lib/micronaut/expectations/wrap_expectation_example.rb +31 -0
- data/examples/lib/micronaut/formatters/base_formatter_example.rb +107 -0
- data/examples/lib/micronaut/formatters/documentation_formatter_example.rb +5 -0
- data/examples/lib/micronaut/formatters/progress_formatter_example.rb +74 -0
- data/examples/lib/micronaut/kernel_extensions_example.rb +13 -0
- data/examples/lib/micronaut/matchers/be_close_example.rb +52 -0
- data/examples/lib/micronaut/matchers/be_example.rb +298 -0
- data/examples/lib/micronaut/matchers/change_example.rb +360 -0
- data/examples/lib/micronaut/matchers/description_generation_example.rb +175 -0
- data/examples/lib/micronaut/matchers/eql_example.rb +35 -0
- data/examples/lib/micronaut/matchers/equal_example.rb +35 -0
- data/examples/lib/micronaut/matchers/handler_example.rb +153 -0
- data/examples/lib/micronaut/matchers/has_example.rb +71 -0
- data/examples/lib/micronaut/matchers/have_example.rb +575 -0
- data/examples/lib/micronaut/matchers/include_example.rb +103 -0
- data/examples/lib/micronaut/matchers/match_example.rb +43 -0
- data/examples/lib/micronaut/matchers/matcher_methods_example.rb +66 -0
- data/examples/lib/micronaut/matchers/operator_matcher_example.rb +189 -0
- data/examples/lib/micronaut/matchers/raise_error_example.rb +346 -0
- data/examples/lib/micronaut/matchers/respond_to_example.rb +54 -0
- data/examples/lib/micronaut/matchers/satisfy_example.rb +36 -0
- data/examples/lib/micronaut/matchers/simple_matcher_example.rb +93 -0
- data/examples/lib/micronaut/matchers/throw_symbol_example.rb +96 -0
- data/examples/lib/micronaut/runner_example.rb +5 -0
- data/examples/lib/micronaut/runner_options_example.rb +5 -0
- data/examples/lib/micronaut/world_example.rb +102 -0
- data/examples/lib/micronaut_example.rb +23 -0
- data/examples/resources/example_classes.rb +67 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/micronaut.rb +47 -0
- data/lib/micronaut/behaviour.rb +211 -0
- data/lib/micronaut/configuration.rb +133 -0
- data/lib/micronaut/example.rb +28 -0
- data/lib/micronaut/expectations/extensions/object.rb +62 -0
- data/lib/micronaut/expectations/extensions/string_and_symbol.rb +19 -0
- data/lib/micronaut/expectations/handler.rb +52 -0
- data/lib/micronaut/expectations/wrap_expectation.rb +57 -0
- data/lib/micronaut/expectations.rb +46 -0
- data/lib/micronaut/formatters/base_formatter.rb +82 -0
- data/lib/micronaut/formatters/base_text_formatter.rb +148 -0
- data/lib/micronaut/formatters/documentation_formatter.rb +62 -0
- data/lib/micronaut/formatters/progress_formatter.rb +36 -0
- data/lib/micronaut/formatters.rb +12 -0
- data/lib/micronaut/kernel_extensions.rb +11 -0
- data/lib/micronaut/matchers/be.rb +204 -0
- data/lib/micronaut/matchers/be_close.rb +22 -0
- data/lib/micronaut/matchers/change.rb +148 -0
- data/lib/micronaut/matchers/eql.rb +26 -0
- data/lib/micronaut/matchers/equal.rb +26 -0
- data/lib/micronaut/matchers/generated_descriptions.rb +36 -0
- data/lib/micronaut/matchers/has.rb +19 -0
- data/lib/micronaut/matchers/have.rb +153 -0
- data/lib/micronaut/matchers/include.rb +80 -0
- data/lib/micronaut/matchers/match.rb +22 -0
- data/lib/micronaut/matchers/method_missing.rb +9 -0
- data/lib/micronaut/matchers/operator_matcher.rb +50 -0
- data/lib/micronaut/matchers/raise_error.rb +128 -0
- data/lib/micronaut/matchers/respond_to.rb +50 -0
- data/lib/micronaut/matchers/satisfy.rb +50 -0
- data/lib/micronaut/matchers/simple_matcher.rb +135 -0
- data/lib/micronaut/matchers/throw_symbol.rb +108 -0
- data/lib/micronaut/matchers.rb +148 -0
- data/lib/micronaut/mocking/with_absolutely_nothing.rb +11 -0
- data/lib/micronaut/mocking/with_mocha.rb +13 -0
- data/lib/micronaut/mocking/with_rr.rb +24 -0
- data/lib/micronaut/mocking.rb +7 -0
- data/lib/micronaut/runner.rb +57 -0
- data/lib/micronaut/runner_options.rb +33 -0
- data/lib/micronaut/world.rb +75 -0
- data/lib/micronaut.rb +37 -0
- metadata +149 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
|
|
2
|
+
|
|
3
|
+
describe Micronaut::Formatters::BaseFormatter do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
@formatter = Micronaut::Formatters::BaseFormatter.new(nil, nil)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class HaveInterfaceMatcher
|
|
10
|
+
def initialize(method)
|
|
11
|
+
@method = method
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
attr_reader :object
|
|
15
|
+
attr_reader :method
|
|
16
|
+
|
|
17
|
+
def matches?(object)
|
|
18
|
+
@object = object
|
|
19
|
+
object.respond_to?(@method)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def with(arity)
|
|
23
|
+
WithArity.new(self, @method, arity)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class WithArity
|
|
27
|
+
def initialize(matcher, method, arity)
|
|
28
|
+
@have_matcher = matcher
|
|
29
|
+
@method = method
|
|
30
|
+
@arity = arity
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def matches?(an_object)
|
|
34
|
+
@have_matcher.matches?(an_object) && real_arity == @arity
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def failure_message
|
|
38
|
+
"#{@have_matcher} should have method :#{@method} with #{argument_arity}, but it had #{real_arity}"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def arguments
|
|
42
|
+
self
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
alias_method :argument, :arguments
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def real_arity
|
|
50
|
+
@have_matcher.object.method(@method).arity
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def argument_arity
|
|
54
|
+
if @arity == 1
|
|
55
|
+
"1 argument"
|
|
56
|
+
else
|
|
57
|
+
"#{@arity} arguments"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def have_interface_for(method)
|
|
64
|
+
HaveInterfaceMatcher.new(method)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "should have start as an interface with one argument" do
|
|
68
|
+
@formatter.should have_interface_for(:start).with(1).argument
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should have add_behaviour as an interface with one argument" do
|
|
72
|
+
@formatter.should have_interface_for(:add_behaviour).with(1).argument
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should have example_started as an interface with one argument" do
|
|
76
|
+
@formatter.should have_interface_for(:example_started).with(1).argument
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should have example_failed as an interface with two arguments" do
|
|
80
|
+
@formatter.should have_interface_for(:example_failed).with(2).arguments
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should have example_pending as an interface with two arguments" do
|
|
84
|
+
@formatter.should have_interface_for(:example_pending).with(2).arguments
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should have start_dump as an interface with zero arguments" do
|
|
88
|
+
@formatter.should have_interface_for(:start_dump).with(0).arguments
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "should have dump_failures as an interface with no arguments" do
|
|
92
|
+
@formatter.should have_interface_for(:dump_failures).with(0).arguments
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "should have dump_summary as an interface with 4 arguments" do
|
|
96
|
+
@formatter.should have_interface_for(:dump_summary).with(4).arguments
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "should have dump_pending as an interface with zero arguments" do
|
|
100
|
+
@formatter.should have_interface_for(:dump_pending).with(0).arguments
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should have close as an interface with zero arguments" do
|
|
104
|
+
@formatter.should have_interface_for(:close).with(0).arguments
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
|
|
2
|
+
|
|
3
|
+
describe Micronaut::Formatters::ProgressFormatter do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@io = StringIO.new
|
|
7
|
+
@options = mock('options')
|
|
8
|
+
@options.stubs(:enable_color_in_output?).returns(false)
|
|
9
|
+
@formatter = Micronaut::Formatters::ProgressFormatter.new(@options, @io)
|
|
10
|
+
@original_profile_setting = Micronaut.configuration.profile_examples
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should produce line break on start dump" do
|
|
14
|
+
@formatter.start_dump
|
|
15
|
+
@io.string.should eql("\n")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should produce standard summary without pending when pending has a 0 count" do
|
|
19
|
+
@formatter.dump_summary(3, 2, 1, 0)
|
|
20
|
+
@io.string.should =~ /\nFinished in 3 seconds\n2 examples, 1 failure\n/
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should produce standard summary" do
|
|
24
|
+
behaviour = Micronaut::Behaviour.describe("behaviour") do
|
|
25
|
+
it('example') {}
|
|
26
|
+
end
|
|
27
|
+
remove_last_describe_from_world
|
|
28
|
+
example = behaviour.examples.first
|
|
29
|
+
@formatter.example_pending(example, "message")
|
|
30
|
+
@io.rewind
|
|
31
|
+
@formatter.dump_summary(3, 2, 1, 1)
|
|
32
|
+
@io.string.should =~ /\nFinished in 3 seconds\n2 examples, 1 failure, 1 pending\n/
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should push green dot for passing spec" do
|
|
36
|
+
@options.expects(:enable_color_in_output?).returns(true)
|
|
37
|
+
@formatter.example_passed("spec")
|
|
38
|
+
@io.string.should == "\e[32m.\e[0m"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should push red F for failure spec" do
|
|
42
|
+
@options.expects(:enable_color_in_output?).returns(true)
|
|
43
|
+
@formatter.example_failed("spec", Micronaut::Expectations::ExpectationNotMetError.new)
|
|
44
|
+
@io.string.should eql("\e[31mF\e[0m")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should push magenta F for error spec" do
|
|
48
|
+
@options.expects(:enable_color_in_output?).returns(true)
|
|
49
|
+
@formatter.example_failed("spec", RuntimeError.new)
|
|
50
|
+
@io.string.should eql("\e[35mF\e[0m")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should push nothing on start" do
|
|
54
|
+
@formatter.start(4)
|
|
55
|
+
@io.string.should eql("")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should ensure two ':' in the first backtrace" do
|
|
59
|
+
backtrace = ["/tmp/x.rb:1", "/tmp/x.rb:2", "/tmp/x.rb:3"]
|
|
60
|
+
@formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
|
|
61
|
+
/tmp/x.rb:1
|
|
62
|
+
/tmp/x.rb:2
|
|
63
|
+
/tmp/x.rb:3
|
|
64
|
+
EOE
|
|
65
|
+
|
|
66
|
+
backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
|
|
67
|
+
@formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
|
|
68
|
+
/tmp/x.rb:1: message
|
|
69
|
+
/tmp/x.rb:2
|
|
70
|
+
/tmp/x.rb:3
|
|
71
|
+
EOE
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../example_helper")
|
|
2
|
+
|
|
3
|
+
describe Micronaut::KernelExtensions do
|
|
4
|
+
|
|
5
|
+
it "should be included in Object" do
|
|
6
|
+
Object.included_modules.should include(Micronaut::KernelExtensions)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should add a describe method to Object" do
|
|
10
|
+
Object.methods.should include("describe")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
|
|
2
|
+
|
|
3
|
+
describe Micronaut::Matchers do
|
|
4
|
+
|
|
5
|
+
describe "be_close" do
|
|
6
|
+
|
|
7
|
+
it "should match when value == target" do
|
|
8
|
+
be_close(5.0, 0.5).matches?(5.0).should be_true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should match when value < (target + delta)" do
|
|
12
|
+
be_close(5.0, 0.5).matches?(5.49).should be_true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should match when value > (target - delta)" do
|
|
16
|
+
be_close(5.0, 0.5).matches?(4.51).should be_true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should not match when value == (target - delta)" do
|
|
20
|
+
be_close(5.0, 0.5).matches?(4.5).should be_false
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should not match when value < (target - delta)" do
|
|
24
|
+
be_close(5.0, 0.5).matches?(4.49).should be_false
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should not match when value == (target + delta)" do
|
|
28
|
+
be_close(5.0, 0.5).matches?(5.5).should be_false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should not match when value > (target + delta)" do
|
|
32
|
+
be_close(5.0, 0.5).matches?(5.51).should be_false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should provide a useful failure message" do
|
|
36
|
+
#given
|
|
37
|
+
matcher = be_close(5.0, 0.5)
|
|
38
|
+
#when
|
|
39
|
+
matcher.matches?(5.51)
|
|
40
|
+
#then
|
|
41
|
+
matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should describe itself" do
|
|
45
|
+
matcher = be_close(5.0, 0.5)
|
|
46
|
+
matcher.matches?(5.1)
|
|
47
|
+
matcher.description.should == "be close to 5.0 (within +- 0.5)"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
|
|
2
|
+
|
|
3
|
+
describe Micronaut::Matchers do
|
|
4
|
+
|
|
5
|
+
describe "should be_predicate" do
|
|
6
|
+
|
|
7
|
+
it "should pass when actual returns true for :predicate?" do
|
|
8
|
+
actual = stub("actual", :happy? => true)
|
|
9
|
+
actual.should be_happy
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should pass when actual returns true for :predicates? (present tense)" do
|
|
13
|
+
actual = stub("actual", :exists? => true, :exist? => true)
|
|
14
|
+
actual.should be_exist
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should fail when actual returns false for :predicate?" do
|
|
18
|
+
actual = stub("actual", :happy? => false)
|
|
19
|
+
lambda do
|
|
20
|
+
actual.should be_happy
|
|
21
|
+
end.should fail_with("expected happy? to return true, got false")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should fail when actual does not respond to :predicate?" do
|
|
25
|
+
lambda do
|
|
26
|
+
Object.new.should be_happy
|
|
27
|
+
end.should raise_error(NameError, /happy\?/)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should fail on error other than NameError" do
|
|
31
|
+
actual = stub("actual")
|
|
32
|
+
actual.expects(:foo?).raises("aaaah")
|
|
33
|
+
lambda do
|
|
34
|
+
actual.should be_foo
|
|
35
|
+
end.should raise_error(/aaaah/)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should fail on error other than NameError (with the present tense predicate)" do
|
|
39
|
+
actual = Object.new
|
|
40
|
+
actual.expects(:foos?).raises("aaaah")
|
|
41
|
+
lambda do
|
|
42
|
+
actual.should be_foo
|
|
43
|
+
end.should raise_error(/aaaah/)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "should_not be_predicate" do
|
|
49
|
+
|
|
50
|
+
it "should pass when actual returns false for :sym?" do
|
|
51
|
+
actual = stub("actual", :happy? => false)
|
|
52
|
+
actual.should_not be_happy
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should fail when actual returns true for :sym?" do
|
|
56
|
+
actual = stub("actual", :happy? => true)
|
|
57
|
+
lambda do
|
|
58
|
+
actual.should_not be_happy
|
|
59
|
+
end.should fail_with("expected happy? to return false, got true")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should fail when actual does not respond to :sym?" do
|
|
63
|
+
lambda do
|
|
64
|
+
Object.new.should_not be_happy
|
|
65
|
+
end.should raise_error(NameError)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe "should be_predicate(*args)" do
|
|
71
|
+
|
|
72
|
+
it "should pass when actual returns true for :predicate?(*args)" do
|
|
73
|
+
actual = mock("actual")
|
|
74
|
+
actual.expects(:older_than?).with(3).returns(true)
|
|
75
|
+
actual.should be_older_than(3)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should fail when actual returns false for :predicate?(*args)" do
|
|
79
|
+
actual = mock("actual")
|
|
80
|
+
actual.expects(:older_than?).with(3).returns(false)
|
|
81
|
+
lambda do
|
|
82
|
+
actual.should be_older_than(3)
|
|
83
|
+
end.should fail_with("expected older_than?(3) to return true, got false")
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should fail when actual does not respond to :predicate?" do
|
|
87
|
+
lambda do
|
|
88
|
+
Object.new.should be_older_than(3)
|
|
89
|
+
end.should raise_error(NameError)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "should_not be_predicate(*args)" do
|
|
95
|
+
|
|
96
|
+
it "should pass when actual returns false for :predicate?(*args)" do
|
|
97
|
+
actual = mock("actual")
|
|
98
|
+
actual.expects(:older_than?).with(3).returns(false)
|
|
99
|
+
actual.should_not be_older_than(3)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "should fail when actual returns true for :predicate?(*args)" do
|
|
103
|
+
actual = mock("actual")
|
|
104
|
+
actual.expects(:older_than?).with(3).returns(true)
|
|
105
|
+
lambda do
|
|
106
|
+
actual.should_not be_older_than(3)
|
|
107
|
+
end.should fail_with("expected older_than?(3) to return false, got true")
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should fail when actual does not respond to :predicate?" do
|
|
111
|
+
lambda do
|
|
112
|
+
Object.new.should_not be_older_than(3)
|
|
113
|
+
end.should raise_error(NameError)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "should be_true" do
|
|
119
|
+
|
|
120
|
+
it "should pass when actual equal(true)" do
|
|
121
|
+
true.should be_true
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "should fail when actual equal(false)" do
|
|
125
|
+
lambda do
|
|
126
|
+
false.should be_true
|
|
127
|
+
end.should fail_with("expected true, got false")
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe "should be_false" do
|
|
133
|
+
|
|
134
|
+
it "should pass when actual equal(false)" do
|
|
135
|
+
false.should be_false
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should fail when actual equal(true)" do
|
|
139
|
+
lambda do
|
|
140
|
+
true.should be_false
|
|
141
|
+
end.should fail_with("expected false, got true")
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe "should be_nil" do
|
|
147
|
+
|
|
148
|
+
it "should pass when actual is nil" do
|
|
149
|
+
nil.should be_nil
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should fail when actual is not nil" do
|
|
153
|
+
lambda do
|
|
154
|
+
:not_nil.should be_nil
|
|
155
|
+
end.should fail_with("expected nil? to return true, got false")
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
describe "should_not be_nil" do
|
|
161
|
+
|
|
162
|
+
it "should pass when actual is not nil" do
|
|
163
|
+
:not_nil.should_not be_nil
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it "should fail when actual is nil" do
|
|
167
|
+
lambda do
|
|
168
|
+
nil.should_not be_nil
|
|
169
|
+
end.should fail_with("expected nil? to return false, got true")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
describe "should be <" do
|
|
175
|
+
|
|
176
|
+
it "should pass when < operator returns true" do
|
|
177
|
+
3.should be < 4
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "should fail when < operator returns false" do
|
|
181
|
+
lambda { 3.should be < 3 }.should fail_with("expected < 3, got 3")
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
describe "should be <=" do
|
|
187
|
+
|
|
188
|
+
it "should pass when <= operator returns true" do
|
|
189
|
+
3.should be <= 4
|
|
190
|
+
4.should be <= 4
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "should fail when <= operator returns false" do
|
|
194
|
+
lambda { 3.should be <= 2 }.should fail_with("expected <= 2, got 3")
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
describe "should be >=" do
|
|
200
|
+
|
|
201
|
+
it "should pass when >= operator returns true" do
|
|
202
|
+
4.should be >= 4
|
|
203
|
+
5.should be >= 4
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it "should fail when >= operator returns false" do
|
|
207
|
+
lambda { 3.should be >= 4 }.should fail_with("expected >= 4, got 3")
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
describe "should be >" do
|
|
213
|
+
|
|
214
|
+
it "should pass when > operator returns true" do
|
|
215
|
+
5.should be > 4
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it "should fail when > operator returns false" do
|
|
219
|
+
lambda { 3.should be > 4 }.should fail_with("expected > 4, got 3")
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
describe "should be ==" do
|
|
225
|
+
|
|
226
|
+
it "should pass when == operator returns true" do
|
|
227
|
+
5.should be == 5
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
it "should fail when == operator returns false" do
|
|
231
|
+
lambda { 3.should be == 4 }.should fail_with("expected == 4, got 3")
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
describe "should be ===" do
|
|
237
|
+
|
|
238
|
+
it "should pass when === operator returns true" do
|
|
239
|
+
Hash.should be === Hash.new
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
it "should fail when === operator returns false" do
|
|
243
|
+
lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === not a hash, got Hash])
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
describe "should_not with operators" do
|
|
249
|
+
|
|
250
|
+
it "should coach user to stop using operators with should_not" do
|
|
251
|
+
lambda do
|
|
252
|
+
5.should_not be < 6
|
|
253
|
+
end.should raise_error(/not only FAILED,\nit reads really poorly./m)
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
describe "should be" do
|
|
259
|
+
|
|
260
|
+
it "should pass if actual is true or a set value" do
|
|
261
|
+
true.should be
|
|
262
|
+
1.should be
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
it "should fail if actual is false" do
|
|
266
|
+
lambda {false.should be}.should fail_with("expected true, got false")
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should fail if actual is nil" do
|
|
270
|
+
lambda {nil.should be}.should fail_with("expected true, got nil")
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
describe "should be(value)" do
|
|
276
|
+
|
|
277
|
+
it "should pass if actual.equal?(value)" do
|
|
278
|
+
5.should be(5)
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
it "should fail if !actual.equal?(value)" do
|
|
282
|
+
lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
describe "'should be' with operator" do
|
|
288
|
+
|
|
289
|
+
it "should include 'be' in the description" do
|
|
290
|
+
(be > 6).description.should =~ /be > 6/
|
|
291
|
+
(be >= 6).description.should =~ /be >= 6/
|
|
292
|
+
(be <= 6).description.should =~ /be <= 6/
|
|
293
|
+
(be < 6).description.should =~ /be < 6/
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
end
|