From 53c0fdb6cc33fa3a3c2ad288e3b245c8bf2d790e Mon Sep 17 00:00:00 2001 From: nick evans Date: Mon, 9 Jun 2025 10:50:54 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Test=20overriding=20inherited=20::D?= =?UTF-8?q?ata=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TruffleRuby and JRuby each fail one or more of these. --- test/net/imap/test_data_lite.rb | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/net/imap/test_data_lite.rb b/test/net/imap/test_data_lite.rb index e0b529d78..3d71a4bbb 100644 --- a/test/net/imap/test_data_lite.rb +++ b/test/net/imap/test_data_lite.rb @@ -340,6 +340,43 @@ def other assert_equal("test", data.name) assert_equal("other", data.other) end + + class Abstract < Data + end + + class Inherited < Abstract.define(:foo) + end + + def test_subclass_can_create + assert_equal 1, Inherited[1] .foo + assert_equal 2, Inherited[foo: 2].foo + assert_equal 3, Inherited.new(3).foo + assert_equal 4, Inherited.new(foo: 4).foo + end + + class AbstractWithClassMethod < Data + def self.inherited_class_method; :ok end + end + + class InheritsClassMethod < AbstractWithClassMethod.define(:foo) + end + + def test_subclass_class_method + assert_equal :ok, InheritsClassMethod.inherited_class_method + end + + class AbstractWithOverride < Data + def deconstruct; [:ok, *super] end + end + + class InheritsOverride < AbstractWithOverride.define(:foo) + end + + def test_subclass_override_deconstruct + data = InheritsOverride[:foo] + assert_equal %i[ok foo], data.deconstruct + end + end end end