|
| 1 | +from liblrs_python import Builder, Point, Lrs, SegmentOfTraversal, AnchorOnLrm |
| 2 | + |
| 3 | +def build_lrm() -> Lrs: |
| 4 | + """Helper function that builds an example LRS |
| 5 | +
|
| 6 | + It has the following topology: |
| 7 | + 3 |
| 8 | + | |
| 9 | + 0---1---2 |
| 10 | +
|
| 11 | + 0-1-2 is lrm_1 |
| 12 | + 1-3 is lrm_2 |
| 13 | + """ |
| 14 | + |
| 15 | + |
| 16 | + builder = Builder() |
| 17 | + |
| 18 | + p0 = Point(0, 0) |
| 19 | + p1 = Point(1, 0) |
| 20 | + p2 = Point(2, 0) |
| 21 | + p3 = Point(1, 1) |
| 22 | + |
| 23 | + builder.add_node("0", p0, {}) |
| 24 | + builder.add_node("1", p1, {}) |
| 25 | + builder.add_node("2", p2, {}) |
| 26 | + builder.add_node("3", p3, {}) |
| 27 | + |
| 28 | + |
| 29 | + segment1 = SegmentOfTraversal(builder.add_segment("s1", [p0, p1], 0, 1), False) |
| 30 | + segment2 = SegmentOfTraversal(builder.add_segment("s2", [p2, p1], 1, 2), False) |
| 31 | + segment3 = SegmentOfTraversal(builder.add_segment("s1", [p1, p3], 0, 1), False) |
| 32 | + |
| 33 | + traversal1 = builder.add_traversal("traversal1", [segment1, segment2]) |
| 34 | + traversal2 = builder.add_traversal("traversal2", [segment3]) |
| 35 | + |
| 36 | + builder.add_lrm("lrm_1", traversal1, [], {}) |
| 37 | + builder.add_lrm("lrm_2", traversal2, [], {}) |
| 38 | + |
| 39 | + return builder.build_lrs({}) |
| 40 | + |
| 41 | + |
| 42 | +def test_get_topology(): |
| 43 | + lrs = build_lrm() |
| 44 | + nodes = lrs.get_nodes() |
| 45 | + assert len(nodes) == 4 |
| 46 | + |
| 47 | + n0 = lrs.get_node(0) |
| 48 | + assert n0.id == "0" |
| 49 | + assert n0.properties == {} |
| 50 | + assert n0.geometry is not None |
| 51 | + assert n0.geometry.x == 0 |
| 52 | + assert n0.geometry.y == 0 |
| 53 | + |
| 54 | + segments = lrs.get_segments() |
| 55 | + assert len(segments) == 3 |
| 56 | + |
| 57 | + segment1 = segments[0] |
| 58 | + assert segment1.id == "s1" |
| 59 | + assert segment1.start_node == 0 |
| 60 | + assert segment1.end_node == 1 |
0 commit comments