enumerated_type 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/enumerated_type.gemspec +1 -1
- data/lib/enumerated_type/version.rb +1 -1
- data/lib/enumerated_type.rb +2 -2
- data/test/enumerated_type_spec.rb +8 -0
- metadata +4 -4
data/enumerated_type.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["rafer@ralua.com"]
|
11
11
|
spec.description = %q{Simple enumerated types}
|
12
12
|
spec.summary = %q{Simple enumerated types}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/rafer/enumerated_type"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
data/lib/enumerated_type.rb
CHANGED
@@ -26,7 +26,7 @@ module EnumeratedType
|
|
26
26
|
|
27
27
|
def initialize(name, properties)
|
28
28
|
@name = name
|
29
|
-
properties.each { |k, v| send(:"#{k}=", v) }
|
29
|
+
properties.each { |k, v| send(:"#{k}=", v.freeze) }
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.new(*names)
|
@@ -74,7 +74,7 @@ module EnumeratedType
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
enumerated = new(name, options)
|
77
|
+
enumerated = new(name, options).freeze
|
78
78
|
|
79
79
|
@all << enumerated
|
80
80
|
const_set(name.to_s.upcase, enumerated)
|
@@ -72,10 +72,18 @@ describe EnumeratedType do
|
|
72
72
|
lambda { Gender.send(:declare, duplicate_name) }.must_raise(ArgumentError, /duplicate name/)
|
73
73
|
end
|
74
74
|
|
75
|
+
it "produces frozen instances" do
|
76
|
+
Gender.all?(&:frozen?).must_equal true
|
77
|
+
end
|
78
|
+
|
75
79
|
it "assigns properties and makes them accessible" do
|
76
80
|
Gender.map(&:planet).must_equal ["mars", "venus"]
|
77
81
|
end
|
78
82
|
|
83
|
+
it "freezes properties" do
|
84
|
+
lambda { Gender::MALE.planet.replace("pluto") }.must_raise(RuntimeError, /can't modify frozen/)
|
85
|
+
end
|
86
|
+
|
79
87
|
it "does not expose public setters for properties" do
|
80
88
|
Gender::MALE.respond_to?(:planet=).must_equal false
|
81
89
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerated_type
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -75,7 +75,7 @@ files:
|
|
75
75
|
- lib/enumerated_type.rb
|
76
76
|
- lib/enumerated_type/version.rb
|
77
77
|
- test/enumerated_type_spec.rb
|
78
|
-
homepage:
|
78
|
+
homepage: https://github.com/rafer/enumerated_type
|
79
79
|
licenses:
|
80
80
|
- MIT
|
81
81
|
post_install_message:
|
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
segments:
|
92
92
|
- 0
|
93
|
-
hash:
|
93
|
+
hash: -396384872220614621
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
version: '0'
|
100
100
|
segments:
|
101
101
|
- 0
|
102
|
-
hash:
|
102
|
+
hash: -396384872220614621
|
103
103
|
requirements: []
|
104
104
|
rubyforge_project:
|
105
105
|
rubygems_version: 1.8.26
|