|
1 | 1 | import json |
2 | 2 | from collections.abc import Mapping |
3 | | -from contextlib import nullcontext |
4 | 3 | from dataclasses import fields |
5 | 4 | from importlib import metadata, resources |
6 | 5 | from urllib.request import urlopen |
@@ -140,31 +139,45 @@ def test_no_data(): |
140 | 139 | assert field.name not in ("X", "layers") |
141 | 140 |
|
142 | 141 |
|
143 | | -@pytest.mark.parametrize("vec", [None, True, False]) |
144 | | -def test_resolve_vec_true(vec: bool): |
145 | | - with pytest.raises(ValueError, match="refers to a vector/") if vec is False else nullcontext(): |
146 | | - assert A.resolve("mod.rna.X[:, ACT1]", vec=vec) == A.mod["rna"].X[:, "ACT1"] |
147 | | - assert A.resolve("obsmap.rna", vec=vec) == A.obsmap["rna"] |
| 142 | +def test_resolve(): |
| 143 | + assert A.resolve("mod.rna.X[:, ACT1]") == A.mod["rna"].X[:, "ACT1"] |
| 144 | + assert A.resolve("obsmap.rna") == A.obsmap["rna"] |
148 | 145 |
|
149 | | - |
150 | | -@pytest.mark.parametrize("vec", [None, True, False]) |
151 | | -def test_resolve_vec_false(vec: bool): |
152 | | - with pytest.raises(ValueError, match="refers to a whole container") if vec is True else nullcontext(): |
153 | | - assert A.resolve("mod.rna.X", vec=vec) == A.mod["rna"].X |
154 | | - assert A.resolve("mod.rna", vec=vec) == A.mod["rna"] |
155 | | - assert A.resolve("mod", vec=vec) == A.mod |
156 | | - assert A.resolve("obsmap", vec=vec) == A.obsmap |
157 | | - |
158 | | - |
159 | | -def test_resolve_raises(): |
160 | 146 | with pytest.raises(ValueError, match="Unknown accessor"): |
161 | 147 | A.resolve("rna.X[:, :]") |
| 148 | + |
162 | 149 | with pytest.raises(ValueError, match="empty modality"): |
163 | 150 | A.resolve("mod..X[:, :]") |
| 151 | + |
164 | 152 | with pytest.raises(ValueError, match="period-separated"): |
165 | 153 | A.resolve("abcd") |
166 | 154 |
|
167 | 155 |
|
| 156 | +@pytest.mark.parametrize("vec", [None, True]) |
| 157 | +def test_resolve_vec_true(vec): |
| 158 | + assert A.resolve("mod.rna.X[:, ACT1]", vec=vec) == A.mod["rna"].X[:, "ACT1"] |
| 159 | + assert A.resolve("mod.rna.X[:, :]", vec=vec) == A.mod["rna"].X[:, :] |
| 160 | + assert A.resolve("obsm.test.2", vec=vec) == A.obsm["test"][2] |
| 161 | + |
| 162 | + |
| 163 | +@pytest.mark.parametrize("vec", [None, False]) |
| 164 | +def test_resolve_vec_false(vec): |
| 165 | + assert A.resolve("mod.rna.X", vec=vec) == A.mod["rna"].X |
| 166 | + assert A.resolve("obsm.test") == A.obsm["test"] |
| 167 | + |
| 168 | + |
| 169 | +def test_resolve_vec_mismatch(): |
| 170 | + with pytest.raises(ValueError, match="refers to a whole container"): |
| 171 | + A.resolve("mod.rna.X", vec=True) |
| 172 | + A.resolve("mod.rna.X[:, :]", vec=True) |
| 173 | + A.resolve("obsm.test", vec=True) |
| 174 | + with pytest.raises(ValueError, match="refers to a vector"): |
| 175 | + A.resolve("mod.rna.X", vec=False) |
| 176 | + A.resolve("mod.rna.X[:, ACT1]", vec=False) |
| 177 | + A.resolve("mod.rna.X[:, :]", vec=False) |
| 178 | + A.resolve("obsm.test.2", vec=False) |
| 179 | + |
| 180 | + |
168 | 181 | @pytest.mark.parametrize("acc", [path[0] for path in PATHS if isinstance(path[0], ad.acc.AdRef)]) |
169 | 182 | def test_to_from_json(mudata_json_schema, anndata_schema_registry, acc): |
170 | 183 | serialized = A.to_json(acc) |
|
0 commit comments