(self)
| 905 | assert_equal(merged, expected) |
| 906 | |
| 907 | def test_inherited_join(self) -> None: |
| 908 | tree1 = xr.DataTree.from_dict({"/a/b": ("x", [0, 1])}, coords={"x": [0, 1]}) |
| 909 | tree2 = xr.DataTree.from_dict({"/a/c": ("x", [1, 2])}, coords={"x": [1, 2]}) |
| 910 | |
| 911 | expected = xr.DataTree.from_dict( |
| 912 | {"/a/b": ("x", [0, 1]), "a/c": ("x", [np.nan, 1])}, coords={"x": [0, 1]} |
| 913 | ) |
| 914 | merged = xr.merge([tree1, tree2], join="left") |
| 915 | assert_equal(merged, expected) |
| 916 | |
| 917 | expected = xr.DataTree.from_dict( |
| 918 | {"/a/b": ("x", [1, np.nan]), "a/c": ("x", [1, 2])}, coords={"x": [1, 2]} |
| 919 | ) |
| 920 | merged = xr.merge([tree1, tree2], join="right") |
| 921 | assert_equal(merged, expected) |
| 922 | |
| 923 | expected = xr.DataTree.from_dict( |
| 924 | {"/a/b": ("x", [1]), "a/c": ("x", [1])}, coords={"x": [1]} |
| 925 | ) |
| 926 | merged = xr.merge([tree1, tree2], join="inner") |
| 927 | assert_equal(merged, expected) |
| 928 | |
| 929 | expected = xr.DataTree.from_dict( |
| 930 | {"/a/b": ("x", [0, 1, np.nan]), "a/c": ("x", [np.nan, 1, 2])}, |
| 931 | coords={"x": [0, 1, 2]}, |
| 932 | ) |
| 933 | merged = xr.merge([tree1, tree2], join="outer") |
| 934 | assert_equal(merged, expected) |
| 935 | |
| 936 | with pytest.raises( |
| 937 | xr.AlignmentError, |
| 938 | match=re.escape("cannot align objects with join='exact'"), |
| 939 | ): |
| 940 | xr.merge([tree1, tree2], join="exact") |
| 941 | |
| 942 | def test_merge_error_includes_path(self) -> None: |
| 943 | tree1 = xr.DataTree.from_dict({"/a/b": ("x", [0, 1])}) |
nothing calls this directly
no test coverage detected