summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2017-01-16 12:08:17 +0100
committerJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2017-01-16 12:08:17 +0100
commitc464487eaa8fbbc4f2990716fc7683cfd9478857 (patch)
tree6ba6785eb15713626bab65211d63133d8488f61b
parent01d4bebd3412458a48dbe51a6727f913c5e709b6 (diff)
downloadqtivi-qface-c464487eaa8fbbc4f2990716fc7683cfd9478857.tar.gz
updated tests for qtcpp filters
-rw-r--r--qface/generator.py9
-rw-r--r--tests/test_qtcpp_helper.py223
2 files changed, 134 insertions, 98 deletions
diff --git a/qface/generator.py b/qface/generator.py
index cb30d06..6ef2aa4 100644
--- a/qface/generator.py
+++ b/qface/generator.py
@@ -101,18 +101,21 @@ class FileSystem(object):
:param system: system to be used (optional)
"""
logger.debug('parse document: {0}'.format(path))
+ stream = FileStream(str(path), encoding='utf-8')
+ return FileSystem._parse_stream(stream, system)
+ @staticmethod
+ def _parse_stream(stream, system: System = None):
+ logger.debug('parse stream')
system = system or System()
- data = FileStream(str(path), encoding='utf-8')
- lexer = TLexer(data)
+ lexer = TLexer(stream)
stream = CommonTokenStream(lexer)
parser = TParser(stream)
parser.addErrorListener(DiagnosticErrorListener.DiagnosticErrorListener())
tree = parser.documentSymbol()
walker = ParseTreeWalker()
walker.walk(DomainListener(system), tree)
-
return system
@staticmethod
diff --git a/tests/test_qtcpp_helper.py b/tests/test_qtcpp_helper.py
index 0d7da64..586f8bd 100644
--- a/tests/test_qtcpp_helper.py
+++ b/tests/test_qtcpp_helper.py
@@ -2,8 +2,11 @@ import logging
import logging.config
from pathlib import Path
-from qface.idl.domain import *
from qface.helper import qtcpp
+from qface.generator import FileSystem
+
+
+from antlr4 import InputStream
logging.basicConfig()
@@ -12,124 +15,154 @@ log = logging.getLogger(__name__)
src = Path('tests/in')
-system = System()
-module = Module('org.example', system)
-interface = Interface('Test', module)
-operation = Operation('echo', interface)
-parameter = Parameter('message', operation)
-parameter.type.name = 'string'
-parameter.type.is_primitive = True
+document = """
+// org.example.qface
+module org.example 1.0
+
+interface Test {
+ void echo(string message);
+ Message message;
+ Status status;
+ list<int> list001;
+ list<Message> list002;
+
+}
+
+struct Message {
+ string body
+}
+
+enum Status {
+ ON,
+ OFF
+}
+"""
+
+
+def parse_document():
+ stream = InputStream(document)
+ return FileSystem._parse_stream(stream)
def test_return_type():
+ system = parse_document()
interface = system.lookup('org.example.Test')
assert interface
operation = interface._operationMap['echo']
assert operation
parameter = operation._parameterMap['message']
- # bool
- parameter.type.name = 'bool'
- assert parameter.type.is_bool
- answer = qtcpp.Filters.returnType(parameter)
- assert answer == 'bool'
-
- # int
- parameter.type.name = 'int'
- assert parameter.type.is_int
- answer = qtcpp.Filters.returnType(parameter)
- assert answer == 'int'
-
- # real
- parameter.type.name = 'real'
- assert parameter.type.is_real
- answer = qtcpp.Filters.returnType(parameter)
- assert answer == 'qreal'
-
- # string
- parameter.type.name = 'string'
- assert parameter and parameter.type.is_string
- answer = qtcpp.Filters.returnType(parameter)
- assert answer == 'QString'
-
- # var
- parameter.type.name = 'var'
- assert parameter and parameter.type.is_variant
- answer = qtcpp.Filters.returnType(parameter)
- assert answer == 'QVariant'
+ types = {
+ 'bool': 'bool',
+ 'int': 'int',
+ 'real': 'qreal',
+ 'string': 'QString',
+ 'var': 'QVariant'
+ }
+
+ for key, value in types.items():
+ parameter.type.name = key
+ answer = qtcpp.Filters.returnType(parameter)
+ assert answer == value
+
+ # check for struct
+ prop = interface._propertyMap['message']
+ answer = qtcpp.Filters.returnType(prop)
+ assert answer == 'QmlMessage'
+ # check for enum
+ prop = interface._propertyMap['status']
+ answer = qtcpp.Filters.returnType(prop)
+ assert answer == 'QmlExampleModule::Status'
+
+ # check for list of primitive
+ prop = interface._propertyMap['list001']
+ answer = qtcpp.Filters.returnType(prop)
+ assert answer == 'QVariantList'
+
+ # check for list of structs
+ prop = interface._propertyMap['list002']
+ answer = qtcpp.Filters.returnType(prop)
+ assert answer == 'QVariantList'
def test_default_value():
+ system = parse_document()
interface = system.lookup('org.example.Test')
assert interface
operation = interface._operationMap['echo']
assert operation
parameter = operation._parameterMap['message']
- # bool
- parameter.type.name = 'bool'
- assert parameter.type.is_bool
- answer = qtcpp.Filters.defaultValue(parameter)
- assert answer == 'false'
-
- # int
- parameter.type.name = 'int'
- assert parameter.type.is_int
- answer = qtcpp.Filters.defaultValue(parameter)
- assert answer == '0'
-
- # real
- parameter.type.name = 'real'
- assert parameter.type.is_real
- answer = qtcpp.Filters.defaultValue(parameter)
- assert answer == '0.0'
-
- # string
- parameter.type.name = 'string'
- assert parameter and parameter.type.is_string
- answer = qtcpp.Filters.defaultValue(parameter)
- assert answer == 'QString()'
-
- # var
- parameter.type.name = 'var'
- assert parameter and parameter.type.is_variant
- answer = qtcpp.Filters.defaultValue(parameter)
- assert answer == 'QVariant()'
+ types = {
+ 'bool': 'false',
+ 'int': '0',
+ 'real': '0.0',
+ 'string': 'QString()',
+ 'var': 'QVariant()'
+ }
+
+ for key, value in types.items():
+ parameter.type.name = key
+ answer = qtcpp.Filters.defaultValue(parameter)
+ assert answer == value
+
+ # check for struct
+ prop = interface._propertyMap['message']
+ answer = qtcpp.Filters.defaultValue(prop)
+ assert answer == 'QmlMessage()'
+ # check for enum
+ prop = interface._propertyMap['status']
+ answer = qtcpp.Filters.defaultValue(prop)
+ assert answer == 'Status::ON'
+
+ # check for list of primitive
+ prop = interface._propertyMap['list001']
+ answer = qtcpp.Filters.defaultValue(prop)
+ assert answer == 'QVariantList()'
+
+ # check for list of structs
+ prop = interface._propertyMap['list002']
+ answer = qtcpp.Filters.defaultValue(prop)
+ assert answer == 'QVariantList()'
def test_parameter_type():
+ system = parse_document()
interface = system.lookup('org.example.Test')
assert interface
operation = interface._operationMap['echo']
assert operation
parameter = operation._parameterMap['message']
name = parameter.name
- # bool
- parameter.type.name = 'bool'
- assert parameter.type.is_bool
- answer = qtcpp.Filters.parameterType(parameter)
- assert answer == 'bool {0}'.format(name)
-
- # int
- parameter.type.name = 'int'
- assert parameter.type.is_int
- answer = qtcpp.Filters.parameterType(parameter)
- assert answer == 'int {0}'.format(name)
-
- # real
- parameter.type.name = 'real'
- assert parameter.type.is_real
- answer = qtcpp.Filters.parameterType(parameter)
- assert answer == 'qreal {0}'.format(name)
-
- # string
- parameter.type.name = 'string'
- assert parameter and parameter.type.is_string
- answer = qtcpp.Filters.parameterType(parameter)
- assert answer == 'const QString &{0}'.format(name)
-
- # var
- parameter.type.name = 'var'
- assert parameter and parameter.type.is_variant
- answer = qtcpp.Filters.parameterType(parameter)
- assert answer == 'const QVariant &{0}'.format(name)
+
+ types = {
+ 'bool': 'bool {0}'.format(name),
+ 'int': 'int {0}'.format(name),
+ 'real': 'qreal {0}'.format(name),
+ 'string': 'const QString &{0}'.format(name),
+ 'var': 'const QVariant &{0}'.format(name)
+ }
+
+ for key, value in types.items():
+ parameter.type.name = key
+ answer = qtcpp.Filters.parameterType(parameter)
+ assert answer == value
+
+ # check for struct
+ prop = interface._propertyMap['message']
+ answer = qtcpp.Filters.parameterType(prop)
+ assert answer == 'const QmlMessage &{0}'.format(prop.name)
+ # check for enum
+ prop = interface._propertyMap['status']
+ answer = qtcpp.Filters.parameterType(prop)
+ assert answer == 'QmlExampleModule::Status {0}'.format(prop.name)
+
+ # check for list of primitive
+ prop = interface._propertyMap['list001']
+ answer = qtcpp.Filters.parameterType(prop)
+ assert answer == 'const QVariantList &{0}'.format(prop.name)
+
+ # check for list of structs
+ prop = interface._propertyMap['list002']
+ answer = qtcpp.Filters.parameterType(prop)
+ assert answer == 'const QVariantList &{0}'.format(prop.name)