···44 prop :name, String
55end
6677-test do
88- person = Person.new(name: +"John")
77+test "properties have readers by default" do
88+ person = Person.new(name: "John")
99 expect(person.name) == "John"
1010+end
10111212+test "data objects are frozen" do
1313+ person = Person.new(name: "John")
1114 expect(person).to_be(:frozen?)
1515+end
1616+1717+test "mutable attributes are duplicated and frozen" do
1818+ name = +"John"
1919+ person = Person.new(name:)
2020+1221 expect(person.name).to_be(:frozen?)
2222+ expect(person.name).not_to_equal?(name)
2323+end
2424+2525+test "immutable attributes are not duplicated" do
2626+ name = "John"
2727+ person = Person.new(name:)
2828+2929+ expect(person.name).to_be(:frozen?)
3030+ expect(person.name).to_equal?(name)
3131+end
3232+3333+test "to_h" do
3434+ person = Person.new(name: "John")
3535+ expect(person.to_h) == { name: "John" }
1336end