rr 1.0.4 → 1.0.5.rc1

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.
Files changed (121) hide show
  1. checksums.yaml +15 -0
  2. data/CHANGES.md +376 -0
  3. data/Gemfile +7 -10
  4. data/README.md +822 -0
  5. data/Rakefile +24 -78
  6. data/VERSION +1 -0
  7. data/lib/rr.rb +3 -0
  8. data/lib/rr/adapters/minitest.rb +6 -0
  9. data/lib/rr/adapters/rr_methods.rb +6 -10
  10. data/lib/rr/adapters/rspec.rb +3 -0
  11. data/lib/rr/adapters/rspec2.rb +30 -0
  12. data/lib/rr/adapters/test_unit.rb +2 -0
  13. data/lib/rr/double.rb +3 -2
  14. data/lib/rr/double_definitions/child_double_definition_create.rb +3 -2
  15. data/lib/rr/double_definitions/double_definition.rb +15 -13
  16. data/lib/rr/double_definitions/double_definition_create.rb +9 -5
  17. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +3 -2
  18. data/lib/rr/double_definitions/strategies/strategy.rb +5 -4
  19. data/lib/rr/double_definitions/strategies/strategy_methods.rb +6 -8
  20. data/lib/rr/double_definitions/strategies/verification/mock.rb +3 -3
  21. data/lib/rr/double_matches.rb +2 -1
  22. data/lib/rr/expectations/argument_equality_expectation.rb +2 -2
  23. data/lib/rr/expectations/times_called_expectation.rb +2 -2
  24. data/lib/rr/injections/double_injection.rb +12 -11
  25. data/lib/rr/injections/injection.rb +2 -2
  26. data/lib/rr/injections/method_missing_injection.rb +21 -7
  27. data/lib/rr/injections/singleton_method_added_injection.rb +3 -1
  28. data/lib/rr/method_dispatches/base_method_dispatch.rb +1 -1
  29. data/lib/rr/method_dispatches/method_dispatch.rb +2 -1
  30. data/lib/rr/method_dispatches/method_missing_dispatch.rb +2 -1
  31. data/lib/rr/proc_from_block.rb +8 -4
  32. data/lib/rr/space.rb +3 -2
  33. data/lib/rr/times_called_matchers/times_called_matcher.rb +2 -2
  34. data/lib/rr/version.rb +5 -0
  35. data/lib/rr/wildcard_matchers/boolean.rb +2 -2
  36. data/spec/runner.rb +41 -0
  37. metadata +45 -133
  38. data/.gitignore +0 -10
  39. data/.runrc +0 -3
  40. data/.rvmrc +0 -2
  41. data/CHANGES +0 -266
  42. data/Gemfile.lock +0 -31
  43. data/README.rdoc +0 -392
  44. data/benchmarks/rr_benchmark.rb +0 -32
  45. data/benchmarks/rspec_benchmark.rb +0 -14
  46. data/doc/0.6.0.release.markdown +0 -81
  47. data/doc/todo.txt +0 -0
  48. data/introducting_rr.txt +0 -206
  49. data/rr.gemspec +0 -37
  50. data/spec/api/any_instance_of/all_instances_of_spec.rb +0 -12
  51. data/spec/api/any_instance_of/any_instance_of_spec.rb +0 -47
  52. data/spec/api/any_instance_of/instance_of_spec.rb +0 -12
  53. data/spec/api/dont_allow/dont_allow_after_stub_spec.rb +0 -14
  54. data/spec/api/mock/mock_spec.rb +0 -193
  55. data/spec/api/proxy/proxy_spec.rb +0 -86
  56. data/spec/api/spy/spy_spec.rb +0 -49
  57. data/spec/api/strong/strong_spec.rb +0 -87
  58. data/spec/api/stub/stub_spec.rb +0 -152
  59. data/spec/core_spec_suite.rb +0 -19
  60. data/spec/environment_fixture_setup.rb +0 -8
  61. data/spec/minitest_spec_suite.rb +0 -21
  62. data/spec/proc_from_block_spec.rb +0 -14
  63. data/spec/rr/adapters/rr_methods_argument_matcher_spec.rb +0 -67
  64. data/spec/rr/adapters/rr_methods_creator_spec.rb +0 -137
  65. data/spec/rr/adapters/rr_methods_space_spec.rb +0 -98
  66. data/spec/rr/adapters/rr_methods_spec_helper.rb +0 -11
  67. data/spec/rr/adapters/rr_methods_times_matcher_spec.rb +0 -13
  68. data/spec/rr/double_definitions/child_double_definition_creator_spec.rb +0 -112
  69. data/spec/rr/double_definitions/double_definition_create_blank_slate_spec.rb +0 -91
  70. data/spec/rr/double_definitions/double_definition_create_spec.rb +0 -443
  71. data/spec/rr/double_injection/double_injection_spec.rb +0 -546
  72. data/spec/rr/double_injection/double_injection_verify_spec.rb +0 -29
  73. data/spec/rr/errors/rr_error_spec.rb +0 -67
  74. data/spec/rr/expectations/any_argument_expectation_spec.rb +0 -47
  75. data/spec/rr/expectations/anything_argument_equality_expectation_spec.rb +0 -14
  76. data/spec/rr/expectations/argument_equality_expectation_spec.rb +0 -135
  77. data/spec/rr/expectations/boolean_argument_equality_expectation_spec.rb +0 -34
  78. data/spec/rr/expectations/hash_including_argument_equality_expectation_spec.rb +0 -82
  79. data/spec/rr/expectations/hash_including_spec.rb +0 -17
  80. data/spec/rr/expectations/satisfy_argument_equality_expectation_spec.rb +0 -59
  81. data/spec/rr/expectations/satisfy_spec.rb +0 -14
  82. data/spec/rr/expectations/times_called_expectation/times_called_expectation_any_times_spec.rb +0 -22
  83. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_least_spec.rb +0 -37
  84. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_most_spec.rb +0 -43
  85. data/spec/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +0 -15
  86. data/spec/rr/expectations/times_called_expectation/times_called_expectation_integer_spec.rb +0 -58
  87. data/spec/rr/expectations/times_called_expectation/times_called_expectation_proc_spec.rb +0 -35
  88. data/spec/rr/expectations/times_called_expectation/times_called_expectation_range_spec.rb +0 -39
  89. data/spec/rr/minitest/minitest_integration_test.rb +0 -59
  90. data/spec/rr/minitest/test_helper.rb +0 -7
  91. data/spec/rr/rspec/invocation_matcher_spec.rb +0 -279
  92. data/spec/rr/rspec/rspec_adapter_spec.rb +0 -63
  93. data/spec/rr/rspec/rspec_backtrace_tweaking_spec.rb +0 -31
  94. data/spec/rr/rspec/rspec_backtrace_tweaking_spec_fixture.rb +0 -11
  95. data/spec/rr/rspec/rspec_usage_spec.rb +0 -86
  96. data/spec/rr/space/hash_with_object_id_key_spec.rb +0 -88
  97. data/spec/rr/space/space_spec.rb +0 -596
  98. data/spec/rr/test_unit/test_helper.rb +0 -7
  99. data/spec/rr/test_unit/test_unit_backtrace_test.rb +0 -36
  100. data/spec/rr/test_unit/test_unit_integration_test.rb +0 -59
  101. data/spec/rr/times_called_matchers/any_times_matcher_spec.rb +0 -47
  102. data/spec/rr/times_called_matchers/at_least_matcher_spec.rb +0 -55
  103. data/spec/rr/times_called_matchers/at_most_matcher_spec.rb +0 -70
  104. data/spec/rr/times_called_matchers/integer_matcher_spec.rb +0 -70
  105. data/spec/rr/times_called_matchers/proc_matcher_spec.rb +0 -55
  106. data/spec/rr/times_called_matchers/range_matcher_spec.rb +0 -76
  107. data/spec/rr/times_called_matchers/times_called_matcher_spec.rb +0 -118
  108. data/spec/rr/wildcard_matchers/anything_spec.rb +0 -24
  109. data/spec/rr/wildcard_matchers/boolean_spec.rb +0 -36
  110. data/spec/rr/wildcard_matchers/duck_type_spec.rb +0 -52
  111. data/spec/rr/wildcard_matchers/is_a_spec.rb +0 -32
  112. data/spec/rr/wildcard_matchers/numeric_spec.rb +0 -32
  113. data/spec/rr/wildcard_matchers/range_spec.rb +0 -35
  114. data/spec/rr/wildcard_matchers/regexp_spec.rb +0 -43
  115. data/spec/rr_spec.rb +0 -28
  116. data/spec/rspec_spec_suite.rb +0 -17
  117. data/spec/spec.opts +0 -10
  118. data/spec/spec_helper.rb +0 -41
  119. data/spec/spec_suite.rb +0 -54
  120. data/spec/spy_verification_spec.rb +0 -129
  121. data/spec/test_unit_spec_suite.rb +0 -21
