def test_string_to_variant_status_code(self): s_statuscode = "Good" statuscode = ua.StatusCode(ua.StatusCodes.Good) s_statuscode2 = "Uncertain" statuscode2 = ua.StatusCode(ua.StatusCodes.Uncertain) self.assertEqual(string_to_val(s_statuscode, ua.VariantType.StatusCode), statuscode) self.assertEqual(string_to_val(s_statuscode2, ua.VariantType.StatusCode), statuscode2)
def test_string_to_variant_status_code(self): s_statuscode = "Good" statuscode = ua.StatusCode(ua.StatusCodes.Good) s_statuscode2 = "Uncertain" statuscode2 = ua.StatusCode(ua.StatusCodes.Uncertain) self.assertEqual(string_to_val(s_statuscode, ua.VariantType.StatusCode), statuscode) self.assertEqual(string_to_val(s_statuscode2, ua.VariantType.StatusCode), statuscode2)
def test_string_to_variant_datetime_string(self): s_arr_datetime = "[2014-05-6, 2016-10-3]" arr_string = ['2014-05-6', '2016-10-3'] arr_datetime = [datetime(2014, 5, 6), datetime(2016, 10, 3)] s_datetime = "2014-05-3" self.assertEqual(val_to_string(arr_string), s_arr_datetime) self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.String), arr_string) self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.DateTime), arr_datetime )
def test_string_to_variant_datetime_string(self): s_arr_datetime = "[2014-05-6, 2016-10-3]" arr_string = ['2014-05-6', '2016-10-3'] arr_datetime = [datetime(2014, 5, 6), datetime(2016, 10, 3)] s_datetime = "2014-05-3" self.assertEqual(val_to_string(arr_string), s_arr_datetime) self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.String), arr_string) self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.DateTime), arr_datetime)
def test_string_to_variant_int(self): s_arr_uint = "[1, 2, 3, 4]" arr_uint = [1, 2, 3, 4] s_uint = "1" self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt32), arr_uint) self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt16), arr_uint) self.assertEqual(val_to_string(arr_uint), s_arr_uint)
def test_string_to_variant_int(self): s_arr_uint = "[1, 2, 3, 4]" arr_uint = [1, 2, 3, 4] s_uint = "1" self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt32), arr_uint) self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt16), arr_uint) self.assertEqual(val_to_string(arr_uint), s_arr_uint)
def _set_member_data(self, data, editor, model, idx): val = string_to_val(editor.text(), data.uatype) data.value = val model.setItemData(idx, {Qt.DisplayRole: editor.text(), Qt.UserRole: data}) setattr(data.obj, data.name, val) attr_data = self._get_attr_data(idx, model) self._write_attr(attr_data)
def test_string_to_variant_localized_text(self): string = "_This is my string" # string = "_This is my nøåæ"FIXME: does not work with python2 ?!?! obj = ua.LocalizedText(string) self.assertEqual(string_to_val(string, ua.VariantType.LocalizedText), obj) self.assertEqual(val_to_string(obj), string)
def _set_member_data(self, data, editor, model, idx): val = string_to_val(editor.text(), data.uatype) data.value = val model.setItemData(idx, {Qt.DisplayRole: editor.text(), Qt.UserRole: data}) setattr(data.obj, data.name, val) attr_data = self._get_attr_data(idx, model) self._write_attr(attr_data)
def test_string_to_variant_nodeid(self): s_arr_nodeid = "[ns=2;i=56, i=45]" arr_nodeid = [ ua.NodeId.from_string("ns=2;i=56"), ua.NodeId.from_string("i=45") ] s_nodeid = "i=45" self.assertEqual(string_to_val(s_arr_nodeid, ua.VariantType.NodeId), arr_nodeid)
def write(self): try: uatype = self.node.get_data_type_as_variant_type() data = string_to_val(self.ui.writeValue.text(), uatype) dv = ua.DataValue(ua.Variant(data, varianttype=uatype)) self.node.set_value(dv) except Exception as ex: self.log.append(str(ex)) finally: self.accept()
def test_string_to_val_xml_element(self): string = "<p> titi toto </p>" obj = ua.XmlElement(string) self.assertEqual(string_to_val(string, ua.VariantType.XmlElement), obj) self.assertEqual(val_to_string(obj), string) b = obj.to_binary() obj2 = obj.from_binary(ua.utils.Buffer(b)) self.assertEqual(obj, obj2)
def test_string_to_val_xml_element(self): string = "<p> titi toto </p>" obj = ua.XmlElement(string) self.assertEqual(string_to_val(string, ua.VariantType.XmlElement), obj) self.assertEqual(val_to_string(obj), string) b = struct_to_binary(obj) obj2 = struct_from_binary(ua.XmlElement, ua.utils.Buffer(b)) self.assertEqual(obj, obj2)
def _set_attribute_data(self, data, editor, model, idx): if data.attr is ua.AttributeIds.Value: #for value we checkd data type from the variable data type # this is more robust try: data.uatype = self.attrs_widget.current_node.get_data_type_as_variant_type( ) except Exception as ex: logger.exception("Could get primitive type of variable %s", self.attrs_widget.current_node) self.error.emit(ex) raise if data.attr == ua.AttributeIds.NodeClass: data.value = ua.NodeClass[editor.currentText()] text = editor.currentText() elif data.attr == ua.AttributeIds.ValueRank: data.value = ua.ValueRank[editor.currentText()] text = editor.currentText() elif data.attr == ua.AttributeIds.DataType: data.value = editor.get_node().nodeid text = data_type_to_string(data.value) elif data.attr in (ua.AttributeIds.AccessLevel, ua.AttributeIds.UserAccessLevel, ua.AttributeIds.WriteMask, ua.AttributeIds.UserWriteMask, ua.AttributeIds.EventNotifier): data.value = editor.get_byte() text = enum_to_string(data.attr, data.value) else: if isinstance(editor, QComboBox): text = editor.currentText() else: text = editor.text() data.value = string_to_val(text, data.uatype) model.setItemData(idx, {Qt.DisplayRole: text, Qt.UserRole: data}) self._write_attr(data) if isinstance(data.value, list): # we need to refresh children item = self.attrs_widget.model.itemFromIndex(idx.sibling(0, 0)) self.attrs_widget.refresh_list(item, data.value, data.uatype)
def _set_attribute_data(self, data, editor, model, idx): if data.attr is ua.AttributeIds.Value: #for value we checkd data type from the variable data type # this is more robust try: data.uatype = self.attrs_widget.current_node.get_data_type_as_variant_type() except Exception as ex: logger.exception("Could get primitive type of variable %s", self.attrs_widget.current_node) self.error.emit(ex) raise if data.attr == ua.AttributeIds.NodeClass: data.value = ua.NodeClass[editor.currentText()] text = editor.currentText() elif data.attr == ua.AttributeIds.ValueRank: data.value = ua.ValueRank[editor.currentText()] text = editor.currentText() elif data.attr == ua.AttributeIds.DataType: data.value = editor.get_node().nodeid text = data_type_to_string(data.value) elif data.attr in (ua.AttributeIds.AccessLevel, ua.AttributeIds.UserAccessLevel, ua.AttributeIds.WriteMask, ua.AttributeIds.UserWriteMask, ua.AttributeIds.EventNotifier): data.value = editor.get_byte() text = enum_to_string(data.attr, data.value) else: if isinstance(editor, QComboBox): text = editor.currentText() else: text = editor.text() data.value = string_to_val(text, data.uatype) model.setItemData(idx, {Qt.DisplayRole: text, Qt.UserRole: data}) self._write_attr(data) if isinstance(data.value, list): # we need to refresh children item = self.attrs_widget.model.itemFromIndex(idx.sibling(0, 0)) self.attrs_widget.refresh_list(item, data.value, data.uatype)
def _set_list_data(self, data, editor, model, idx): text = editor.text() data.mylist[data.idx] = string_to_val(text, data.uatype) model.setItemData(idx, {Qt.DisplayRole: text, Qt.UserRole: data}) attr_data = self._get_attr_data(idx, model) self._write_attr(attr_data)
def test_string_to_variant_qname(self): string = "2:name" obj = ua.QualifiedName("name", 2) self.assertEqual(string_to_val(string, ua.VariantType.QualifiedName), obj) self.assertEqual(val_to_string(obj), string)
def test_string_to_variant_float(self): s_arr_float = "[1.1, 2.1, 3, 4.0]" arr_float = [1.1, 2.1, 3, 4.0] s_float = "1.9" self.assertEqual(string_to_val(s_float, ua.VariantType.Float), 1.9) self.assertEqual(val_to_string(arr_float), s_arr_float)
def test_string_to_variant_localized_text(self): string = "_This is my string" #string = "_This is my nøåæ"FIXME: does not work with python2 ?!?! obj = ua.LocalizedText(string) self.assertEqual(string_to_val(string, ua.VariantType.LocalizedText), obj) self.assertEqual(val_to_string(obj), string)
def ua_type_to_python(val, uatype_as_str): """ Converts a string value to a python value according to ua_utils. """ return ua_utils.string_to_val(val, getattr(ua.VariantType, uatype_as_str))
def test_string_to_variant_qname(self): string = "2:name" obj = ua.QualifiedName("name", 2) self.assertEqual(string_to_val(string, ua.VariantType.QualifiedName), obj) self.assertEqual(val_to_string(obj), string)
def _set_list_data(self, data, editor, model, idx): text = editor.text() data.mylist[data.idx] = string_to_val(text, data.uatype) model.setItemData(idx, {Qt.DisplayRole: text, Qt.UserRole: data}) attr_data = self._get_attr_data(idx, model) self._write_attr(attr_data)
def test_string_to_variant_nodeid(self): s_arr_nodeid = "[ns=2;i=56, i=45]" arr_nodeid = [ua.NodeId.from_string("ns=2;i=56"), ua.NodeId.from_string("i=45")] s_nodeid = "i=45" self.assertEqual(string_to_val(s_arr_nodeid, ua.VariantType.NodeId), arr_nodeid)
def ua_type_to_python(val, uatype_as_str): """ Converts a string value to a python value according to ua_utils. """ return ua_utils.string_to_val(val, getattr(ua.VariantType, uatype_as_str))
def test_string_to_variant_float(self): s_arr_float = "[1.1, 2.1, 3, 4.0]" arr_float = [1.1, 2.1, 3, 4.0] s_float = "1.9" self.assertEqual(string_to_val(s_float, ua.VariantType.Float), 1.9) self.assertEqual(val_to_string(arr_float), s_arr_float)