Added DefaultParser
This commit is contained in:
+52
-15
@@ -1,12 +1,17 @@
|
||||
import ast
|
||||
|
||||
import pytest
|
||||
import os
|
||||
from os import path
|
||||
import shutil
|
||||
|
||||
from core.concept import Concept
|
||||
from core.concept import Concept, ConceptParts
|
||||
from core.sheerka import Sheerka
|
||||
from parsers.DefaultParser import DefConceptNode, DefaultParser
|
||||
from parsers.PythonParser import PythonParser
|
||||
|
||||
tests_root = path.abspath("../build/tests")
|
||||
root_folder = "init_folder"
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
@@ -25,8 +30,6 @@ def init_test():
|
||||
|
||||
|
||||
def test_root_folder_is_created_after_initialization():
|
||||
root_folder = "init_folder"
|
||||
|
||||
return_value = Sheerka().initialize(root_folder)
|
||||
assert return_value.status, "initialisation should be successful"
|
||||
assert Sheerka().concept_equals(return_value.value, Sheerka().get_concept("success"))
|
||||
@@ -34,22 +37,56 @@ def test_root_folder_is_created_after_initialization():
|
||||
|
||||
|
||||
def test_lists_of_concepts_is_initialized():
|
||||
root_folder = "init_folder"
|
||||
|
||||
Sheerka().initialize(root_folder)
|
||||
assert len(Sheerka().concepts) > 1
|
||||
|
||||
|
||||
def test_null_concept_are_equals():
|
||||
concept1 = Concept("test1")
|
||||
concept2 = Concept("test2")
|
||||
concept3 = Concept("test3")
|
||||
# def test_null_concept_are_equals():
|
||||
# concept1 = Concept("test1")
|
||||
# concept2 = Concept("test2")
|
||||
# concept3 = Concept("test3")
|
||||
#
|
||||
# assert not Sheerka.concept_equals(concept1, None)
|
||||
# assert not Sheerka.concept_equals(None, concept1)
|
||||
# assert not Sheerka.concept_equals(concept1, concept2)
|
||||
# assert not Sheerka.concept_equals(concept1, concept3)
|
||||
#
|
||||
# assert Sheerka.concept_equals(None, None)
|
||||
# assert Sheerka.concept_equals(concept1, concept1)
|
||||
|
||||
assert not Sheerka.concept_equals(concept1, None)
|
||||
assert not Sheerka.concept_equals(None, concept1)
|
||||
assert not Sheerka.concept_equals(concept1, concept2)
|
||||
assert not Sheerka.concept_equals(concept1, concept3)
|
||||
def get_concept():
|
||||
text = """
|
||||
def concept a+b
|
||||
where isinstance(a, int) and isinstance(b, int)
|
||||
pre isinstance(a, int) and isinstance(b, int)
|
||||
post isinstance(res, int)
|
||||
as:
|
||||
def func(x,y):
|
||||
return x+y
|
||||
func(a,b)
|
||||
"""
|
||||
parser = DefaultParser(text, PythonParser)
|
||||
return parser.parse()
|
||||
|
||||
assert Sheerka.concept_equals(None, None)
|
||||
assert Sheerka.concept_equals(concept1, concept1)
|
||||
|
||||
def test_i_can_add_a_concept():
|
||||
concept = get_concept()
|
||||
sheerka = Sheerka()
|
||||
sheerka.initialize(root_folder)
|
||||
res = sheerka.add_concept(concept)
|
||||
|
||||
assert res.status
|
||||
assert res.value == Concept(
|
||||
name="a + b",
|
||||
where="isinstance(a, int) and isinstance(b, int)",
|
||||
pre="isinstance(a, int) and isinstance(b, int)",
|
||||
post="isinstance(res, int)",
|
||||
body="def func(x,y):\n return x+y\nfunc(a,b)")
|
||||
assert isinstance(res.value.codes[ConceptParts.WHERE], ast.Expression)
|
||||
assert isinstance(res.value.codes[ConceptParts.PRE], ast.Expression)
|
||||
assert isinstance(res.value.codes[ConceptParts.POST], ast.Expression)
|
||||
assert isinstance(res.value.codes[ConceptParts.BODY], ast.Module)
|
||||
|
||||
# def test_i_cannot_add_the_same_concept_twice():
|
||||
# concept1 = DefConceptNode(name="concept")
|
||||
# sheerka = Sheerka
|
||||
|
||||
Reference in New Issue
Block a user