def test_fact_setitem_do_raise_after_declare(): f = Fact() ke = KnowledgeEngine() ke.reset() ke.declare(f) with pytest.raises(RuntimeError): f[0] = 1
def test_KnowledgeEngine_reset_declare_initialfact(): from pyknow.engine import KnowledgeEngine ke = KnowledgeEngine() ke.reset() assert len(ke.facts) == 1
def test_KnowledgeEngine_reset_resets_facts(): from pyknow.engine import KnowledgeEngine ke = KnowledgeEngine() ke.facts = None ke.reset() assert ke.facts is not None
def test_KnowledgeEngine_reset_resets_agenda(): from pyknow.engine import KnowledgeEngine ke = KnowledgeEngine() ke.agenda = None ke.reset() assert ke.agenda is not None
def test_double_underscore_raise_on_declare(): ke = KnowledgeEngine() ke.reset() ke.declare(Fact(__startwithdoubleunderscore__=True)) with pytest.raises(KeyError): ke.declare(Fact(key__with__double__underscores=True))
def test_KnowledgeEngine_reset_declares_InitialFact(): from pyknow.engine import KnowledgeEngine from pyknow.fact import InitialFact ke = KnowledgeEngine() assert not ke._facts.matches(InitialFact()) ke.reset() assert ke._facts.matches(InitialFact())
def test_KnowledgeEngine_reset(): """ Given a set of fixed facts, they're still there after a reset. Also, we have in account that InitialFact() is always there. And that if we add a normal fact after that, it's not persistent """ from pyknow.engine import KnowledgeEngine from pyknow.fact import Fact, L ke = KnowledgeEngine() ke.deffacts(Fact(foo=L(1))) ke.deffacts(Fact(foo=L(1), bar=L(2))) ke.reset() assert len(ke.facts.facts) == 3 ke = KnowledgeEngine() ke.deffacts(Fact(foo=L(1))) ke.declare(Fact(foo=L(9))) ke.deffacts(Fact(foo=L(1), bar=L(2))) ke.reset() assert len(ke.facts.facts) == 3 ke = KnowledgeEngine() ke.deffacts(Fact(foo=L(1))) ke.declare(Fact(foo=L(9))) ke.reset() assert len(ke.facts.facts) == 2