diff options
author | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2016-09-11 09:36:30 +0200 |
---|---|---|
committer | Juergen Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2016-11-30 10:01:20 +0100 |
commit | 8516188ae0f9f14935d3595b8e803dc6324dff32 (patch) | |
tree | f4cea4ee12936354fe4763f2f3f296b04ec767c7 /tests | |
parent | 37fe686d82bfcdfa9fcc8bb1383cf243eeb68a7e (diff) | |
download | qtivi-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.qdl | 19 | ||||
-rw-r--r-- | tests/test_validation.py | 64 |
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 + + |