summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2016-09-11 09:36:30 +0200
committerJuergen Ryannel <juergen.bocklage-ryannel@pelagicore.com>2016-11-30 10:01:20 +0100
commit8516188ae0f9f14935d3595b8e803dc6324dff32 (patch)
treef4cea4ee12936354fe4763f2f3f296b04ec767c7 /tests
parent37fe686d82bfcdfa9fcc8bb1383cf243eeb68a7e (diff)
downloadqtivi-qface-8516188ae0f9f14935d3595b8e803dc6324dff32.tar.gz
Added a 2nd pass resolving listener, which resolves the referenced complex types as symbol object (see domain.TypeSymbol.reference).
It does not honor yet module imports.
Diffstat (limited to 'tests')
-rw-r--r--tests/in/one.qdl19
-rw-r--r--tests/test_validation.py64
2 files changed, 83 insertions, 0 deletions
diff --git a/tests/in/one.qdl b/tests/in/one.qdl
new file mode 100644
index 0000000..478a868
--- /dev/null
+++ b/tests/in/one.qdl
@@ -0,0 +1,19 @@
+module one;
+
+interface OneService {
+ StringStruct message;
+ list<StringStruct> messageList;
+ model<StringStruct> messageModel;
+ StringStruct echo(StringStruct message);
+ event void echoMessage(StringStruct mnessage);
+
+}
+
+struct StringStruct {
+ string text;
+ NestedStruct nested;
+}
+
+struct NestedStruct {
+ string value;
+}
diff --git a/tests/test_validation.py b/tests/test_validation.py
new file mode 100644
index 0000000..ca2abc2
--- /dev/null
+++ b/tests/test_validation.py
@@ -0,0 +1,64 @@
+from qface.idl.domain import System
+from qface.generator import FileSystem
+import logging
+import logging.config
+from pathlib import Path
+
+# logging.config.fileConfig('logging.ini')
+logging.basicConfig()
+
+log = logging.getLogger(__name__)
+
+inputPath = Path('tests/in')
+log.debug('input path folder: {0}'.format(inputPath.absolute()))
+
+
+def loadOne():
+ path = inputPath / 'one.qdl'
+ return FileSystem.parse_document(path)
+
+
+def test_resolve():
+ system = loadOne()
+ module = system.lookup_module('one')
+ assert module
+ service = module.lookup_definition('OneService')
+ assert service
+ operation = service.operationMap['echo']
+ assert operation
+ struct = module.lookup_definition('StringStruct')
+ assert struct
+ assert operation.type.reference is struct
+
+ parameter = operation.parameterMap['message']
+ assert parameter
+ assert parameter.type.reference is struct
+
+ property = service.propertyMap['message']
+ assert property
+
+ assert property.type.reference is struct
+
+
+def test_resolve_nested():
+ system = loadOne()
+ module = system.lookup_module('one')
+ assert module
+ struct = module.lookup_definition('one.StringStruct')
+ nested = module.lookup_definition('one.NestedStruct')
+ assert struct and nested
+ member = struct.memberMap['nested']
+ assert member
+ assert member.type.reference is nested
+
+ service = module.lookup_definition('one.OneService')
+ assert service
+ listProperty = service.propertyMap['messageList']
+ assert listProperty
+ assert listProperty.type.nested.reference is struct
+
+ modelProperty = service.propertyMap['messageModel']
+ assert modelProperty
+ assert modelProperty.type.nested.reference is struct
+
+