def __init__(self, id, valueType, kinds, compRef, defValue=None, mode='readwrite'): """ Create a new sequence property. Instances behave like list objects. Arguments: id - The property ID valueType - Type of the property, must be in VALUE_TYPES, or can be struct compRef - Reference to the PropertySet that owns this property defValue - Default Python value for this property (default: None) mode - Mode for the property, must be in MODES (default: 'readwrite') """ if valueType not in SCA_TYPES and valueType != 'structSeq': raise('"' + str(valueType) + '"' + ' is not a valid valueType, choose from\n ' + str(SCA_TYPES)) # Initialize the parent Property Property.__init__(self, id, type=valueType, kinds=kinds, compRef=compRef, mode=mode, action='external', defValue=defValue) self.complex = False #try to set the value type in ref unless this is a sequence of structs if valueType != 'structSeq': self.valueType = valueType if self.valueType == "string": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.StringSeq) elif self.valueType == "boolean": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.BooleanSeq) elif self.valueType == "ulong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.ULongSeq) elif self.valueType == "short": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.ShortSeq) elif self.valueType == "float": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.FloatSeq) elif self.valueType == "char": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.CharSeq) elif self.valueType == "octet": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.OctetSeq) elif self.valueType == "ushort": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.UShortSeq) elif self.valueType == "double": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.DoubleSeq) elif self.valueType == "long": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.LongSeq) elif self.valueType == "longlong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.LongLongSequence) elif self.valueType == "ulonglong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.UlongLongSequence) elif self.valueType.find("complex") == 0: self.typecode = getCFSeqType(self.valueType) # It is important to have a means other than .find("complex") # to determine complexity, as in the case of a struct sequence, # the value of self.valueType may not be a string. self.complex = True
def testConfigureQuerySeqs(self): ####################################################################### # Launch the component with the default execparams execparams = self.getPropertySet(kinds=("execparam",), modes=("readwrite", "writeonly"), includeNil=False) execparams = dict([(x.id, any.from_any(x.value)) for x in execparams]) self.launch(execparams) ####################################################################### # Simulate regular component startup # Verify that initialize nor configure throw errors self.comp_obj.initialize() values = [1,2,3,4,5] phrases = ['one','two','three','four','five'] phrase = 'testing' octetData = struct.pack('5b', *[x for x in values]) #octet data must be packed bytes flags = [True, False, True, False] values_r = copy.deepcopy(values) values_r.reverse() phrases_r = copy.deepcopy(phrases) phrases_r.reverse() phrase_r = ([x for x in phrase]) phrase_r.reverse() flags_r = copy.deepcopy(flags) flags_r.reverse() numTestRuns = 10 for x in range(numTestRuns): stringset = ossie.cf.CF.DataType(id='stringSeq', value=any.to_any(phrases)) stringset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.StringSeq) self.comp_obj.configure([stringset]) boolset = ossie.cf.CF.DataType(id='boolSeq', value=any.to_any(flags)) boolset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.BooleanSeq) self.comp_obj.configure([boolset]) ulongset = ossie.cf.CF.DataType(id='ulongSeq', value=any.to_any(values)) ulongset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.ULongSeq) self.comp_obj.configure([ulongset]) shortset = ossie.cf.CF.DataType(id='shortSeq', value=any.to_any(values)) shortset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.ShortSeq) self.comp_obj.configure([shortset]) floatset = ossie.cf.CF.DataType(id='floatSeq', value=any.to_any(values)) floatset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.FloatSeq) self.comp_obj.configure([floatset]) charset = ossie.cf.CF.DataType(id='charSeq', value=any.to_any(phrase)) charset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.CharSeq) self.comp_obj.configure([charset]) octetset = ossie.cf.CF.DataType(id='octetSeq', value=any.to_any(octetData)) octetset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.OctetSeq) self.comp_obj.configure([octetset]) ushortset = ossie.cf.CF.DataType(id='ushortSeq', value=any.to_any(values)) ushortset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.UShortSeq) self.comp_obj.configure([ushortset]) doubleset = ossie.cf.CF.DataType(id='doubleSeq', value=any.to_any(values)) doubleset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.DoubleSeq) self.comp_obj.configure([doubleset]) longset = ossie.cf.CF.DataType(id='longSeq', value=any.to_any(values)) longset.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.LongSeq) self.comp_obj.configure([longset]) longlongset = ossie.cf.CF.DataType(id='longlongSeq', value=any.to_any(values)) longlongset.value._t = tcInternal.typeCodeFromClassOrRepoId(PortTypes.LongLongSequence) self.comp_obj.configure([longlongset]) ulonglongset = ossie.cf.CF.DataType(id='ulonglongSeq', value=any.to_any(values)) ulonglongset.value._t = tcInternal.typeCodeFromClassOrRepoId(PortTypes.UlongLongSequence) self.comp_obj.configure([ulonglongset]) simple_list = self.comp_obj.query([ ossie.cf.CF.DataType(id=str('stringSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('boolSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('ulongSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('shortSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('floatSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('charSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('octetSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('ushortSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('doubleSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('longSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('longlongSeq'),value=any.to_any(None)), ossie.cf.CF.DataType(id=str('ulonglongSeq'),value=any.to_any(None)) ]) simple_dict = properties.props_to_dict(simple_list) #the onconfigure for the stringSeq is supposed to reverse the order of the phrases self.assertEquals(simple_dict['stringSeq'], phrases_r, msg=str(simple_dict['stringSeq']) + ' != ' + str(phrases_r) + ' for stringSeq') simple_dict.pop('stringSeq') #the onconfigure for the boolSeq is supposed to reverse the order of the flags self.assertEquals(simple_dict['boolSeq'], flags_r, msg=str(simple_dict['boolSeq']) + ' != ' + str(flags_r) + ' for boolSeq') simple_dict.pop('boolSeq') #the onconfigure for the charSeq is supposed to reverse the order of the phrase self.assertEquals([x for x in simple_dict['charSeq']], phrase_r, msg=str(simple_dict['charSeq']) + ' != ' + str(phrase_r) + ' for charSeq') simple_dict.pop('charSeq') #the onconfigure for the octetSeq is supposed to reverse the order of the phrase self.assertEquals([x for x in struct.unpack('5b', simple_dict['octetSeq'])], values_r, msg=str(struct.unpack('5b', simple_dict['octetSeq'])) + ' != ' + str(values_r) + ' for octetSeq') simple_dict.pop('octetSeq') #the rest of the onconfigures are supposed to reverse the values in the list for x in simple_dict: self.assertEquals(simple_dict[x], values_r, msg=str(simple_dict[x]) + ' != ' + str(values_r) + ' for ' + x)
def configureProp(compRef, propName, propValue): propRef = _CF.DataType(id=str(str(propName)), value=_any.to_any(None)) #try the query to see if we can get the valid type results = compRef.query([propRef]) if results != None: if results[0].value._t != _CORBA.TC_null: propRef.value._t = esults[0].value._t propRef.value._v = propValue compRef.configure([propRef]) return #if we couldn't find the type of the property, then we need #to try ones that might fit until one works applicableTypes = None if type(propValue) == list: strTypes = [_tcInternal.typeCodeFromClassOrRepoId(_CORBA.StringSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.CharSeq)] boolTypes = [_tcInternal.typeCodeFromClassOrRepoId(_CORBA.BooleanSeq)] longTypes = [_tcInternal.typeCodeFromClassOrRepoId(_CORBA.ULongSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.ShortSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.OctetSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.UShortSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.LongSeq), _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.LongLongSequence), _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.UlongLongSequence)] floatTypes = [_tcInternal.typeCodeFromClassOrRepoId(_CORBA.FloatSeq), _tcInternal.typeCodeFromClassOrRepoId(_CORBA.DoubleSeq)] if len(propValue) > 0: valueType = type(propValue[0]) else: applicableTypes = strListTypes + boolListTypes + longListTypes + floatListTypes else: strTypes = [getTypeCode('string'), getTypeCode('char')] boolTypes = [getTypeCode('boolean')] longTypes = [getTypeCode('ulong'), getTypeCode('short'), getTypeCode('octet'), getTypeCode('ushort'), getTypeCode('long'), getTypeCode('longlong'), getTypeCode('ulonglong')] floatTypes = [getTypeCode('float'), getTypeCode('double')] valueType = type(propValue) if not applicableTypes: if valueType == str: applicableTypes = strTypes elif valueType == bool: applicableTypes = boolTypes elif valueType == long: applicableTypes = longTypes elif valueType == float: applicableTypes = floatTypes else: raise Exception, 'Could not match "'+str(valueType)+'" to a valid CORBA type' passConfigure = False for propType in applicableTypes: propRef.value._t = propType propRef.value._v = propValue try: compRef.configure([propRef]) passConfigure = True break except: pass if not passConfigure: msg = 'Was not able to configure property: "'+str(propName)+'", trying the following types:\n' for propType in applicableTypes: msg += (' ' + str(propType) + '\n') raise Exception, msg
def test_AllPropTypeCallbacks(self): languages = ['Cpp', 'Python'] for lang in languages: self.launchApplication(lang) self.preconditions() res = self._app.query( [CF.DataType(id='simple_string', value=any.to_any(None))]) self._app.configure(res) res = self._app.query([]) self.checkValue(res, 'simple_string', '42', same=False) res = self._app.query([]) for r in res: if r.value._t == CORBA.TC_null: if r.id == 'simple_boolean': r.value = any.to_any(False) elif r.id == 'simple_char': r.value = any.to_any('o') r.value._t = CORBA.TC_char elif r.id == 'simple_string': r.value = any.to_any('foo') r.value._t = CORBA.TC_string elif r.id == 'simple_double': r.value = any.to_any(1.0) r.value._t = CORBA.TC_double elif r.id == 'simple_float': r.value = any.to_any(1.0) r.value._t = CORBA.TC_float elif r.id == 'simple_short': r.value = any.to_any(1) r.value._t = CORBA.TC_short elif r.id == 'simple_ushort': r.value = any.to_any(1) r.value._t = CORBA.TC_ushort elif r.id == 'simple_long': r.value = any.to_any(1) r.value._t = CORBA.TC_long elif r.id == 'simple_longlong': r.value = any.to_any(1) r.value._t = CORBA.TC_longlong elif r.id == 'simple_ulong': r.value = any.to_any(1) r.value._t = CORBA.TC_ulong elif r.id == 'simple_ulonglong': r.value = any.to_any(1) r.value._t = CORBA.TC_ulonglong elif r.id == 'simple_objref': r.value = any.to_any('o') r.value._t = CORBA.TC_string elif r.id == 'simple_octet': r.value = any.to_any(1) r.value._t = CORBA.TC_octet elif r.id == 'simple_sequence_boolean': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/BooleanSeq:1.0") elif r.id == 'simple_sequence_char': r.value = any.to_any('') r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/CharSeq:1.0") elif r.id == 'simple_sequence_double': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/DoubleSeq:1.0") elif r.id == 'simple_sequence_float': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/FloatSeq:1.0") elif r.id == 'simple_sequence_long': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/LongSeq:1.0") elif r.id == 'simple_sequence_longlong': r.value = any.to_any([]) r.value._t = _tcInternal.typeCodeFromClassOrRepoId( _PortTypes.LongLongSequence) elif r.id == 'simple_sequence_string': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/StringSeq:1.0") elif r.id == 'simple_sequence_objref': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/StringSeq:1.0") elif r.id == 'simple_sequence_octet': r.value = any.to_any('') r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/OctetSeq:1.0") elif r.id == 'simple_sequence_short': r.value = any.to_any([]) r.value._t = _tcInternal.typeCodeFromClassOrRepoId( CORBA.UShortSeq) elif r.id == 'simple_sequence_ulong': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/ULongSeq:1.0") elif r.id == 'simple_sequence_ulonglong': r.value = any.to_any([]) r.value._t = _tcInternal.typeCodeFromClassOrRepoId( _PortTypes.UlongLongSequence) elif r.id == 'simple_sequence_ushort': r.value = any.to_any([]) r.value._t = CORBA.TypeCode( "IDL:omg.org/CORBA/UShortSeq:1.0") if r.id == 'struct_vars': for item in r.value._v: if item.value._t != CORBA.TC_null: continue if item.id == 'struct_string': item.value = any.to_any('foo') item.value._t = CORBA.TC_string elif item.id == 'struct_boolean': item.value = any.to_any(False) elif item.id == 'struct_ulong': item.value = any.to_any(1) item.value._t = CORBA.TC_ulong elif item.id == 'struct_objref': item.value = any.to_any('o') item.value._t = CORBA.TC_string elif item.id == 'struct_short': item.value = any.to_any(1) item.value._t = CORBA.TC_short elif item.id == 'struct_float': item.value = any.to_any(1.0) item.value._t = CORBA.TC_float elif item.id == 'struct_octet': item.value = any.to_any(1) item.value._t = CORBA.TC_octet elif item.id == 'struct_char': item.value = any.to_any('o') item.value._t = CORBA.TC_char elif item.id == 'struct_ushort': item.value = any.to_any(1) item.value._t = CORBA.TC_ushort elif item.id == 'struct_double': item.value = any.to_any(1.0) item.value._t = CORBA.TC_double elif item.id == 'struct_long': item.value = any.to_any(1) item.value._t = CORBA.TC_long elif item.id == 'struct_longlong': item.value = any.to_any(1) item.value._t = CORBA.TC_longlong elif item.id == 'struct_ulonglong': item.value = any.to_any(1) item.value._t = CORBA.TC_ulonglong if type(r.value._v) == int or type(r.value._v) == long or type( r.value._v) == float: r.value._v = r.value._v + 1 elif r.value._t == CORBA.TC_char: r.value._v = 'o' elif type(r.value._v) == str: r.value._v = 'foo' elif type(r.value._v) == bool: r.value._v = False elif type(r.value._v) == list: if r.id == 'simple_sequence_string': r.value._v = ['foo'] elif r.id == 'simple_sequence_boolean': r.value._v = [False] elif r.id == 'simple_sequence_ulong': r.value._v = [1] elif r.id == 'simple_sequence_short': r.value._v = [1] elif r.id == 'simple_sequence_float': r.value._v = [1.0] elif r.id == 'simple_sequence_ushort': r.value._v = [1] elif r.id == 'simple_sequence_double': r.value._v = [1.0] elif r.id == 'simple_sequence_long': r.value._v = [1] elif r.id == 'simple_sequence_longlong': r.value._v = [1] elif r.id == 'simple_sequence_ulonglong': r.value._v = [1] if r.id == 'struct_seq': if r.value._v == []: seq_vars = CORBA.Any( CORBA.TypeCode("IDL:CF/Properties:1.0"), [ CF.DataType(id='struct_seq_string', value=CORBA.Any( CORBA.TC_string, 'foo')), CF.DataType(id='struct_seq_boolean', value=CORBA.Any( CORBA.TC_boolean, False)), CF.DataType(id='struct_seq_ulong', value=CORBA.Any(CORBA.TC_ulong, 1)), CF.DataType(id='struct_seq_objref', value=CORBA.Any( CORBA.TC_string, 'o')), CF.DataType(id='struct_seq_short', value=CORBA.Any(CORBA.TC_short, 1)), CF.DataType(id='struct_seq_float', value=CORBA.Any( CORBA.TC_float, 1.0)), CF.DataType(id='struct_seq_octet', value=CORBA.Any(CORBA.TC_octet, 1)), CF.DataType(id='struct_seq_char', value=CORBA.Any( CORBA.TC_char, 'o')), CF.DataType(id='struct_seq_ushort', value=CORBA.Any( CORBA.TC_ushort, 1)), CF.DataType(id='struct_seq_double', value=CORBA.Any( CORBA.TC_double, 1.0)), CF.DataType(id='struct_seq_long', value=CORBA.Any(CORBA.TC_long, 1)), CF.DataType(id='struct_seq_longlong', value=CORBA.Any( CORBA.TC_longlong, 1)), CF.DataType(id='struct_seq_ulonglong', value=CORBA.Any( CORBA.TC_ulonglong, 1)), ]) r = CF.DataType( id='struct_seq', value=CORBA.Any( CORBA.TypeCode("IDL:omg.org/CORBA/AnySeq:1.0"), [any.to_any(seq_vars)])) self._app.configure([r]) res = self._app.query([]) self.checkValue(res, 'simple_string', '42') self.checkValue(res, 'simple_boolean', True) self.checkValue(res, 'simple_ulong', 43) self.checkValue(res, 'simple_objref', '44') self.checkValue(res, 'simple_short', 45) self.checkValue(res, 'simple_float', 46.0) self.checkValue(res, 'simple_octet', 47) self.checkValue(res, 'simple_char', struct.pack('b', 48)) self.checkValue(res, 'simple_ushort', 49) self.checkValue(res, 'simple_double', 50.0) self.checkValue(res, 'simple_long', 51) self.checkValue(res, 'simple_longlong', 52) self.checkValue(res, 'simple_ulonglong', 53) self.checkValue(res, 'simple_sequence_string', '54') self.checkValue(res, 'simple_sequence_boolean', True) self.checkValue(res, 'simple_sequence_ulong', 55) # self.checkValue(res, 'simple_sequence_objref', '56') Broken in python self.checkValue(res, 'simple_sequence_short', 57) self.checkValue(res, 'simple_sequence_float', 58) # self.checkValue(res, 'simple_sequence_octet', struct.pack('B', 59)) Broken in python # self.checkValue(res, 'simple_sequence_char', struct.pack('b', 60)) Borken in python self.checkValue(res, 'simple_sequence_ushort', 61) self.checkValue(res, 'simple_sequence_double', 62) self.checkValue(res, 'simple_sequence_long', 63) self.checkValue(res, 'simple_sequence_longlong', 64) self.checkValue(res, 'simple_sequence_ulonglong', 65) self.checkValue(res, 'struct_vars', '66') self.checkValue(res, 'struct_seq', '67')
def __init__(self, id, valueType, compRef, defValue=None, mode='readwrite'): """ id - (string): the property ID valueType - (string): type of the property, must be in VALUE_TYPES, or can be struct compRef - (domainless.componentBase) - pointer to the component that owns this property mode - (string): mode for the property, must be in MODES This class inherits from list so that the property will behave as a list when the user wishes to manipulate it """ if valueType not in SCA_TYPES and valueType != 'structSeq': raise('"' + str(valueType) + '"' + ' is not a valid valueType, choose from\n ' + str(SCA_TYPES)) # Initialize the parent Property Property.__init__(self, id, type=valueType, compRef=compRef, mode=mode, action='external') self.defValue = defValue self.complex = False #try to set the value type in ref unless this is a sequence of structs if valueType != 'structSeq': self.valueType = valueType if self.valueType == "string": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.StringSeq) elif self.valueType == "boolean": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.BooleanSeq) elif self.valueType == "ulong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.ULongSeq) elif self.valueType == "short": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.ShortSeq) elif self.valueType == "float": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.FloatSeq) elif self.valueType == "char": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.CharSeq) elif self.valueType == "octet": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.OctetSeq) elif self.valueType == "ushort": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.UShortSeq) elif self.valueType == "double": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.DoubleSeq) elif self.valueType == "long": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_CORBA.LongSeq) elif self.valueType == "longlong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.LongLongSequence) elif self.valueType == "ulonglong": self.typecode = _tcInternal.typeCodeFromClassOrRepoId(_PortTypes.UlongLongSequence) elif self.valueType.find("complex") == 0: self.typecode = getCFSeqType(self.valueType) # It is important to have a means other than .find("complex") # to determine complexity, as in the case of a struct sequence, # the value of self.valueType may not be a string. self.complex = True # DEPRECATED: create the CF.DataType reference, change value to the correct type self.propRef = _CF.DataType(id=str(self.id), value=_any.to_any(None)) self.propRef.value._t = self.typecode
def testSeqs(self): ####################################################################### # Launch the component with the default execparams execparams = self.getPropertySet(kinds=("execparam",), modes=("readwrite", "writeonly"), includeNil=False) execparams = dict([(x.id, any.from_any(x.value)) for x in execparams]) self.launch(execparams) ####################################################################### # Simulate regular component startup # Verify that initialize nor configure throw errors self.comp_obj.initialize() consumerPort = MessageConsumerPort() self.eventPort = self.comp_obj.getPort('propEvent') self.eventPort.connectPort(consumerPort._this(), 'some_id') numericProps = {"eventShortSeq":CORBA.ShortSeq, "eventUlongSeq":CORBA.ULongSeq, "eventFloatSeq":CORBA.FloatSeq, "eventUshortSeq":CORBA.UShortSeq, "eventDoubleSeq":CORBA.DoubleSeq, "eventLongSeq":CORBA.LongSeq, "eventLonglongSeq":PortTypes.LongLongSequence, "eventUlonglongSeq":PortTypes.UlongLongSequence } for propID in numericProps: #test that an event is created for the first configure values = [1,2,3,4,5] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(numericProps[propID]) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that an event is not created if the value is not changed self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if event: self.fail("An event was generated for " + str(propID) + " when the value was not changed") #test that an event is created when the value is changed values = [1,2,3,4,6] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(numericProps[propID]) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that the configure worked properly ret = self.comp_obj.query([ossie.cf.CF.DataType(id=propID,value=any.to_any(None))])[0] self.assertEquals(ret.value.value(), values, msg='configure failed for ' + str(propID) + ', ' + str(ret.value.value()) + ' != ' + str(values)) ###NOW WE TEST THE REMAINING TYPES (eventBoolSeq, eventStringSeq, eventCharSeq, eventOctetSeq) #test that an event is created for the first configure propID = 'eventBoolSeq' values = [True, False, True, False] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.BooleanSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that an event is not created if the value is not changed self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if event: self.fail("An event was generated for " + str(propID) + " when the value was not changed") #test that an event is created when the value is changed values = [False, True, False, True] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.BooleanSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that the configure worked properly ret = self.comp_obj.query([ossie.cf.CF.DataType(id=propID,value=any.to_any(None))])[0] self.assertEquals(ret.value.value(), values, msg='configure failed for ' + str(propID) + ', ' + str(ret.value.value()) + ' != ' + str(values)) #test that an event is created for the first configure propID = 'eventStringSeq' values = ['one','two','three','four','five'] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.StringSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that an event is not created if the value is not changed self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if event: self.fail("An event was generated for " + str(propID) + " when the value was not changed") #test that an event is created when the value is changed values = ['one','two','three','four','six'] valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.StringSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that the configure worked properly ret = self.comp_obj.query([ossie.cf.CF.DataType(id=propID,value=any.to_any(None))])[0] self.assertEquals(ret.value.value(), values, msg='configure failed for ' + str(propID) + ', ' + str(ret.value.value()) + ' != ' + str(values)) #test that an event is created for the first configure propID = 'eventCharSeq' values = 'hello' valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.CharSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that an event is not created if the value is not changed self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if event: self.fail("An event was generated for " + str(propID) + " when the value was not changed") #test that an event is created when the value is changed values = 'goodbye' valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(values)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.CharSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that the configure worked properly ret = self.comp_obj.query([ossie.cf.CF.DataType(id=propID,value=any.to_any(None))])[0] self.assertEquals(str(ret.value.value()), values, msg='configure failed for ' + str(propID) + ', ' + str(ret.value.value()) + ' != ' + str(values)) #test that an event is created for the first configure propID = 'eventOctetSeq' values = [1,2,3,4,5] data = struct.pack('5b', *[x for x in values]) #octet data must be packed bytes valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(data)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.OctetSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that an event is not created if the value is not changed self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if event: self.fail("An event was generated for " + str(propID) + " when the value was not changed") #test that an event is created when the value is changed values = [1,2,3,4,6] data = struct.pack('5b', *[x for x in values]) #octet data must be packed bytes valueSet = ossie.cf.CF.DataType(id=propID, value=any.to_any(data)) valueSet.value._t = tcInternal.typeCodeFromClassOrRepoId(CORBA.OctetSeq) self.comp_obj.configure([valueSet]) event = consumerPort.getEvent() if not event: self.fail("No event was generated for " + str(propID) + " for value " + str(values)) #test that the configure worked properly ret = self.comp_obj.query([ossie.cf.CF.DataType(id=propID,value=any.to_any(None))])[0] self.assertEquals([x for x in struct.unpack('5b', ret.value.value())], values, msg='configure failed for ' + str(propID) + ', ' + str(ret.value.value()) + ' != ' + str(values))