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.
@@ -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($/)
@@ -1,3 +1,3 @@
1
1
  module EnumeratedType
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -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.0
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: 37053798746470730
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: 37053798746470730
102
+ hash: -396384872220614621
103
103
  requirements: []
104
104
  rubyforge_project:
105
105
  rubygems_version: 1.8.26