| 17 | from layoutparser import load_json, load_dict, load_csv, load_pdf |
| 18 | |
| 19 | def test_json(): |
| 20 | |
| 21 | i = Interval(1, 2, "y", canvas_height=5) |
| 22 | r = Rectangle(1, 2, 3, 4) |
| 23 | q = Quadrilateral(np.arange(8).reshape(4, 2), 200, 400) |
| 24 | l = Layout([i, r, q], page_data={"width": 200, "height": 200}) |
| 25 | |
| 26 | i2 = TextBlock(i, "") |
| 27 | r2 = TextBlock(r, id=24) |
| 28 | q2 = TextBlock(q, text="test", parent=45) |
| 29 | l2 = Layout([i2, r2, q2]) |
| 30 | |
| 31 | i3 = TextBlock(i, None) |
| 32 | r3 = TextBlock(r, id=None) |
| 33 | q3 = TextBlock(q, text=None, parent=None) |
| 34 | l3 = Layout([i3, r3, q3], page_data={"width": 200, "height": 200}) |
| 35 | |
| 36 | # fmt: off |
| 37 | assert i == load_dict(i.to_dict()) == load_json("tests/fixtures/io/interval.json") |
| 38 | assert r == load_dict(r.to_dict()) == load_json("tests/fixtures/io/rectangle.json") |
| 39 | assert q == load_dict(q.to_dict()) == load_json("tests/fixtures/io/quadrilateral.json") |
| 40 | assert l == load_dict(l.to_dict()) == load_json("tests/fixtures/io/layout.json") |
| 41 | |
| 42 | assert i2 == load_dict(i2.to_dict()) == load_json("tests/fixtures/io/interval_textblock.json") |
| 43 | assert r2 == load_dict(r2.to_dict()) == load_json("tests/fixtures/io/rectangle_textblock.json") |
| 44 | assert q2 == load_dict(q2.to_dict()) == load_json("tests/fixtures/io/quadrilateral_textblock.json") |
| 45 | assert l2 == load_dict(l2.to_dict()) == load_json("tests/fixtures/io/layout_textblock.json") |
| 46 | |
| 47 | # Test if LP can ignore the unused None features |
| 48 | assert l == load_dict(l3.to_dict()) |
| 49 | # fmt: on |
| 50 | |
| 51 | |
| 52 | def test_csv(): |