def test_seq(st):
    seqc = C.SequenceConstraint(st.target, st.sequence)
    result = C.interp(seqc, st.cs, st.desired)
    assert (result == st.expected)
def test_nclc2():
    nclc = C.NoCourseLevelConstraint(100)
    cs = []
    desired = S.Course(level=200)
    result = C.interp(nclc, cs, desired)
    assert (not result)
def test_hclc3():
    hclc = C.HasCourseLevelConstraint(200, 100)
    cs = [S.Course(level=200), S.Course(level=100)]
    desired = S.Course(level=200)
    result = C.interp(hclc, cs, desired)
    assert (result)
def test_aoc(st):
    c = C.AnyOfConstraint(st.target, st.sequence)
    result = C.interp(c, st.cs, st.desired)
    assert (result == st.expected)