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,118 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module TimesCalledMatchers
5
- describe TimesCalledMatcher do
6
- describe ".create" do
7
- describe "when passed a AnyTimesMatcher" do
8
- it "returns the passed in argument" do
9
- matcher = AnyTimesMatcher.new
10
- TimesCalledMatcher.create(matcher).should === matcher
11
- end
12
- end
13
-
14
- describe "when passed a AtLeastMatcher" do
15
- it "returns the passed in argument" do
16
- matcher = AtLeastMatcher.new(5)
17
- TimesCalledMatcher.create(matcher).should === matcher
18
- end
19
- end
20
-
21
- describe "when passed a AtMostMatcher" do
22
- it "returns the passed in argument" do
23
- matcher = AtMostMatcher.new(5)
24
- TimesCalledMatcher.create(matcher).should === matcher
25
- end
26
- end
27
-
28
- describe "when passed a IntegerMatcher" do
29
- it "returns the passed in argument" do
30
- matcher = IntegerMatcher.new(5)
31
- TimesCalledMatcher.create(matcher).should === matcher
32
- end
33
- end
34
-
35
- describe "when passed a Integer" do
36
- it "returns IntegerMatcher" do
37
- TimesCalledMatcher.create(5).should == IntegerMatcher.new(5)
38
- end
39
- end
40
-
41
- describe "when passed a ProcMatcher" do
42
- it "returns the passed in argument" do
43
- matcher = ProcMatcher.new(lambda {|other| other == 5})
44
- TimesCalledMatcher.create(matcher).should === matcher
45
- end
46
- end
47
-
48
- describe "when passed a Lambda" do
49
- it "returns ProcMatcher" do
50
- value = lambda {|other| other == 5}
51
- TimesCalledMatcher.create(value).should == ProcMatcher.new(value)
52
- end
53
- end
54
-
55
- describe "when passed a IntegerMatcher" do
56
- it "returns the passed in argument" do
57
- matcher = RangeMatcher.new(2..4)
58
- TimesCalledMatcher.create(matcher).should === matcher
59
- end
60
- end
61
-
62
- describe "when passed a Integer" do
63
- it "returns RangeMatcher" do
64
- TimesCalledMatcher.create(2..4).should == RangeMatcher.new(2..4)
65
- end
66
- end
67
-
68
- describe "when passed a TimesCalledMatcher" do
69
- it "returns the passed in argument" do
70
- matcher = TimesCalledMatcher.new(5)
71
- TimesCalledMatcher.create(matcher).should === matcher
72
- end
73
- end
74
-
75
- describe "when passed an unsupported type" do
76
- it "raises an ArgumentError" do
77
- matcher = Object.new
78
- lambda do
79
- TimesCalledMatcher.create(matcher)
80
- end.should raise_error(ArgumentError, "There is no TimesCalledMatcher for #{matcher.inspect}.")
81
- end
82
- end
83
- end
84
-
85
- describe "#error_message" do
86
- before do
87
- @times = 3
88
- @matcher = TimesCalledMatcher.new(@times)
89
- end
90
-
91
- it "has an error message" do
92
- @matcher.error_message(5).should == (
93
- "Called 5 times.\nExpected 3 times."
94
- )
95
- end
96
- end
97
-
98
- describe "#==" do
99
- before do
100
- @times = 3
101
- @matcher = TimesCalledMatcher.new(@times)
102
- end
103
-
104
- it "returns true when other is the same class and times are ==" do
105
- @matcher.should == TimesCalledMatcher.new(@times)
106
- end
107
-
108
- it "returns false when other is a different class and times are ==" do
109
- @matcher.should_not == IntegerMatcher.new(@times)
110
- end
111
-
112
- it "returns false when is the same class and times are not ==" do
113
- @matcher.should_not == TimesCalledMatcher.new(1)
114
- end
115
- end
116
- end
117
- end
118
- end
@@ -1,24 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module WildcardMatchers
5
- describe Anything do
6
- attr_reader :matcher
7
- before do
8
- @matcher = Anything.new
9
- end
10
-
11
- describe "#wildcard_match?" do
12
- it "returns true" do
13
- matcher.should be_wildcard_match(Object.new)
14
- end
15
- end
16
-
17
- describe "#inspect" do
18
- it "returns anything" do
19
- matcher.inspect.should == "anything"
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,36 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module WildcardMatchers
5
- describe Boolean do
6
- attr_reader :matcher
7
-
8
- before do
9
- @matcher = Boolean.new
10
- end
11
-
12
- describe "#wildcard_match?" do
13
- context "when passed a Boolean" do
14
- it "returns true" do
15
- matcher.should be_wildcard_match(true)
16
- matcher.should be_wildcard_match(false)
17
- end
18
- end
19
-
20
- context "when not passed a Boolean" do
21
- it "returns false" do
22
- matcher.should_not be_wildcard_match(:not_a_boolean)
23
- end
24
- end
25
- end
26
-
27
- describe Boolean do
28
- describe "#inspect" do
29
- it "returns boolean" do
30
- matcher.inspect.should == "boolean"
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module WildcardMatchers
5
- describe DuckType do
6
- attr_reader :matcher
7
- before do
8
- @matcher = DuckType.new(:quack, :waddle)
9
- end
10
-
11
- describe "#wildcard_match?" do
12
- before do
13
- @matching_object = Object.new
14
- def @matching_object.quack
15
- end
16
- def @matching_object.waddle
17
- end
18
-
19
- @partial_matching_object = Object.new
20
- def @partial_matching_object.quack
21
- end
22
-
23
- @not_match_object = Object.new
24
- end
25
-
26
- context "when passed-in object matches all required methods" do
27
- it "returns true" do
28
- matcher.should be_wildcard_match(@matching_object)
29
- end
30
- end
31
-
32
- context "when passed-in object matches some required methods" do
33
- it "returns false" do
34
- matcher.should_not be_wildcard_match(@partial_matching_object)
35
- end
36
- end
37
-
38
- context "when passed-in object matches no required methods" do
39
- it "returns false" do
40
- matcher.should_not be_wildcard_match(@not_match_object)
41
- end
42
- end
43
- end
44
-
45
- describe "#inspect" do
46
- it "returns duck_type with methods" do
47
- matcher.inspect.should == "duck_type(:quack, :waddle)"
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,32 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module WildcardMatchers
5
- describe IsA do
6
- attr_reader :matcher
7
- before do
8
- @matcher = IsA.new(Symbol)
9
- end
10
-
11
- describe "#wildcard_match?" do
12
- context "when passed an instance of the expected Module" do
13
- it "returns true" do
14
- matcher.should be_wildcard_match(:a_symbol)
15
- end
16
- end
17
-
18
- context "when not passed an instance of the expected Module" do
19
- it "returns false" do
20
- matcher.should_not be_wildcard_match("not a symbol")
21
- end
22
- end
23
- end
24
-
25
- describe "#inspect" do
26
- it "returns the is_a(ClassName)" do
27
- matcher.inspect.should == "is_a(Symbol)"
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,32 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module WildcardMatchers
5
- describe Numeric do
6
- attr_reader :matcher
7
- before do
8
- @matcher = Numeric.new
9
- end
10
-
11
- describe "#wildcard_match?" do
12
- context "when passed a Numeric" do
13
- it "returns true" do
14
- matcher.should be_wildcard_match(99)
15
- end
16
- end
17
-
18
- context "when not passed a Numeric" do
19
- it "returns false" do
20
- matcher.should_not be_wildcard_match(:not_a_numeric)
21
- end
22
- end
23
- end
24
-
25
- describe "#inspect" do
26
- it "returns numeric" do
27
- matcher.inspect.should == "numeric"
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,35 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- describe Range do
4
- attr_reader :matcher
5
-
6
- before do
7
- @matcher = 2..3
8
- end
9
-
10
- describe "#wildcard_match?" do
11
- context "when passed-in number falls within the Range" do
12
- it "returns true" do
13
- matcher.should be_wildcard_match(3)
14
- end
15
- end
16
-
17
- context "when passed-in number does not fall within the Range" do
18
- it "returns false" do
19
- matcher.should_not be_wildcard_match(7)
20
- end
21
- end
22
-
23
- context "when passed-in argument is not a number" do
24
- it "returns false" do
25
- matcher.should_not be_wildcard_match("Not a number")
26
- end
27
- end
28
- end
29
-
30
- describe "#inspect" do
31
- it "returns the range" do
32
- matcher.inspect.should == "2..3"
33
- end
34
- end
35
- end
@@ -1,43 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- describe Regexp do
4
- attr_reader :matcher
5
-
6
- before do
7
- @matcher = /foo/
8
- end
9
-
10
- describe "#wildcard_match?" do
11
- before do
12
- @matching_object = Object.new
13
- def @matching_object.quack
14
- end
15
- def @matching_object.waddle
16
- end
17
-
18
- @partial_matching_object = Object.new
19
- def @partial_matching_object.quack
20
- end
21
-
22
- @not_match_object = Object.new
23
- end
24
-
25
- context "when passed-in String matches the Regexp" do
26
- it "returns true" do
27
- matcher.should be_wildcard_match("foobarbaz")
28
- end
29
- end
30
-
31
- context "when passed-in String does not match the Regexp" do
32
- it "returns false" do
33
- matcher.should_not be_wildcard_match("no match here")
34
- end
35
- end
36
- end
37
-
38
- describe "#inspect" do
39
- it "returns the regexp" do
40
- matcher.inspect.should == "/foo/"
41
- end
42
- end
43
- end
data/spec/rr_spec.rb DELETED
@@ -1,28 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/spec_helper"
2
-
3
- describe "RR" do
4
- before do
5
- Object.class_eval do
6
- def verify
7
- raise "Dont call me"
8
- end
9
- end
10
- end
11
-
12
- after do
13
- Object.class_eval do
14
- remove_method :verify
15
- end
16
- end
17
-
18
- it "has proxy methods for each method defined directly on Space" do
19
- space_instance_methods = RR::Space.instance_methods(false)
20
- space_instance_methods.should_not be_empty
21
-
22
- rr_instance_methods = RR.methods(false)
23
- space_instance_methods.each do |space_instance_method|
24
- rr_instance_methods.should include(space_instance_method)
25
- end
26
- RR.verify
27
- end
28
- end
@@ -1,17 +0,0 @@
1
- require "rubygems"
2
- require "spec"
3
-
4
- class RspecExampleSuite
5
- def run
6
- puts "Running Rspec Example Suite"
7
- dir = File.dirname(__FILE__)
8
- Dir["#{dir}/rr/rspec/**/*_spec.rb"].each do |file|
9
- # puts "require '#{file}'"
10
- require File.expand_path(file)
11
- end
12
- end
13
- end
14
-
15
- if $0 == __FILE__
16
- RspecExampleSuite.new.run
17
- end
data/spec/spec.opts DELETED
@@ -1,10 +0,0 @@
1
- --colour
2
- --format
3
- progress
4
- --loadby
5
- mtime
6
- --reverse
7
- --timeout
8
- 20
9
- --diff
10
- --backtrace
data/spec/spec_helper.rb DELETED
@@ -1,41 +0,0 @@
1
- dir = File.dirname(__FILE__)
2
- require "#{dir}/environment_fixture_setup"
3
- require "#{dir}/rr/expectations/times_called_expectation/times_called_expectation_helper"
4
- require "#{dir}/rr/adapters/rr_methods_spec_helper"
5
- ARGV.push("--format", "nested") unless ARGV.include?("--format")
6
- ARGV.push("-b")
7
-
8
- Spec::Runner.configure do |config|
9
- config.mock_with RR::Adapters::Rspec
10
- end
11
-
12
- describe "Swapped Space", :shared => true do
13
- attr_reader :original_space
14
- unless instance_methods.include?(:space)
15
- attr_reader :space
16
- end
17
-
18
- before do
19
- @original_space = RR::Space.instance
20
- RR::Space.instance = RR::Space.new
21
- @space = RR::Space.instance
22
- end
23
-
24
- after(:each) do
25
- RR::Space.instance = @original_space
26
- end
27
- end
28
-
29
- class Spec::ExampleGroup
30
- extend(Module.new do
31
- def macro(name, &implementation)
32
- (class << self; self; end).class_eval do
33
- define_method(name, &implementation)
34
- end
35
- end
36
- end)
37
-
38
- def eigen(object)
39
- class << object; self; end
40
- end
41
- end