From 45820b4b14f787cc47cc5d71fad67017b5357395 Mon Sep 17 00:00:00 2001 From: Tuomas Rossi Date: Wed, 2 Oct 2024 15:34:30 +0300 Subject: [PATCH] Add tests for altrep wrap_real attributes --- .../data/test_altrep_wrap_real_attributes.rds | Bin 0 -> 119 bytes .../test_altrep_wrap_real_class_attribute.rds | Bin 0 -> 124 bytes rdata/tests/test_rdata.py | 43 +++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 rdata/tests/data/test_altrep_wrap_real_attributes.rds create mode 100644 rdata/tests/data/test_altrep_wrap_real_class_attribute.rds diff --git a/rdata/tests/data/test_altrep_wrap_real_attributes.rds b/rdata/tests/data/test_altrep_wrap_real_attributes.rds new file mode 100644 index 0000000000000000000000000000000000000000..bee8441948cebedc3bed75ba8a91357181479f0d GIT binary patch literal 119 zcmb2|=3oE==I#ec2?+^l35kr8);Op!XJ>TGUdKA&BVWhNh8YtZTN{Nvil>RIiX9PO zs`hMw=LQv3vE@!jD-J&5;i+->!>`4bWPH0mfq|KwP2=oA2If5hr2z+;a?FaO>g*;6 VIf!|A=`hXYW6+7+b72?IJ^;Y@DU$#I literal 0 HcmV?d00001 diff --git a/rdata/tests/data/test_altrep_wrap_real_class_attribute.rds b/rdata/tests/data/test_altrep_wrap_real_class_attribute.rds new file mode 100644 index 0000000000000000000000000000000000000000..ab10731555a9c29bbc6b40a4584681c8de5279e5 GIT binary patch literal 124 zcmb2|=3oE==I#ec2?+^l35kr8);Op!XJ>TGUdPJJ{McHdowGwyGD5 None: def test_altrep_wrap_real(self) -> None: """Test alternative representation of wrap_real.""" - data = rdata.read_rda( + parsed = rdata.parser.parse_file( TESTDATA_PATH / "test_altrep_wrap_real.rda", ) + obj = parsed.object.value[0] # taking value as it's an rda file + assert not obj.info.object + assert not obj.info.attributes + assert obj.attributes is None + data = rdata.conversion.convert(parsed) np.testing.assert_equal(data, { "test_altrep_wrap_real": [3], }) + def test_altrep_wrap_real_attributes(self) -> None: + """Test alternative representation of wrap_real with attributes.""" + # File created in R with + # a = .Internal(wrap_meta(c(1, 2, 3), 0, 0)); attr(a, "foo") = "bar"; saveRDS(a, file="test_altrep_wrap_real_attributes.rds") # noqa: E501 + parsed = rdata.parser.parse_file( + TESTDATA_PATH / "test_altrep_wrap_real_attributes.rds", + ) + obj = parsed.object + assert not obj.info.object + assert obj.info.attributes + assert obj.attributes is not None + assert obj.attributes.tag is not None + assert obj.attributes.tag.value.value == b"foo" + assert obj.attributes.value[0].value[0].value == b"bar" + + data = rdata.conversion.convert(parsed) + np.testing.assert_equal(data, [1., 2., 3.]) + + def test_altrep_wrap_real_class_attribute(self) -> None: + """Test alternative representation of wrap_real with class attribute.""" + # File created in R with + # a = .Internal(wrap_meta(c(1, 2, 3), 0, 0)); attr(a, "class") = "Date"; saveRDS(a, file="test_altrep_wrap_real_class_attribute.rds") # noqa: E501 + parsed = rdata.parser.parse_file( + TESTDATA_PATH / "test_altrep_wrap_real_class_attribute.rds", + ) + obj = parsed.object + assert obj.info.object + assert obj.info.attributes + assert obj.attributes is not None + assert obj.attributes.tag is not None + assert obj.attributes.tag.value.value == b"class" + assert obj.attributes.value[0].value[0].value == b"Date" + + data = rdata.conversion.convert(parsed) + np.testing.assert_equal(data, [1., 2., 3.]) + def test_altrep_wrap_string(self) -> None: """Test alternative representation of wrap_string.""" data = rdata.read_rda(TESTDATA_PATH / "test_altrep_wrap_string.rda")