Skip to content

Commit 695c512

Browse files
committed
Make Angle immutable
1 parent 31b3e9d commit 695c512

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lib/astronoby/angle.rb

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def initialize(radians)
7070
else
7171
BigDecimal(radians, PRECISION)
7272
end
73+
freeze
7374
end
7475

7576
def degrees

spec/astronoby/angle_spec.rb

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
# frozen_string_literal: true
22

33
RSpec.describe Astronoby::Angle do
4+
describe "object immutability" do
5+
context "when a mutable method is added" do
6+
it "raises a FrozenError when immutability is broken" do
7+
described_class.class_eval do
8+
def clear
9+
@radians = 0
10+
end
11+
end
12+
13+
expect { described_class.as_degrees(180).clear }.to raise_error(FrozenError)
14+
end
15+
end
16+
end
17+
418
describe "::as_radians" do
519
it "returns an Angle object" do
620
expect(described_class.as_radians(described_class::PI))

0 commit comments

Comments
 (0)