def test_idempotent_json():
    key = Key(0, 0, Position(1, 1, 1, 1))
    layout = Layout(1, 1, [key])

    assert Layout.from_json(layout.to_json()) == layout
def test_layout_to_json():
    key = Key(0, 0, Position(1, 1, 1, 1))
    layout = Layout(1, 1, [key])
    assert layout.to_json(sort_keys=True) \
            == '{"cols": 1, "keys": [{"col": 0, "position": {"angle": 1, "width": 1, "x": 1, "y": 1}, "row": 0}], "rows": 1}'