Implemented SheerkaOntology
This commit is contained in:
@@ -2,6 +2,7 @@ import logging
|
||||
|
||||
import pytest
|
||||
from core.concept import Concept
|
||||
from core.global_symbols import NotInit, NotFound, Removed
|
||||
from core.tokenizer import Keywords
|
||||
from sheerkapickle import tags
|
||||
from sheerkapickle.SheerkaPickler import SheerkaPickler
|
||||
@@ -55,6 +56,19 @@ class TestSheerkaPickler(TestUsingMemoryBasedSheerka):
|
||||
decoded = SheerkaUnpickler(sheerka).restore(flatten)
|
||||
assert decoded == obj
|
||||
|
||||
@pytest.mark.parametrize("obj, expected", [
|
||||
(NotInit, {tags.CUSTOM: NotInit.value}),
|
||||
(NotFound, {tags.CUSTOM: NotFound.value}),
|
||||
(Removed, {tags.CUSTOM: Removed.value}),
|
||||
])
|
||||
def test_i_can_flatten_and_restore_custom_types(self, obj, expected):
|
||||
sheerka = self.get_sheerka()
|
||||
flatten = SheerkaPickler(sheerka).flatten(obj)
|
||||
assert flatten == expected
|
||||
|
||||
decoded = SheerkaUnpickler(sheerka).restore(flatten)
|
||||
assert decoded == obj
|
||||
|
||||
def test_i_can_flatten_and_restore_instances(self):
|
||||
sheerka = self.get_sheerka()
|
||||
|
||||
@@ -175,3 +189,18 @@ class TestSheerkaPickler(TestUsingMemoryBasedSheerka):
|
||||
flatten = SheerkaPickler(sheerka).flatten(obj)
|
||||
decoded = SheerkaUnpickler(sheerka).restore(flatten)
|
||||
assert decoded == Obj("foo", None, {"a": None, "b": None})
|
||||
|
||||
def test_ontology_are_not_serialized(self):
|
||||
sheerka, context = self.init_test().unpack()
|
||||
|
||||
sheerka.push_ontology(context, "new ontology")
|
||||
ontology = sheerka.pop_ontology().body.body
|
||||
obj = sheerka.ret(sheerka.name, True, ontology)
|
||||
|
||||
flatten = SheerkaPickler(sheerka).flatten(obj)
|
||||
assert flatten == {
|
||||
'_sheerka/obj': 'core.builtin_concepts.ReturnValueConcept',
|
||||
'concept/id': ('__RETURN_VALUE', '43'),
|
||||
'status': True,
|
||||
'value': 'new ontology',
|
||||
'who': '__SHEERKA'}
|
||||
|
||||
Reference in New Issue
Block a user