def test_parse():
    solver = Solver()
    solver.parse("123 -> x")
    assert solver.inputs == {"x": "123".split()}

    solver = Solver()
    solver.parse("456 -> y")
    assert solver.inputs == {"y": "456".split()}

    solver = Solver()
    solver.parse("123 AND 456 -> x")
    assert solver.inputs == {"x": "123 AND 456".split()}

    solver = Solver()
    solver.parse("x AND 456 -> z")
    assert solver.inputs == {"z": "x AND 456".split()}

    solver = Solver()
    solver.parse("NOT 123 -> y")
    assert solver.inputs == {"y": "NOT 123".split()}
def test_make_outputs():
    solver = Solver()
    solver.parse("123 -> x")
    solver.make_outputs()
    assert solver.outputs == {"x": 123}

    solver = Solver()
    solver.parse("456 -> y")
    solver.make_outputs()
    assert solver.outputs == {"y": 456}

    solver = Solver()
    solver.parse("123 AND 456 -> x")
    solver.make_outputs()
    assert solver.outputs == {"x": 123 & 456}

    solver = Solver()
    solver.parse("NOT 123 -> y")
    solver.make_outputs()
    assert solver.outputs == {"y": ~np.uint16(123)}