|
3 | 3 | import numpy as np |
4 | 4 | import os |
5 | 5 | from AliasDataFrame import AliasDataFrame # Adjust if needed |
| 6 | +import tempfile |
6 | 7 |
|
7 | 8 | class TestAliasDataFrame(unittest.TestCase): |
8 | 9 | def setUp(self): |
@@ -70,6 +71,33 @@ def test_partial_materialization(self): |
70 | 71 | self.assertIn("b", self.adf.df.columns) |
71 | 72 | self.assertNotIn("c", self.adf.df.columns) |
72 | 73 |
|
| 74 | + def test_export_import_tree_roundtrip(self): |
| 75 | + # Create test DataFrame |
| 76 | + df = pd.DataFrame({ |
| 77 | + "x": np.linspace(0, 10, 100), |
| 78 | + "y": np.linspace(10, 20, 100) |
| 79 | + }) |
| 80 | + adf = AliasDataFrame(df) |
| 81 | + adf.add_alias("z", "x + y", dtype=np.float64) |
| 82 | + adf.materialize_all() |
| 83 | + |
| 84 | + # Export to temporary file |
| 85 | + with tempfile.NamedTemporaryFile(suffix=".root", delete=False) as tmp: |
| 86 | + adf.export_tree(tmp.name, treename="testTree", dropAliasColumns=False) |
| 87 | + tmp_path = tmp.name |
| 88 | + |
| 89 | + # Read back from ROOT |
| 90 | + adf_loaded = AliasDataFrame.read_tree(tmp_path, treename="testTree") |
| 91 | + |
| 92 | + # Check that aliases and data match |
| 93 | + assert "z" in adf_loaded.aliases |
| 94 | + assert adf_loaded.aliases["z"] == "x + y" |
| 95 | + adf_loaded.materialize_alias("z") |
| 96 | + pd.testing.assert_series_equal(adf["z"], adf_loaded["z"], check_names=False) |
| 97 | + |
| 98 | + # Clean up |
| 99 | + os.remove(tmp_path) |
| 100 | + |
73 | 101 | class TestAliasDataFrameWithSubframes(unittest.TestCase): |
74 | 102 | @classmethod |
75 | 103 | def setUpClass(cls): |
|
0 commit comments