def test_token_initialization_conversions(): """ Token.data is modified in this way: - If is a Fact: Converted to a Set containing this Fact. - An interable of Facts: Converter to a set of Facts. """ from pyknow.matchers.rete.token import Token from pyknow.fact import Fact t1 = Token(Token.TagType.VALID, Fact()) assert t1.data == {Fact()} t2 = Token(Token.TagType.VALID, [Fact(a=1), Fact(b=2)]) assert t2.data == {Fact(a=1), Fact(b=2)}
def test_token_initialization_types(): """ Token.tag must be a Tag Token.data can be: - A Fact - An interable of Facts """ from pyknow.matchers.rete.token import Token from pyknow.fact import Fact with pytest.raises(TypeError): Token(None, Fact()) with pytest.raises(TypeError): Token(Token.TagType.VALID, None) with pytest.raises(TypeError): Token(Token.TagType.VALID, [Fact(), None]) with pytest.raises(TypeError): Token(Token.TagType.VALID, [Fact()], []) # THIS MUST NOT RAISE Token(Token.TagType.VALID, Fact(), {}) Token(Token.TagType.VALID, [Fact(), Fact()], {})
def test_token_shortcut_invalid(): from pyknow.matchers.rete.token import Token assert Token.invalid([]) == Token(Token.TagType.INVALID, [])