1
1
import json
2
2
import unittest
3
3
4
- import pylasu .StrumentaLanguageSupport as starlasu_metamodel
4
+ import pylasu .StrumentaLanguageSupport as starlasu
5
5
from pylasu .StrumentaLanguageSupport import ASTNode
6
+ from pylasu .emf .metamodel_builder import MetamodelBuilder
7
+ from pylasu .emf .model import to_eobject
6
8
from pylasu .playground .transpilation_trace import TranspilationTrace
7
- from pyecore .ecore import EString , EAttribute , EInt
9
+ from pylasu .playground .transpilation_trace_ecore import TranspilationTrace as ETranspilationTrace
10
+ from pyecore .ecore import EString , EAttribute , EInt , MetaEClass
11
+ from pyecore .resources import Resource
8
12
13
+ from pylasu .validation .validation import Result
14
+ from tests .fixtures import Box
9
15
10
16
nsURI = "http://mypackage.com"
11
17
name = "StrumentaLanguageSupportTranspilationTest"
@@ -26,14 +32,14 @@ def __init__(self, *, name=None, value=None, **kwargs):
26
32
class ModelTest (unittest .TestCase ):
27
33
28
34
def test_serialize_transpilation_issue (self ):
29
- tt = TranspilationTrace (
35
+ tt = ETranspilationTrace (
30
36
original_code = "a:1" , generated_code = "b:2" ,
31
- source_result = starlasu_metamodel .Result (root = ANode (name = "a" , value = 1 )),
32
- target_result = starlasu_metamodel .Result (root = ANode (name = "b" , value = 2 )),
33
- issues = [starlasu_metamodel .Issue (
34
- type = starlasu_metamodel .IssueType .getEEnumLiteral ("TRANSLATION" ),
37
+ source_result = starlasu .Result (root = ANode (name = "a" , value = 1 )),
38
+ target_result = starlasu .Result (root = ANode (name = "b" , value = 2 )),
39
+ issues = [starlasu .Issue (
40
+ type = starlasu .IssueType .getEEnumLiteral ("TRANSLATION" ),
35
41
message = "some issue" ,
36
- severity = starlasu_metamodel .IssueSeverity .getEEnumLiteral ("WARNING" ))]
42
+ severity = starlasu .IssueSeverity .getEEnumLiteral ("WARNING" ))]
37
43
)
38
44
self .assertEqual ("a:1" , tt .originalCode )
39
45
self .assertEqual ("b:2" , tt .generatedCode )
@@ -67,3 +73,23 @@ def test_serialize_transpilation_issue(self):
67
73
} ]
68
74
}"""
69
75
self .assertEqual (json .loads (expected ), json .loads (tt .save_as_json ("foo.json" )))
76
+
77
+ def test_serialize_transpilation_from_nodes (self ):
78
+ res = Resource ()
79
+ mmb = MetamodelBuilder ("tests.fixtures" , "https://strumenta.com/pylasu/test/fixtures" , resource = res )
80
+ mmb .provide_class (Box )
81
+
82
+ tt = TranspilationTrace (
83
+ original_code = "box(a)[foo, bar]" , generated_code = '<box name="a"><foo /><bar /></box>' ,
84
+ source_result = Result (Box ("a" )),
85
+ target_result = Result (Box ("a" ))).to_eobject (res )
86
+
87
+ expected = """{
88
+ "eClass": "https://strumenta.com/kolasu/transpilation/v1#//TranspilationTrace",
89
+ "generatedCode": "<box name=\\ "a\\ "><foo /><bar /></box>",
90
+ "originalCode": "box(a)[foo, bar]",
91
+ "sourceResult": {"root": {"eClass": "https://strumenta.com/pylasu/test/fixtures#//Box"}},
92
+ "targetResult": {"root": {"eClass": "https://strumenta.com/pylasu/test/fixtures#//Box"}}
93
+ }"""
94
+ as_json = tt .save_as_json ("foo.json" )
95
+ self .assertEqual (json .loads (expected ), json .loads (as_json ))
0 commit comments