diff options
author | Juergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com> | 2017-07-19 12:23:48 +0200 |
---|---|---|
committer | Juergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com> | 2017-07-19 12:23:48 +0200 |
commit | 216ac7c45fca000cc45ca1a20efffb2617d820d3 (patch) | |
tree | b17c33cec9ab2bde71f5fb079c56ee71abde7960 | |
parent | e4863ef97947b0355c6d3dc5b24f6c3bd0303a79 (diff) | |
download | qtivi-qface-216ac7c45fca000cc45ca1a20efffb2617d820d3.tar.gz |
Added is_enumeration to TypeSymbol which is true for enums and flags.
is_enum is now only true for enums and is_flags for flags.
You need to update your templates to cover these cases!
-rw-r--r-- | qface/idl/domain.py | 15 | ||||
-rw-r--r-- | tests/in/com.pelagicore.ivi.tuner.qface | 4 | ||||
-rw-r--r-- | tests/test_parser.py | 17 |
3 files changed, 29 insertions, 7 deletions
diff --git a/qface/idl/domain.py b/qface/idl/domain.py index f717fbc..b8c611f 100644 --- a/qface/idl/domain.py +++ b/qface/idl/domain.py @@ -219,14 +219,19 @@ class TypeSymbol(NamedElement): return self.is_primitive and self.name == 'string' @property + def is_enumeration(self): + '''checks if type is complex and insytance of type Enum''' + return self.is_complex and isinstance(self.reference, Enum) + + @property def is_enum(self): - '''checks if type is complex and enum (or flag)''' - return self.is_complex and isinstance(self.reference, Enum) and self.reference.is_enum + '''checks if type is an enumeration and reference is enum''' + return self.is_enumeration and self.reference.is_enum @property def is_flag(self): - '''checks if type is an enum and reference is flag ''' - return self.is_enum and self.reference.is_flag + '''checks if type is an enumeration and reference is flag ''' + return self.is_enumeration and self.reference.is_flag @property def is_struct(self): @@ -410,7 +415,7 @@ class Operation(Symbol): """ the interface the operation is part of """ self.interface._operationMap[name] = self self._parameterMap = self._contentMap = OrderedDict() # type: dict[Parameter] - self.is_const = False #type: bool + self.is_const = False # type: bool """reflects is the operation was declared as const operation""" @property diff --git a/tests/in/com.pelagicore.ivi.tuner.qface b/tests/in/com.pelagicore.ivi.tuner.qface index aae8e0c..e8f53ae 100644 --- a/tests/in/com.pelagicore.ivi.tuner.qface +++ b/tests/in/com.pelagicore.ivi.tuner.qface @@ -34,6 +34,8 @@ interface Tuner extends BaseTuner { signal broadcastMessage(string message); TunerExtension extension; + + Feature feature; } interface TunerExtension { @@ -60,7 +62,7 @@ enum Waveband { AM=1 } -flag Features { +flag Feature { Mono = 0x1, Stereo = 0x2, } diff --git a/tests/test_parser.py b/tests/test_parser.py index 764a7b9..b2844fc 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -3,6 +3,7 @@ import logging.config from path import Path from qface.generator import FileSystem +import qface.idl.domain as domain # logging.config.fileConfig('logging.ini') logging.basicConfig() @@ -107,6 +108,7 @@ def test_enum(): def test_enum_counter(): system = load_test() enum = system.lookup('com.pelagicore.test.State') + assert type(enum) is domain.Enum assert enum assert enum._memberMap['Null'].value is 0 assert enum._memberMap['Failure'].value is 3 @@ -115,6 +117,7 @@ def test_enum_counter(): def test_flag_counter(): system = load_test() flag = system.lookup('com.pelagicore.test.Phase') + assert type(flag) is domain.Enum assert flag assert flag._memberMap['PhaseOne'].value is 1 assert flag._memberMap['PhaseTwo'].value is 2 @@ -123,20 +126,30 @@ def test_flag_counter(): def test_flag(): system = load_tuner() - symbol = system.lookup('com.pelagicore.ivi.tuner.Features') + symbol = system.lookup('com.pelagicore.ivi.tuner.Feature') + assert type(symbol) is domain.Enum assert symbol.is_flag + assert not symbol.is_enum + symbol = system.lookup('com.pelagicore.ivi.tuner.Tuner#feature') + assert type(symbol) is domain.Property + assert type(symbol.type.reference) is domain.Enum + + assert symbol.type.is_flag + assert symbol.type.is_enumeration def test_list(): system = load_tuner() interface = system.lookup('com.pelagicore.ivi.tuner.Tuner') property = interface._propertyMap['primitiveList'] + assert type(property) is domain.Property assert property.type.name == 'list' assert property.type.is_list is True assert property.type.nested.is_primitive assert property.type.nested.name == 'int' property = interface._propertyMap['complexList'] + assert type(property) is domain.Property assert property.type.name == 'list' assert property.type.is_list is True assert property.type.nested.is_complex @@ -147,12 +160,14 @@ def test_model(): system = load_tuner() interface = system.lookup('com.pelagicore.ivi.tuner.Tuner') property = interface._propertyMap['primitiveModel'] + assert type(property) is domain.Property assert property.type.name == 'model' assert property.type.is_model is True assert property.type.nested.is_primitive assert property.type.nested.name == 'int' property = interface._propertyMap['complexModel'] + assert type(property) is domain.Property assert property.type.name == 'model' assert property.type.is_model is True assert property.type.nested.is_complex |