assert 2.12.0 → 2.12.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,6 +19,8 @@ module Assert
19
19
  end
20
20
 
21
21
  StubError = Class.new(ArgumentError)
22
+ NotStubbedError = Class.new(StubError)
23
+ StubArityError = Class.new(StubError)
22
24
 
23
25
  class Stub
24
26
 
@@ -44,18 +46,21 @@ module Assert
44
46
  inspect_lookup_stubs.tap do |stubs|
45
47
  err_msg += "\nStubs:\n#{stubs}" if !stubs.empty?
46
48
  end
47
- raise StubError, err_msg
49
+ raise NotStubbedError, err_msg
48
50
  end
49
51
  @lookup = Hash.new{ |hash, key| self.do }
50
52
  end
51
53
 
52
54
  def call(*args, &block)
53
- raise StubError, "artiy mismatch" unless arity_matches?(args)
55
+ raise StubArityError, "artiy mismatch" unless arity_matches?(args)
56
+ @lookup[args].call(*args, &block)
57
+ rescue NotStubbedError => exception
58
+ @lookup.rehash
54
59
  @lookup[args].call(*args, &block)
55
60
  end
56
61
 
57
62
  def with(*args, &block)
58
- raise StubError, "artiy mismatch" unless arity_matches?(args)
63
+ raise StubArityError, "artiy mismatch" unless arity_matches?(args)
59
64
  @lookup[args] = block
60
65
  end
61
66
 
@@ -1,3 +1,3 @@
1
1
  module Assert
2
- VERSION = "2.12.0"
2
+ VERSION = "2.12.1"
3
3
  end
@@ -48,7 +48,7 @@ module Assert
48
48
 
49
49
  should "set the stub's do block if given a block" do
50
50
  Assert.stub(@myobj, :mymeth)
51
- assert_raises(StubError){ @myobj.mymeth }
51
+ assert_raises(NotStubbedError){ @myobj.mymeth }
52
52
  Assert.stub(@myobj, :mymeth){ 'mymeth' }
53
53
  assert_equal 'mymeth', @myobj.mymeth
54
54
  end
@@ -35,7 +35,7 @@ class Assert::Stub
35
35
  end
36
36
 
37
37
  should "complain when called if no do block was given" do
38
- assert_raises Assert::StubError do
38
+ assert_raises Assert::NotStubbedError do
39
39
  @myobj.mymeth
40
40
  end
41
41
 
@@ -56,14 +56,14 @@ class Assert::Stub
56
56
  end
57
57
 
58
58
  should "complain if stubbed and called with no `do` proc given" do
59
- assert_raises(Assert::StubError){ @myobj.mymeth }
59
+ assert_raises(Assert::NotStubbedError){ @myobj.mymeth }
60
60
  end
61
61
 
62
62
  should "complain if stubbed and called with mismatched arity" do
63
63
  Assert::Stub.new(@myobj, :myval){ 'myval' }
64
- assert_raises(Assert::StubError){ @myobj.myval }
64
+ assert_raises(Assert::StubArityError){ @myobj.myval }
65
65
  assert_nothing_raised { @myobj.myval(1) }
66
- assert_raises(Assert::StubError){ @myobj.myval(1,2) }
66
+ assert_raises(Assert::StubArityError){ @myobj.myval(1,2) }
67
67
 
68
68
  Assert::Stub.new(@myobj, :myargs){ 'myargs' }
69
69
  assert_nothing_raised { @myobj.myargs }
@@ -71,17 +71,17 @@ class Assert::Stub
71
71
  assert_nothing_raised { @myobj.myargs(1,2) }
72
72
 
73
73
  Assert::Stub.new(@myobj, :myvalargs){ 'myvalargs' }
74
- assert_raises(Assert::StubError){ @myobj.myvalargs }
75
- assert_raises(Assert::StubError){ @myobj.myvalargs(1) }
74
+ assert_raises(Assert::StubArityError){ @myobj.myvalargs }
75
+ assert_raises(Assert::StubArityError){ @myobj.myvalargs(1) }
76
76
  assert_nothing_raised { @myobj.myvalargs(1,2) }
77
77
  assert_nothing_raised { @myobj.myvalargs(1,2,3) }
78
78
  end
79
79
 
80
80
  should "complain if stubbed with mismatched arity" do
81
- assert_raises(Assert::StubError) do
81
+ assert_raises(Assert::StubArityError) do
82
82
  Assert::Stub.new(@myobj, :myval).with(){ 'myval' }
83
83
  end
84
- assert_raises(Assert::StubError) do
84
+ assert_raises(Assert::StubArityError) do
85
85
  Assert::Stub.new(@myobj, :myval).with(1,2){ 'myval' }
86
86
  end
87
87
  assert_nothing_raised do
@@ -98,10 +98,10 @@ class Assert::Stub
98
98
  Assert::Stub.new(@myobj, :myargs).with(1){ 'myargs' }
99
99
  end
100
100
 
101
- assert_raises(Assert::StubError) do
101
+ assert_raises(Assert::StubArityError) do
102
102
  Assert::Stub.new(@myobj, :myvalargs).with(){ 'myvalargs' }
103
103
  end
104
- assert_raises(Assert::StubError) do
104
+ assert_raises(Assert::StubArityError) do
105
105
  Assert::Stub.new(@myobj, :myvalargs).with(1){ 'myvalargs' }
106
106
  end
107
107
  assert_nothing_raised do
@@ -191,6 +191,24 @@ class Assert::Stub
191
191
 
192
192
  end
193
193
 
194
+ class MutatingArgsStubTests < UnitTests
195
+ desc "with args that are mutated after they've been used to stub"
196
+ setup do
197
+ @arg = ChangeHashObject.new
198
+
199
+ @stub = Assert::Stub.new(@myobj, :myval)
200
+ @stub.with(@arg){ true }
201
+
202
+ @arg.change!
203
+ end
204
+ subject{ @stub }
205
+
206
+ should "not raise a stub error when called" do
207
+ assert_nothing_raised{ @stub.call(@arg) }
208
+ end
209
+
210
+ end
211
+
194
212
  class NullStubTests < UnitTests
195
213
  desc "NullStub"
196
214
  setup do
@@ -202,4 +220,18 @@ class Assert::Stub
202
220
 
203
221
  end
204
222
 
223
+ class ChangeHashObject
224
+ def initialize
225
+ @value = nil
226
+ end
227
+
228
+ def hash
229
+ @value.hash
230
+ end
231
+
232
+ def change!
233
+ @value = 1
234
+ end
235
+ end
236
+
205
237
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assert
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 12
9
- - 0
10
- version: 2.12.0
9
+ - 1
10
+ version: 2.12.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2014-06-18 00:00:00 Z
19
+ date: 2014-06-27 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -29,9 +29,9 @@ dependencies:
29
29
  - 1
30
30
  - 3
31
31
  version: "1.3"
32
+ version_requirements: *id001
32
33
  type: :runtime
33
34
  name: ansi
34
- version_requirements: *id001
35
35
  prerelease: false
36
36
  description: Test::Unit style testing framework, just better than Test::Unit.
37
37
  email:
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  requirements: []
145
145
 
146
146
  rubyforge_project:
147
- rubygems_version: 1.8.25
147
+ rubygems_version: 1.8.29
148
148
  signing_key:
149
149
  specification_version: 3
150
150
  summary: Test::Unit style testing framework, just better than Test::Unit.