fixed #18 : I can evaluate concept
This commit is contained in:
@@ -2,74 +2,20 @@ import pytest
|
||||
|
||||
from base import BaseTest, DummyObj
|
||||
from caching.FastCache import FastCache
|
||||
from core.ExecutionContext import ContextActions
|
||||
from common.global_symbols import NotFound
|
||||
from core.Event import Event
|
||||
from core.ExecutionContext import ContextActions, ExecutionContext
|
||||
from services.SheerkaMemory import SheerkaMemory
|
||||
|
||||
|
||||
class TestSheerkaEngine(BaseTest):
|
||||
@pytest.fixture()
|
||||
def service(self, sheerka):
|
||||
return SheerkaMemory(sheerka) # I want a new instance to keep Sheerka clean (when I update stm)
|
||||
return sheerka.services[SheerkaMemory.NAME]
|
||||
|
||||
def test_i_can_add_to_global_short_term_memory(self, service):
|
||||
dummy = DummyObj()
|
||||
service.add_to_short_term_memory(None, "a", dummy)
|
||||
service.add_to_short_term_memory("a", dummy)
|
||||
|
||||
assert service.short_term_objects.copy() == {'global': {'a': dummy}}
|
||||
|
||||
def test_i_can_add_and_get_stm_data(self, context, service):
|
||||
sub_context = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
|
||||
service.add_to_short_term_memory(None, "a", "global level")
|
||||
service.add_to_short_term_memory(context, "a", "context level")
|
||||
service.add_to_short_term_memory(sub_context, "a", "sub context level")
|
||||
|
||||
assert service.get_from_short_term_memory(sub_context, "a") == "sub context level"
|
||||
assert service.get_from_short_term_memory(context, "a") == "context level"
|
||||
assert service.get_from_short_term_memory(None, "a") == "global level"
|
||||
|
||||
def test_i_can_list_stm_data(self, context, service):
|
||||
sub_context = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
|
||||
service.add_to_short_term_memory(None, "a", "global a")
|
||||
service.add_to_short_term_memory(None, "b", "global b")
|
||||
service.add_to_short_term_memory(context, "a", "context a")
|
||||
service.add_to_short_term_memory(context, "c", "context c")
|
||||
service.add_to_short_term_memory(sub_context, "d", "sub context d")
|
||||
service.add_to_short_term_memory(sub_context, "a", "sub context a")
|
||||
|
||||
assert service.list_short_term_memory(sub_context) == {"a": "sub context a",
|
||||
"b": "global b",
|
||||
"c": "context c",
|
||||
"d": "sub context d"}
|
||||
|
||||
assert service.list_short_term_memory(context) == {"a": "context a",
|
||||
"b": "global b",
|
||||
"c": "context c"}
|
||||
|
||||
assert service.list_short_term_memory(None) == {"a": "global a",
|
||||
"b": "global b"}
|
||||
|
||||
def test_i_can_list_stm_data_when_context_have_no_entry(self, context, service):
|
||||
sub_context = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
|
||||
service.add_to_short_term_memory(sub_context, "d", "sub context d")
|
||||
service.add_to_short_term_memory(sub_context, "a", "sub context a")
|
||||
|
||||
assert service.list_short_term_memory(sub_context) == {"a": "sub context a", "d": "sub context d"}
|
||||
assert service.list_short_term_memory(context) == {}
|
||||
assert service.list_short_term_memory(None) == {}
|
||||
|
||||
def test_i_value_are_removed_when_cache_is_full(self, context, service):
|
||||
service.short_term_objects = FastCache(3)
|
||||
context1 = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
context2 = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
context3 = context.push("TestSheerkaEngine", ContextActions.TESTING, None)
|
||||
|
||||
service.add_to_short_term_memory(context, "a", "context")
|
||||
service.add_to_short_term_memory(context1, "b", "context 1")
|
||||
service.add_to_short_term_memory(context2, "c", "context 2")
|
||||
assert context.id in service.short_term_objects
|
||||
|
||||
service.add_to_short_term_memory(context3, "d", "context 3")
|
||||
assert context.id not in service.short_term_objects
|
||||
assert service.get_from_short_term_memory("a") == dummy
|
||||
assert service.sheerka.om.current_ontology().fast_cache.copy() == {'a': dummy}
|
||||
|
||||
Reference in New Issue
Block a user