must_be 1.0.3 → 1.1.0
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 +7 -0
- data/ChangeLog.md +5 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +22 -0
- data/README.md +14 -14
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/doc/readme/examples.rb +13 -13
- data/lib/must_be.rb +2 -2
- data/lib/must_be/attr_typed.rb +1 -1
- data/lib/must_be/core.rb +1 -0
- data/must_be.gemspec +46 -57
- data/spec/must_be/attr_typed_spec.rb +14 -14
- data/spec/must_be/basic_spec.rb +22 -22
- data/spec/must_be/containers_spec.rb +10 -10
- data/spec/must_be/core_spec.rb +32 -22
- data/spec/must_be/nonstandard_control_flow_spec.rb +73 -71
- data/spec/must_be/proxy_spec.rb +13 -13
- data/spec/notify_matcher_spec.rb +1 -1
- data/spec/spec_helper.rb +11 -3
- data/spec/typical_usage_spec.rb +5 -5
- metadata +52 -81
- data/.gitignore +0 -2
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6dba067b83e0c97bc82fdcdfd4a2b68b643d0558cfc8fb5722f4eaf1497698a1
|
4
|
+
data.tar.gz: 71cffdb6b59e615fc68101e67b546a41174df0727bda20b62c855d3d24c53d53
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8b8243ebdbc2ab03394f692061355459dba0311cdcdb6d159a534ac02cb49ece2b20ea71d3fef47565a37aa6ad28f281d6d2839bda3838b953f354f39e778e0b
|
7
|
+
data.tar.gz: 5f4424812be412a0cdd159b30a09313278cf5572f29b9cc2b3a614b4e8f7a29f143e850e5c22b10db0ec0e68c64a13b38024c06c9a9b33378637d05b291e498e
|
data/ChangeLog.md
CHANGED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.3)
|
5
|
+
rspec-core (3.7.1)
|
6
|
+
rspec-support (~> 3.7.0)
|
7
|
+
rspec-expectations (3.7.0)
|
8
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
9
|
+
rspec-support (~> 3.7.0)
|
10
|
+
rspec-its (1.2.0)
|
11
|
+
rspec-core (>= 3.0.0)
|
12
|
+
rspec-expectations (>= 3.0.0)
|
13
|
+
rspec-support (3.7.1)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
rspec-its (~> 1.2)
|
20
|
+
|
21
|
+
BUNDLED WITH
|
22
|
+
1.16.1
|
data/README.md
CHANGED
@@ -23,11 +23,11 @@ For your everyday, average sanity:
|
|
23
23
|
|
24
24
|
87.must_be_a(Float, Integer)
|
25
25
|
87.must_be_a(Symbol, String)
|
26
|
-
#=> 87.must_be_a(Symbol, String), but is a
|
26
|
+
#=> 87.must_be_a(Symbol, String), but is a Integer
|
27
27
|
|
28
28
|
87.must_not_be_a(Symbol, String, "message")
|
29
29
|
87.must_not_be_a(Float, Integer, "message")
|
30
|
-
#=> 87.must_not_be_a(Float, Integer, "message"), but is a
|
30
|
+
#=> 87.must_not_be_a(Float, Integer, "message"), but is a Integer
|
31
31
|
|
32
32
|
`must_be_in` uses `include?` to check. Multiple arguments are grouped together as an array:
|
33
33
|
|
@@ -70,11 +70,11 @@ Sometimes close is good enough:
|
|
70
70
|
|
71
71
|
5.must_be(1..5)
|
72
72
|
5.must_be(1...5)
|
73
|
-
#=> 5.must_be(1...5), but matches
|
73
|
+
#=> 5.must_be(1...5), but matches Integer
|
74
74
|
|
75
75
|
5.must_not_be(1...5)
|
76
76
|
3.must_not_be(1...5)
|
77
|
-
#=> 3.must_not_be(1...5), but matches
|
77
|
+
#=> 3.must_not_be(1...5), but matches Integer
|
78
78
|
|
79
79
|
true.must_be
|
80
80
|
nil.must_be
|
@@ -122,7 +122,7 @@ Sometimes close is good enough:
|
|
122
122
|
|
123
123
|
class Typed
|
124
124
|
attr_typed :v, Symbol
|
125
|
-
attr_typed :n,
|
125
|
+
attr_typed :n, String, Integer
|
126
126
|
attr_typed :o, &:odd?
|
127
127
|
end
|
128
128
|
|
@@ -133,7 +133,7 @@ Sometimes close is good enough:
|
|
133
133
|
|
134
134
|
t.n = 411
|
135
135
|
t.n = 4.1
|
136
|
-
#=> attribute `n' must be a
|
136
|
+
#=> attribute `n' must be a String or Integer, but value 4.1 is a Float
|
137
137
|
|
138
138
|
t.o = 7
|
139
139
|
t.o = 8
|
@@ -145,11 +145,11 @@ It's good to be sure that an array or hash contains the right stuff:
|
|
145
145
|
|
146
146
|
["okay", :ready, "go"].must_only_contain(Symbol, String)
|
147
147
|
["okay", :ready, 4].must_only_contain(Symbol, String)
|
148
|
-
#=> must_only_contain: 4.must_be(Symbol, String), but matches
|
148
|
+
#=> must_only_contain: 4.must_be(Symbol, String), but matches Integer in container ["okay", :ready, 4]
|
149
149
|
|
150
150
|
["okay", :ready, "go"].must_not_contain(Numeric)
|
151
151
|
["okay", :ready, 4].must_not_contain(Numeric)
|
152
|
-
#=> must_not_contain: 4.must_not_be(Numeric), but matches
|
152
|
+
#=> must_not_contain: 4.must_not_be(Numeric), but matches Integer in container ["okay", :ready, 4]
|
153
153
|
|
154
154
|
[].must_only_contain(:yes, :no)
|
155
155
|
[:yep].must_only_contain(:yes, :no)
|
@@ -165,13 +165,13 @@ It's good to be sure that an array or hash contains the right stuff:
|
|
165
165
|
|
166
166
|
[nil, false].must_not_contain
|
167
167
|
[0].must_not_contain
|
168
|
-
#=> must_not_contain: 0.must_not_be, but matches
|
168
|
+
#=> must_not_contain: 0.must_not_be, but matches Integer in container [0]
|
169
169
|
|
170
170
|
{:welcome => :home}.must_only_contain(Symbol => Symbol)
|
171
|
-
{:symbol => :s, :
|
172
|
-
{5 => :s, 6 => 5, :t => 5, :s => :s}.must_only_contain([Symbol,
|
173
|
-
{6 => 5}.must_only_contain(Symbol =>
|
174
|
-
#=> must_only_contain: pair {6=>5} does not match [{Symbol=>
|
171
|
+
{:symbol => :s, :Integer => 5}.must_only_contain(Symbol => [Symbol, Integer])
|
172
|
+
{5 => :s, 6 => 5, :t => 5, :s => :s}.must_only_contain([Symbol, Integer] => [Symbol, Integer])
|
173
|
+
{6 => 5}.must_only_contain(Symbol => Integer, Integer => Symbol)
|
174
|
+
#=> must_only_contain: pair {6=>5} does not match [{Symbol=>Integer, Integer=>Symbol}] in container {6=>5}
|
175
175
|
|
176
176
|
{:welcome => nil}.must_not_contain(nil => Object)
|
177
177
|
{nil => :welcome}.must_not_contain(nil => Object)
|
@@ -236,7 +236,7 @@ It's best to be sure that your custom container contains the right stuff:
|
|
236
236
|
box = Box[:hello].must_only_ever_contain(Symbol)
|
237
237
|
box.contents = :world
|
238
238
|
box.contents = 987
|
239
|
-
#=> must_only_ever_contain: Box#contents=(987): 987.must_be(Symbol), but matches
|
239
|
+
#=> must_only_ever_contain: Box#contents=(987): 987.must_be(Symbol), but matches Integer in container Box[987]
|
240
240
|
|
241
241
|
box = Box[2].must_never_ever_contain(nil)
|
242
242
|
box.contents = 64
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/doc/readme/examples.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
87.must_be_a(Float, Integer)
|
4
4
|
87.must_be_a(Symbol, String)
|
5
|
-
#=> 87.must_be_a(Symbol, String), but is a
|
5
|
+
#=> 87.must_be_a(Symbol, String), but is a Integer
|
6
6
|
|
7
7
|
87.must_not_be_a(Symbol, String, "message")
|
8
8
|
87.must_not_be_a(Float, Integer, "message")
|
9
|
-
#=> 87.must_not_be_a(Float, Integer, "message"), but is a
|
9
|
+
#=> 87.must_not_be_a(Float, Integer, "message"), but is a Integer
|
10
10
|
|
11
11
|
2.must_be_in(1, 2, 3)
|
12
12
|
2.must_be_in([1, 2, 3])
|
@@ -41,11 +41,11 @@ nil.must_be_boolean
|
|
41
41
|
|
42
42
|
5.must_be(1..5)
|
43
43
|
5.must_be(1...5)
|
44
|
-
#=> 5.must_be(1...5), but matches
|
44
|
+
#=> 5.must_be(1...5), but matches Integer
|
45
45
|
|
46
46
|
5.must_not_be(1...5)
|
47
47
|
3.must_not_be(1...5)
|
48
|
-
#=> 3.must_not_be(1...5), but matches
|
48
|
+
#=> 3.must_not_be(1...5), but matches Integer
|
49
49
|
|
50
50
|
true.must_be
|
51
51
|
nil.must_be
|
@@ -89,7 +89,7 @@ nil.must_not_be
|
|
89
89
|
|
90
90
|
class Typed
|
91
91
|
attr_typed :v, Symbol
|
92
|
-
attr_typed :n,
|
92
|
+
attr_typed :n, String, Integer
|
93
93
|
attr_typed :o, &:odd?
|
94
94
|
end
|
95
95
|
|
@@ -100,7 +100,7 @@ t.v = "world"
|
|
100
100
|
|
101
101
|
t.n = 411
|
102
102
|
t.n = 4.1
|
103
|
-
#=> attribute `n' must be a
|
103
|
+
#=> attribute `n' must be a String or Integer, but value 4.1 is a Float
|
104
104
|
|
105
105
|
t.o = 7
|
106
106
|
t.o = 8
|
@@ -110,11 +110,11 @@ t.o = 8
|
|
110
110
|
|
111
111
|
["okay", :ready, "go"].must_only_contain(Symbol, String)
|
112
112
|
["okay", :ready, 4].must_only_contain(Symbol, String)
|
113
|
-
#=> must_only_contain: 4.must_be(Symbol, String), but matches
|
113
|
+
#=> must_only_contain: 4.must_be(Symbol, String), but matches Integer in container ["okay", :ready, 4]
|
114
114
|
|
115
115
|
["okay", :ready, "go"].must_not_contain(Numeric)
|
116
116
|
["okay", :ready, 4].must_not_contain(Numeric)
|
117
|
-
#=> must_not_contain: 4.must_not_be(Numeric), but matches
|
117
|
+
#=> must_not_contain: 4.must_not_be(Numeric), but matches Integer in container ["okay", :ready, 4]
|
118
118
|
|
119
119
|
[].must_only_contain(:yes, :no)
|
120
120
|
[:yep].must_only_contain(:yes, :no)
|
@@ -130,12 +130,12 @@ t.o = 8
|
|
130
130
|
|
131
131
|
[nil, false].must_not_contain
|
132
132
|
[0].must_not_contain
|
133
|
-
#=> must_not_contain: 0.must_not_be, but matches
|
133
|
+
#=> must_not_contain: 0.must_not_be, but matches Integer in container [0]
|
134
134
|
|
135
135
|
{:welcome => :home}.must_only_contain(Symbol => Symbol)
|
136
|
-
{:symbol => :s, :
|
137
|
-
{5 => :s, 6 => 5, :t => 5, :s => :s}.must_only_contain([Symbol,
|
138
|
-
{6 => 5}.must_only_contain(Symbol =>
|
136
|
+
{:symbol => :s, :Integer => 5}.must_only_contain(Symbol => [Symbol, Integer])
|
137
|
+
{5 => :s, 6 => 5, :t => 5, :s => :s}.must_only_contain([Symbol, Integer] => [Symbol, Integer])
|
138
|
+
{6 => 5}.must_only_contain(Symbol => Integer, Integer => Symbol)
|
139
139
|
#~> must_only_contain: pair \{6=>5\} does not match .* in container \{6=>5\}
|
140
140
|
|
141
141
|
{:welcome => nil}.must_not_contain(nil => Object)
|
@@ -197,7 +197,7 @@ end
|
|
197
197
|
box = Box[:hello].must_only_ever_contain(Symbol)
|
198
198
|
box.contents = :world
|
199
199
|
box.contents = 987
|
200
|
-
#=> must_only_ever_contain: Box#contents=(987): 987.must_be(Symbol), but matches
|
200
|
+
#=> must_only_ever_contain: Box#contents=(987): 987.must_be(Symbol), but matches Integer in container Box[987]
|
201
201
|
|
202
202
|
box = Box[2].must_never_ever_contain(nil)
|
203
203
|
box.contents = 64
|
data/lib/must_be.rb
CHANGED
@@ -34,7 +34,7 @@ if RUBY_VERSION < "1.8.7"
|
|
34
34
|
end
|
35
35
|
|
36
36
|
unless 3.respond_to? :odd?
|
37
|
-
class
|
37
|
+
class Integer
|
38
38
|
def odd?
|
39
39
|
self % 2 == 1
|
40
40
|
end
|
@@ -42,7 +42,7 @@ if RUBY_VERSION < "1.8.7"
|
|
42
42
|
end
|
43
43
|
|
44
44
|
unless 3.respond_to? :even?
|
45
|
-
class
|
45
|
+
class Integer
|
46
46
|
def even?
|
47
47
|
self % 2 == 0
|
48
48
|
end
|
data/lib/must_be/attr_typed.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Module
|
2
2
|
def attr_typed(symbol, *types, &test)
|
3
|
-
raise TypeError, "#{symbol} is not a symbol" if symbol.is_a?
|
3
|
+
raise TypeError, "#{symbol} is not a symbol" if symbol.is_a? Integer
|
4
4
|
|
5
5
|
types.each do |type|
|
6
6
|
raise TypeError, "class or module required" unless type.is_a? Module
|
data/lib/must_be/core.rb
CHANGED
data/must_be.gemspec
CHANGED
@@ -1,79 +1,68 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: must_be 1.1.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.0
|
8
|
+
s.name = "must_be".freeze
|
9
|
+
s.version = "1.1.0"
|
9
10
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["William Taysom".freeze]
|
14
|
+
s.date = "2018-05-22"
|
15
|
+
s.description = "must_be provides runtime assertions which can easily be disabled in production environments. Likewise, the notifier can be customized to raise errors, log failure, enter the debugger, or anything else.".freeze
|
16
|
+
s.email = "wtaysom@gmail.com".freeze
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"ChangeLog.md",
|
17
|
-
|
19
|
+
"README.md"
|
18
20
|
]
|
19
21
|
s.files = [
|
20
|
-
".
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
"spec/must_be/basic_spec.rb",
|
38
|
-
"spec/must_be/containers_spec.rb",
|
39
|
-
"spec/must_be/core_spec.rb",
|
40
|
-
"spec/must_be/nonstandard_control_flow_spec.rb",
|
41
|
-
"spec/must_be/proxy_spec.rb",
|
42
|
-
"spec/notify_matcher_spec.rb",
|
43
|
-
"spec/spec_helper.rb",
|
44
|
-
"spec/typical_usage_spec.rb"
|
45
|
-
]
|
46
|
-
s.homepage = %q{http://github.com/wtaysom/must_be}
|
47
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
48
|
-
s.require_paths = ["lib"]
|
49
|
-
s.rubygems_version = %q{1.3.7}
|
50
|
-
s.summary = %q{must_be Runtime Assertions}
|
51
|
-
s.test_files = [
|
22
|
+
"ChangeLog.md",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
25
|
+
"README.md",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"doc/readme/examples.rb",
|
29
|
+
"doc/readme/run_examples.rb",
|
30
|
+
"lib/must_be.rb",
|
31
|
+
"lib/must_be/attr_typed.rb",
|
32
|
+
"lib/must_be/basic.rb",
|
33
|
+
"lib/must_be/containers.rb",
|
34
|
+
"lib/must_be/containers_registered_classes.rb",
|
35
|
+
"lib/must_be/core.rb",
|
36
|
+
"lib/must_be/nonstandard_control_flow.rb",
|
37
|
+
"lib/must_be/proxy.rb",
|
38
|
+
"must_be.gemspec",
|
52
39
|
"spec/must_be/attr_typed_spec.rb",
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
40
|
+
"spec/must_be/basic_spec.rb",
|
41
|
+
"spec/must_be/containers_spec.rb",
|
42
|
+
"spec/must_be/core_spec.rb",
|
43
|
+
"spec/must_be/nonstandard_control_flow_spec.rb",
|
44
|
+
"spec/must_be/proxy_spec.rb",
|
45
|
+
"spec/notify_matcher_spec.rb",
|
46
|
+
"spec/spec_helper.rb",
|
47
|
+
"spec/typical_usage_spec.rb"
|
61
48
|
]
|
49
|
+
s.homepage = "http://github.com/wtaysom/must_be".freeze
|
50
|
+
s.rubygems_version = "2.7.3".freeze
|
51
|
+
s.summary = "must_be Runtime Assertions".freeze
|
62
52
|
|
63
53
|
if s.respond_to? :specification_version then
|
64
|
-
|
65
|
-
s.specification_version = 3
|
54
|
+
s.specification_version = 4
|
66
55
|
|
67
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
68
|
-
s.add_development_dependency(%q<
|
69
|
-
s.add_development_dependency(%q<
|
57
|
+
s.add_development_dependency(%q<rspec-its>.freeze, ["~> 1.2"])
|
58
|
+
s.add_development_dependency(%q<jeweler>.freeze, ["~> 1.4"])
|
70
59
|
else
|
71
|
-
s.add_dependency(%q<
|
72
|
-
s.add_dependency(%q<
|
60
|
+
s.add_dependency(%q<rspec-its>.freeze, ["~> 1.2"])
|
61
|
+
s.add_dependency(%q<jeweler>.freeze, ["~> 1.4"])
|
73
62
|
end
|
74
63
|
else
|
75
|
-
s.add_dependency(%q<
|
76
|
-
s.add_dependency(%q<
|
64
|
+
s.add_dependency(%q<rspec-its>.freeze, ["~> 1.2"])
|
65
|
+
s.add_dependency(%q<jeweler>.freeze, ["~> 1.4"])
|
77
66
|
end
|
78
67
|
end
|
79
68
|
|
@@ -6,8 +6,8 @@ describe MustBe do
|
|
6
6
|
describe 'Module#attr_typed' do
|
7
7
|
context "when updating" do
|
8
8
|
module ModuleWhoUsesAttrTyped
|
9
|
-
attr_typed :int,
|
10
|
-
attr_typed :positive_int,
|
9
|
+
attr_typed :int, Integer
|
10
|
+
attr_typed :positive_int, Integer do |n|
|
11
11
|
n > 0
|
12
12
|
end
|
13
13
|
attr_typed :non_nil
|
@@ -33,7 +33,7 @@ describe MustBe do
|
|
33
33
|
it "should notify if new value does not have the type" do
|
34
34
|
subject.float = 23
|
35
35
|
should notify("attribute `float' must be a Float,"\
|
36
|
-
" but value 23 is a
|
36
|
+
" but value 23 is a Integer")
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -45,7 +45,7 @@ describe MustBe do
|
|
45
45
|
|
46
46
|
it "should notify if new value does not match either constraint " do
|
47
47
|
subject.int = 56.6
|
48
|
-
should notify("attribute `int' must be a
|
48
|
+
should notify("attribute `int' must be a Integer,"\
|
49
49
|
" but value 56.6 is a Float")
|
50
50
|
end
|
51
51
|
end
|
@@ -84,8 +84,8 @@ describe MustBe do
|
|
84
84
|
|
85
85
|
it "should notify if new value does not match one of the types" do
|
86
86
|
subject.positive_int = 87.6
|
87
|
-
should notify("attribute `positive_int' must be a
|
88
|
-
"
|
87
|
+
should notify("attribute `positive_int' must be a Integer,"\
|
88
|
+
" but value 87.6 is a Float")
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should notify if block[value] is not true" do
|
@@ -129,19 +129,19 @@ describe MustBe do
|
|
129
129
|
it "should raise if symbol cannot be converted #to_sym" do
|
130
130
|
expect do
|
131
131
|
subject.attr_typed [], Object
|
132
|
-
end.
|
132
|
+
end.to raise_error(TypeError, "[] is not a symbol nor a string")
|
133
133
|
end
|
134
134
|
|
135
|
-
it "should raise if symbol is a
|
135
|
+
it "should raise if symbol is a Integer" do
|
136
136
|
expect do
|
137
137
|
subject.attr_typed 111, Object
|
138
|
-
end.
|
138
|
+
end.to raise_error(TypeError, "111 is not a symbol")
|
139
139
|
end
|
140
140
|
|
141
141
|
it "should be fine if symbol is a String" do
|
142
142
|
expect do
|
143
143
|
subject.attr_typed "string", Object
|
144
|
-
end.
|
144
|
+
end.to_not raise_error(TypeError)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
@@ -149,13 +149,13 @@ describe MustBe do
|
|
149
149
|
it "should raise if any type is an array" do
|
150
150
|
expect do
|
151
151
|
subject.attr_typed :prop, [Array, Object]
|
152
|
-
end.
|
152
|
+
end.to raise_error(TypeError, "class or module required")
|
153
153
|
end
|
154
154
|
|
155
155
|
it "should raise if any type is a String" do
|
156
156
|
expect do
|
157
157
|
subject.attr_typed :prop, "string"
|
158
|
-
end.
|
158
|
+
end.to raise_error(TypeError, "class or module required")
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
@@ -184,7 +184,7 @@ describe MustBe do
|
|
184
184
|
it "should notify again" do
|
185
185
|
@enabled_instance.prop = 91
|
186
186
|
should notify("attribute `prop' must be a Symbol,"\
|
187
|
-
" but value 91 is a
|
187
|
+
" but value 91 is a Integer")
|
188
188
|
end
|
189
189
|
end
|
190
190
|
end
|
@@ -216,7 +216,7 @@ describe MustBe do
|
|
216
216
|
@disabled_class.attr_typed :prop, Symbol
|
217
217
|
@disabled_instance.prop = 91
|
218
218
|
should notify("attribute `prop' must be a Symbol,"\
|
219
|
-
" but value 91 is a
|
219
|
+
" but value 91 is a Integer")
|
220
220
|
end
|
221
221
|
end
|
222
222
|
end
|