|
| 1 | +from numpy.testing import assert_almost_equal |
| 2 | +import datajoint as dj |
| 3 | +from . import schema_external |
| 4 | + |
| 5 | + |
| 6 | +def test_heading(schema_ext, mock_stores): |
| 7 | + heading = schema_external.Simple().heading |
| 8 | + assert "item" in heading |
| 9 | + assert heading["item"].is_external |
| 10 | + |
| 11 | + |
| 12 | +def test_insert_and_fetch(schema_ext, mock_stores, mock_cache): |
| 13 | + original_list = [1, 3, 8] |
| 14 | + schema_external.Simple().insert1(dict(simple=1, item=original_list)) |
| 15 | + # test fetch |
| 16 | + q = (schema_external.Simple() & {"simple": 1}).fetch("item")[0] |
| 17 | + assert list(q) == original_list |
| 18 | + # test fetch1 as a tuple |
| 19 | + q = (schema_external.Simple() & {"simple": 1}).fetch1("item") |
| 20 | + assert list(q) == original_list |
| 21 | + # test fetch1 as a dict |
| 22 | + q = (schema_external.Simple() & {"simple": 1}).fetch1() |
| 23 | + assert list(q["item"]) == original_list |
| 24 | + # test without cache |
| 25 | + previous_cache = dj.config["cache"] |
| 26 | + dj.config["cache"] = None |
| 27 | + q = (schema_external.Simple() & {"simple": 1}).fetch1() |
| 28 | + assert list(q["item"]) == original_list |
| 29 | + # test with cache |
| 30 | + dj.config["cache"] = previous_cache |
| 31 | + q = (schema_external.Simple() & {"simple": 1}).fetch1() |
| 32 | + assert list(q["item"]) == original_list |
| 33 | + |
| 34 | + |
| 35 | +def test_populate(schema_ext, mock_stores): |
| 36 | + image = schema_external.Image() |
| 37 | + image.populate() |
| 38 | + remaining, total = image.progress() |
| 39 | + assert ( |
| 40 | + total == len(schema_external.Dimension() * schema_external.Seed()) |
| 41 | + and remaining == 0 |
| 42 | + ) |
| 43 | + for img, neg, dimensions in zip( |
| 44 | + *(image * schema_external.Dimension()).fetch("img", "neg", "dimensions") |
| 45 | + ): |
| 46 | + assert list(img.shape) == list(dimensions) |
| 47 | + assert_almost_equal(img, -neg) |
| 48 | + image.delete() |
| 49 | + for external_table in image.external.values(): |
| 50 | + external_table.delete(display_progress=False, delete_external_files=True) |
0 commit comments