Example #1
0
def test_sequence_pair_operators(example_pair_horizontally, example_pair_vertically):  # noqa: F811
    seqpair_1 = rps.SequencePair(pair=example_pair_horizontally)
    seqpair_2 = rps.SequencePair(pair=example_pair_horizontally)
    seqpair_3 = rps.SequencePair(pair=example_pair_vertically)

    assert id(seqpair_1) != id(seqpair_2) != id(seqpair_3)
    assert seqpair_1 == seqpair_2
    assert seqpair_1 != seqpair_3
Example #2
0
def test_sequence_pair_init_vertically(example_pair_vertically):  # noqa: F811
    seqpair = rps.SequencePair(pair=example_pair_vertically)

    assert seqpair.pair == example_pair_vertically
    assert seqpair.gp == example_pair_vertically[0]
    assert seqpair.gn == example_pair_vertically[1]
    assert seqpair.n == 4

    assert seqpair.oblique_grid.grid == [[-1, -1, -1, 0], [-1, -1, 1, -1], [-1, 2, -1, -1], [3, -1, -1, -1]]
    assert seqpair.oblique_grid.coordinates == [{"a": 0, "b": 3}, {"a": 1, "b": 2}, {"a": 2, "b": 1}, {"a": 3, "b": 0}]
def test_solution_str(example_pair, example_floorplan):  # noqa: F811
    seqpair = rps.SequencePair(pair=example_pair)
    floorplan = rps.Floorplan(
        positions=example_floorplan["positions"],
        bounding_box=example_floorplan["bounding_box"],
    )
    solution = rps.Solution(sequence_pair=seqpair, floorplan=floorplan)

    assert isinstance(solution.__str__(), str)
    assert (
        "Solution({'sequence_pair': SequencePair(([0, 1, 3, 2], [3, 0, 2, 1])), "
        "'floorplan': Floorplan({'positions': [{'id': 0, 'x': 0, 'y': 1}, "
        "{'id': 1, 'x': 4, 'y': 3.2}, {'id': 2, 'x': 5.0, 'y': 0.0}, {'id': 3, 'x': 0, 'y': 0}], "
        "'bounding_box': (8, 7.2), 'area': 57.6})})" in solution.__str__())
Example #4
0
def test_sequence_pair_decode_vertically(example_problem, example_pair_vertically):  # noqa: F811
    seqpair = rps.SequencePair(pair=example_pair_vertically)
    floorplan = seqpair.decode(problem=rps.Problem(rectangles=example_problem))

    assert isinstance(floorplan, rps.Floorplan)
    assert isinstance(floorplan.positions, list)
    assert len(floorplan.positions) == 4
    assert isinstance(floorplan.bounding_box, tuple)
    assert len(floorplan.bounding_box) == 2
    assert isinstance(floorplan.area, float)

    # Positions
    assert floorplan.positions[0]["id"] == 0
    assert math.isclose(floorplan.positions[0]["x"], 0.0)
    assert math.isclose(floorplan.positions[0]["y"], 12.2)
    assert math.isclose(floorplan.positions[0]["width"], 4.0)
    assert math.isclose(floorplan.positions[0]["height"], 6.0)

    assert floorplan.positions[1]["id"] == 1
    assert math.isclose(floorplan.positions[1]["x"], 0.0)
    assert math.isclose(floorplan.positions[1]["y"], 8.2)
    assert math.isclose(floorplan.positions[1]["width"], 4.0)
    assert math.isclose(floorplan.positions[1]["height"], 4.0)

    assert floorplan.positions[2]["id"] == 2
    assert math.isclose(floorplan.positions[2]["x"], 0.0)
    assert math.isclose(floorplan.positions[2]["y"], 5.0)
    assert math.isclose(floorplan.positions[2]["width"], 2.1)
    assert math.isclose(floorplan.positions[2]["height"], 3.2)

    assert floorplan.positions[3]["id"] == 3
    assert math.isclose(floorplan.positions[3]["x"], 0.0)
    assert math.isclose(floorplan.positions[3]["y"], 0.0)
    assert math.isclose(floorplan.positions[3]["width"], 1.0)
    assert math.isclose(floorplan.positions[3]["height"], 5.0)

    # Bounding box
    assert floorplan.bounding_box == (4.0, 18.2)

    # Area
    assert floorplan.area == 72.8
def test_solution_init_invalid_floorplan(example_pair):  # noqa: F811
    seqpair = rps.SequencePair(pair=example_pair)

    with pytest.raises(TypeError):
        rps.Solution(sequence_pair=seqpair, floorplan="Invalid floorplan")