Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix data structure `==` equality (#278)

The generated `==` methods on data structures were assuming each
property had a reader, which is not necessary the case. It is possible
to disable readers for properties.

authored by

Joel Drapper and committed by
GitHub
bd242e05 68410b98

+15 -1
+1 -1
lib/literal/properties/schema.rb
··· 102 102 i, n = 0, sorted_properties.size 103 103 while i < n 104 104 property = sorted_properties[i] 105 - buffer << " @" << property.name.name << " == other." << property.name.name 105 + buffer << " @#{property.name.name} == other.instance_variable_get(:@#{property.name.name})" 106 106 buffer << " &&\n " if i < n - 1 107 107 i += 1 108 108 end
+14
test/data.test.rb
··· 6 6 7 7 class Empty < Literal::Data 8 8 end 9 + 10 + class ReaderlessExample < Literal::Data 11 + prop :name, String, reader: false 12 + end 13 + 14 + test "== comparison with readerless properties" do 15 + a = ReaderlessExample.new(name: "John") 16 + b = ReaderlessExample.new(name: "John") 17 + c = ReaderlessExample.new(name: "Bob") 18 + 19 + assert_equal(a, b) 20 + refute_equal(a, c) 21 + end 22 + 9 23 test "properties have readers by default" do 10 24 person = Person.new(name: "John") 11 25 assert_equal(person.name, "John")