def test_eu_loop(): t = Transition([0], [0]) p = PetriNet([t]) s1 = State([1], p) prop = EUProposition(TrueProposition(), FalseProposition()) s1.evaluate(prop) # should terminate assert len(p._states_cache) == 1
def test_eg_loop(): t = Transition([0], [0]) p = PetriNet([t]) s1 = State([1], p) prop = EGProposition(TrueProposition()) assert s1.evaluate(prop) == True assert len(p._states_cache) == 1
def test_eu_proposition_2(): t = Transition([0], [1]) p = PetriNet([t]) s1 = State([0,2], p) prop = EUProposition(LessProposition(NumericExpression(0), VariableExpression(0)), TrueProposition()) assert s1.evaluate(prop) == True
def test_ex_proposition(): t1 = Transition([0], [1]) t2 = Transition([1], [2]) p = PetriNet([t1, t2]) s1 = State([1,1,0], p) prop = EXProposition(EqualsProposition(VariableExpression(0), NumericExpression(0))) assert s1.evaluate(prop) == True
def test_eu_proposition_1(): t = Transition([0], [1]) p = PetriNet([t]) s1 = State([0,2], p) prop = EUProposition(LessProposition(NumericExpression(0), VariableExpression(0)), EqualsProposition(VariableExpression(1), NumericExpression(3))) assert s1.evaluate(prop) == False
def test_dual_loop(): t1 = Transition([0], [1]) t2 = Transition([1], [0]) p = PetriNet([t1, t2]) s1 = State([0, 1], p) prop = EGProposition(TrueProposition()) assert s1.evaluate(prop) == True
def test_eu_proposition_3(): p = PetriNet([]) s = State([], p) prop = EUProposition(TrueProposition(), FalseProposition()) assert s.evaluate(prop) == False
def test_petri_net_with_propositions(): t = Transition([0], [1]) p = PetriNet([t]) s1 = State([1,0], p) assert s1.evaluate(AndProposition(EqualsProposition(VariableExpression(0), NumericExpression(1)), EqualsProposition(VariableExpression(1), NumericExpression(0))))
def test_eg_five(): t = Transition([0], [1]) p = PetriNet([t]) s1 = State([5,0], p) prop = EGProposition(LessProposition(NumericExpression(0), VariableExpression(0))) assert s1.evaluate(prop) == False
def test_mark_continuation_true(): p = TrueProposition() s1 = State([1]) assert s1.evaluate(p) == True assert p.label() not in s1.labels
def test_mark_continuation_false(): p = FalseProposition() s1 = State([1]) assert s1.evaluate(p) == False assert p.label() not in s1.labels