@@ -1,7 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../environment_fixture_setup")
2
-
3
- require "test/unit"
4
-
5
- class Test::Unit::TestCase
6
- include RR::Adapters::TestUnit
7
- end
@@ -1,36 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
-
3
- class TestUnitBacktraceTest < Test::Unit::TestCase
4
- def setup
5
- super
6
- @subject = Object.new
7
- end
8
-
9
- def teardown
10
- super
11
- end
12
-
13
- def test_trim_backtrace_is_set
14
- assert RR.trim_backtrace
15
- end
16
-
17
- def test_backtrace_tweaking
18
- skip "Skipped, because there is no Test::Unit::TestResult in this Test::Unit. Don't worry, this is totally fine." unless defined?(Test::Unit::TestResult)
19
- old_result = @_result
20
- result = Test::Unit::TestResult.new
21
-
22
- error_display = nil
23
- result.add_listener(Test::Unit::TestResult::FAULT) do |f|
24
- error_display = f.long_display
25
- end
26
- test_case = self.class.new(:backtrace_tweaking)
27
- test_case.run(result) {}
28
-
29
- assert !error_display.include?("lib/rr")
30
- end
31
-
32
- def backtrace_tweaking
33
- mock(@subject).foobar
34
- RR::Space::instance.verify_double(@subject, :foobar)
35
- end
36
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
-
3
- class TestUnitIntegrationTest < Test::Unit::TestCase
4
- include RR::Adapters::TestUnit # Testing against double inclusion issues
5
-
6
- def setup
7
- super
8
- @subject = Object.new
9
- end
10
-
11
- def teardown
12
- super
13
- end
14
-
15
- def test_using_a_mock
16
- mock(@subject).foobar(1, 2) {:baz}
17
- assert_equal :baz, @subject.foobar(1, 2)
18
- end
19
-
20
- def test_using_a_stub
21
- stub(@subject).foobar {:baz}
22
- assert_equal :baz, @subject.foobar("any", "thing")
23
- end
24
-
25
- def test_using_a_mock_proxy
26
- def @subject.foobar
27
- :baz
28
- end
29
-
30
- mock.proxy(@subject).foobar
31
- assert_equal :baz, @subject.foobar
32
- end
33
-
34
- def test_using_a_stub_proxy
35
- def @subject.foobar
36
- :baz
37
- end
38
-
39
- stub.proxy(@subject).foobar
40
- assert_equal :baz, @subject.foobar
41
- end
42
-
43
- def test_times_called_verification
44
- mock(@subject).foobar(1, 2) {:baz}
45
- assert_raise RR::Errors::TimesCalledError do
46
- teardown
47
- end
48
- end
49
-
50
- def test_using_assert_received
51
- stub(@subject).foobar(1, 2)
52
- @subject.foobar(1, 2)
53
- assert_received(@subject) {|subject| subject.foobar(1, 2)}
54
-
55
- assert_raise(RR::Errors::SpyVerificationErrors::InvocationCountError) do
56
- assert_received(@subject) {|subject| subject.foobar(1, 2, 3)}
57
- end
58
- end
59
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe AnyTimesMatcher do
6
- attr_reader :matcher
7
- before do
8
- @matcher = AnyTimesMatcher.new
9
- end
10
-
11
- describe AnyTimesMatcher, "#possible_match?" do
12
- it "always returns true" do
13
- matcher.should be_possible_match(0)
14
- matcher.should be_possible_match(99999)
15
- end
16
- end
17
-
18
- describe AnyTimesMatcher, "#matches?" do
19
- it "always returns true" do
20
- matcher.should be_matches(0)
21
- matcher.should be_matches(99999)
22
- end
23
- end
24
-
25
- describe AnyTimesMatcher, "#attempt?" do
26
- it "always returns true" do
27
- matcher.should be_attempt(0)
28
- matcher.should be_attempt(99999)
29
- end
30
- end
31
-
32
- describe AnyTimesMatcher, "#terminal?" do
33
- it "returns false" do
34
- matcher.should_not be_terminal
35
- end
36
- end
37
-
38
- describe AnyTimesMatcher, "#error_message" do
39
- it "has an error message" do
40
- matcher.error_message(2).should == (
41
- "Called 2 times.\nExpected any number of times."
42
- )
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe AtLeastMatcher do
6
- attr_reader :matcher, :times
7
- before do
8
- @times = 3
9
- @matcher = AtLeastMatcher.new(times)
10
- end
11
-
12
- describe "#possible_match?" do
13
- it "always returns true" do
14
- matcher.should be_possible_match(99999)
15
- end
16
- end
17
-
18
- describe "#matches?" do
19
- it "returns false when times_called less than times" do
20
- matcher.should_not be_matches(2)
21
- end
22
-
23
- it "returns true when times_called == times" do
24
- matcher.should be_matches(3)
25
- end
26
-
27
- it "returns true when times_called > times" do
28
- matcher.should be_matches(4)
29
- end
30
- end
31
-
32
- describe "#attempt?" do
33
- it "always returns true" do
34
- matcher.should be_attempt(1)
35
- matcher.should be_attempt(100000)
36
- end
37
- end
38
-
39
- describe AnyTimesMatcher, "#terminal?" do
40
- it "returns false" do
41
- matcher.should_not be_terminal
42
- end
43
- end
44
-
45
- describe "#error_message" do
46
- it "has an error message" do
47
- matcher.error_message(2).should == (
48
- "Called 2 times.\nExpected at least 3 times."
49
- )
50
- end
51
- end
52
- end
53
-
54
- end
55
- end
@@ -1,70 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe AtMostMatcher do
6
- attr_reader :matcher, :times
7
- before do
8
- @times = 3
9
- @matcher = AtMostMatcher.new(times)
10
- end
11
-
12
- describe AtMostMatcher, "#possible_match?" do
13
- it "returns true when times called < times" do
14
- matcher.should be_possible_match(2)
15
- end
16
-
17
- it "returns true when times called == times" do
18
- matcher.should be_possible_match(3)
19
- end
20
-
21
- it "returns false when times called > times" do
22
- matcher.should_not be_possible_match(4)
23
- end
24
- end
25
-
26
- describe AtMostMatcher, "#matches?" do
27
- it "returns true when times_called less than times" do
28
- matcher.should be_matches(2)
29
- end
30
-
31
- it "returns true when times_called == times" do
32
- matcher.should be_matches(3)
33
- end
34
-
35
- it "returns false when times_called > times" do
36
- matcher.should_not be_matches(4)
37
- end
38
- end
39
-
40
- describe AtMostMatcher, "#attempt?" do
41
- it "returns true when less than expected times" do
42
- matcher.should be_attempt(2)
43
- end
44
-
45
- it "returns false when == expected times" do
46
- matcher.should_not be_attempt(3)
47
- end
48
-
49
- it "returns false when > expected times" do
50
- matcher.should_not be_attempt(4)
51
- end
52
- end
53
-
54
- describe AnyTimesMatcher, "#terminal?" do
55
- it "returns true" do
56
- matcher.should be_terminal
57
- end
58
- end
59
-
60
- describe AtMostMatcher, "#error_message" do
61
- it "has an error message" do
62
- matcher.error_message(5).should == (
63
- "Called 5 times.\nExpected at most 3 times."
64
- )
65
- end
66
- end
67
- end
68
-
69
- end
70
- end
@@ -1,70 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe IntegerMatcher do
6
- attr_reader :matcher, :times
7
- before do
8
- @times = 3
9
- @matcher = IntegerMatcher.new(times)
10
- end
11
-
12
- describe "#possible_match?" do
13
- it "returns true when times called < times" do
14
- matcher.should be_possible_match(2)
15
- end
16
-
17
- it "returns true when times called == times" do
18
- matcher.should be_possible_match(3)
19
- end
20
-
21
- it "returns false when times called > times" do
22
- matcher.should_not be_possible_match(4)
23
- end
24
- end
25
-
26
- describe "#matches?" do
27
- it "returns false when times_called less than times" do
28
- matcher.should_not be_matches(2)
29
- end
30
-
31
- it "returns true when times_called == times" do
32
- matcher.should be_matches(3)
33
- end
34
-
35
- it "returns false when times_called > times" do
36
- matcher.should_not be_matches(4)
37
- end
38
- end
39
-
40
- describe "#attempt?" do
41
- it "returns true when less than expected times" do
42
- matcher.should be_attempt(2)
43
- end
44
-
45
- it "returns false when == expected times" do
46
- matcher.should_not be_attempt(3)
47
- end
48
-
49
- it "returns false when > expected times" do
50
- matcher.should_not be_attempt(4)
51
- end
52
- end
53
-
54
- describe AnyTimesMatcher, "#terminal?" do
55
- it "returns true" do
56
- matcher.should be_terminal
57
- end
58
- end
59
-
60
- describe "#error_message" do
61
- it "has an error message" do
62
- matcher.error_message(2).should == (
63
- "Called 2 times.\nExpected 3 times."
64
- )
65
- end
66
- end
67
- end
68
-
69
- end
70
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe ProcMatcher do
6
- attr_reader :matcher, :times
7
- before do
8
- @times = lambda {|other| other == 3}
9
- @matcher = ProcMatcher.new(times)
10
- end
11
-
12
- describe "#possible_match?" do
13
- it "always returns true" do
14
- matcher.should be_possible_match(2)
15
- matcher.should be_possible_match(3)
16
- matcher.should be_possible_match(10)
17
- end
18
- end
19
-
20
- describe "#matches?" do
21
- it "returns false when lambda returns false" do
22
- times.call(2).should be_false
23
- matcher.should_not be_matches(2)
24
- end
25
-
26
- it "returns true when lambda returns true" do
27
- times.call(3).should be_true
28
- matcher.should be_matches(3)
29
- end
30
- end
31
-
32
- describe "#attempt?" do
33
- it "always returns true" do
34
- matcher.should be_attempt(2)
35
- matcher.should be_attempt(3)
36
- matcher.should be_attempt(10)
37
- end
38
- end
39
-
40
- describe "#terminal?" do
41
- it "returns false" do
42
- matcher.should_not be_terminal
43
- end
44
- end
45
-
46
- describe "#error_message" do
47
- it "has an error message" do
48
- matcher.error_message(1).should =~
49
- /Called 1 time.\nExpected #<Proc.*> times./
50
- end
51
- end
52
- end
53
-
54
- end
55
- end
@@ -1,76 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe RangeMatcher do
6
- attr_reader :matcher, :times
7
- before do
8
- @times = 2..4
9
- @matcher = RangeMatcher.new(times)
10
- end
11
-
12
- describe "#possible_match?" do
13
- it "returns true when times called < start of range" do
14
- matcher.should be_possible_match(1)
15
- end
16
-
17
- it "returns true when times called in range" do
18
- matcher.should be_possible_match(2)
19
- matcher.should be_possible_match(3)
20
- matcher.should be_possible_match(4)
21
- end
22
-
23
- it "returns false when times called > end of range" do
24
- matcher.should_not be_possible_match(5)
25
- end
26
- end
27
-
28
- describe "#matches?" do
29
- it "returns false when times_called less than start of range" do
30
- matcher.should_not be_matches(1)
31
- end
32
-
33
- it "returns true when times_called in range" do
34
- matcher.should be_matches(2)
35
- matcher.should be_matches(3)
36
- matcher.should be_matches(4)
37
- end
38
-
39
- it "returns false when times_called > end of range" do
40
- matcher.should_not be_matches(5)
41
- end
42
- end
43
-
44
- describe "#attempt?" do
45
- it "returns true when less than start of range" do
46
- matcher.should be_attempt(1)
47
- end
48
-
49
- it "returns true when in range" do
50
- matcher.should be_attempt(2)
51
- matcher.should be_attempt(3)
52
- matcher.should be_attempt(4)
53
- end
54
-
55
- it "returns false when > end of range" do
56
- matcher.should_not be_attempt(5)
57
- end
58
- end
59
-
60
- describe "#terminal?" do
61
- it "returns true" do
62
- matcher.should be_terminal
63
- end
64
- end
65
-
66
- describe "#error_message" do
67
- it "has an error message" do
68
- matcher.error_message(1).should == (
69
- "Called 1 time.\nExpected 2..4 times."
70
- )
71
- end
72
- end
73
- end
74
-
75
- end
76
- end