Ejemplo n.º 1
1
def test_fact_setitem_do_raise_after_declare():
    f = Fact()
    ke = KnowledgeEngine()
    ke.reset()
    ke.declare(f)

    with pytest.raises(RuntimeError):
        f[0] = 1
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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_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_fact_setitem_do_raise_after_declare():
    f = Fact()
    ke = KnowledgeEngine()
    ke.reset()
    ke.declare(f)

    with pytest.raises(RuntimeError):
        f[0] = 1
Ejemplo n.º 6
0
def test_KnowledgeEngine_declare_define_fact():
    from pyknow.engine import KnowledgeEngine
    from pyknow import Fact
    from unittest.mock import patch

    ke = KnowledgeEngine()
    with patch('pyknow.factlist.FactList') as mock:
        ke.facts = mock
        ke.declare(Fact())
        assert mock.declare.called
Ejemplo n.º 7
0
def test_KnowledgeEngine_declare_define_fact():
    from pyknow.engine import KnowledgeEngine
    from pyknow.fact import Fact
    from unittest.mock import patch

    ke = KnowledgeEngine()
    with patch('pyknow.factlist.FactList') as mock:
        ke.facts = mock
        ke.declare(Fact())
        assert mock.declare.called
Ejemplo n.º 8
0
def test_duplicate_declare():
    from pyknow import KnowledgeEngine, Fact

    ke = KnowledgeEngine()

    f1 = ke.declare(Fact(color='red'))
    assert len(ke.facts) == 1

    f2 = ke.duplicate(f1, color='yellow', blink=True)
    assert len(ke.facts) == 2
    assert f2 is not f1
    assert f2['color'] == 'yellow'
    assert f2['blink']
Ejemplo n.º 9
0
def test_duplicate_declare():
    from pyknow import KnowledgeEngine, Fact

    ke = KnowledgeEngine()

    f1 = ke.declare(Fact(color='red'))
    assert len(ke.facts) == 1

    f2 = ke.duplicate(f1, color='yellow', blink=True)
    assert len(ke.facts) == 2
    assert f2 is not f1
    assert f2['color'] == 'yellow'
    assert f2['blink']
Ejemplo n.º 10
0
def test_modify_retracts_and_declare():
    from pyknow import KnowledgeEngine, Fact

    ke = KnowledgeEngine()

    f1 = ke.declare(Fact())
    assert len(ke.facts) == 1

    f2 = ke.modify(f1, _0='test_pos', key='test_key')
    assert f1 != f2
    assert len(ke.facts) == 1
    assert f2.__factid__ in ke.facts
    assert f2[0] == 'test_pos'
    assert f2['key'] == 'test_key'
Ejemplo n.º 11
0
def test_modify_retracts_and_declare():
    from pyknow import KnowledgeEngine, Fact

    ke = KnowledgeEngine()

    f1 = ke.declare(Fact())
    assert len(ke.facts) == 1

    f2 = ke.modify(f1, _0='test_pos', key='test_key')
    assert f1 != f2
    assert len(ke.facts) == 1
    assert f2.__factid__ in ke.facts
    assert f2[0] == 'test_pos'
    assert f2['key'] == 'test_key'
Ejemplo n.º 12
0
def test_declare_raises_typeerror_if_conditionalelement_found():
    from pyknow import KnowledgeEngine, L, W, P, Fact

    ke = KnowledgeEngine()

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1)))

    with pytest.raises(TypeError):
        ke.declare(Fact(W()))

    with pytest.raises(TypeError):
        ke.declare(Fact(P(lambda _: True)))

    with pytest.raises(TypeError):
        ke.declare(Fact(~L(1)))

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1) | L(2)))

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1) & L(2)))
Ejemplo n.º 13
0
def test_declare_raises_typeerror_if_conditionalelement_found():
    from pyknow import KnowledgeEngine, L, W, P, Fact

    ke = KnowledgeEngine()

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1)))

    with pytest.raises(TypeError):
        ke.declare(Fact(W()))

    with pytest.raises(TypeError):
        ke.declare(Fact(P(lambda _: True)))

    with pytest.raises(TypeError):
        ke.declare(Fact(~L(1)))

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1) | L(2)))

    with pytest.raises(TypeError):
        ke.declare(Fact(L(1) & L(2)))