This test is far too complicated but catches a lot of things...
(self)
| 129 | self.assertEqual(a3.get_attribute(ua.AttributeIds.ArrayDimensions).Value.Value, [1, 0]) |
| 130 | |
| 131 | def test_xml_ns(self): |
| 132 | """ |
| 133 | This test is far too complicated but catches a lot of things... |
| 134 | """ |
| 135 | ns_array = self.opc.get_namespace_array() |
| 136 | if len(ns_array) < 3: |
| 137 | self.opc.register_namespace("dummy_ns") |
| 138 | |
| 139 | ref_ns = self.opc.register_namespace("ref_namespace") |
| 140 | new_ns = self.opc.register_namespace("my_new_namespace") |
| 141 | bname_ns = self.opc.register_namespace("bname_namespace") |
| 142 | |
| 143 | o = self.opc.nodes.objects.add_object(0, "xmlns0") |
| 144 | o50 = self.opc.nodes.objects.add_object(50, "xmlns20") |
| 145 | o200 = self.opc.nodes.objects.add_object(200, "xmlns200") |
| 146 | onew = self.opc.nodes.objects.add_object(new_ns, "xmlns_new") |
| 147 | vnew = onew.add_variable(new_ns, "xmlns_new_var", 9.99) |
| 148 | o_no_export = self.opc.nodes.objects.add_object(ref_ns, "xmlns_parent") |
| 149 | v_no_parent = o_no_export.add_variable(new_ns, "xmlns_new_var_no_parent", 9.99) |
| 150 | o_bname = onew.add_object("ns={0};i=4000".format(new_ns), "{0}:BNAME".format(bname_ns)) |
| 151 | |
| 152 | nodes = [o, o50, o200, onew, vnew, v_no_parent, o_bname] |
| 153 | self.opc.export_xml(nodes, "tmp_test_export-ns.xml") |
| 154 | # delete node and change index og new_ns before re-importing |
| 155 | self.opc.delete_nodes(nodes) |
| 156 | ns_node = self.opc.get_node(ua.NodeId(ua.ObjectIds.Server_NamespaceArray)) |
| 157 | nss = ns_node.get_value() |
| 158 | nss.remove("my_new_namespace") |
| 159 | # nss.remove("ref_namespace") |
| 160 | nss.remove("bname_namespace") |
| 161 | ns_node.set_value(nss) |
| 162 | new_ns = self.opc.register_namespace("my_new_namespace_offsett") |
| 163 | new_ns = self.opc.register_namespace("my_new_namespace") |
| 164 | |
| 165 | new_nodes = self.opc.import_xml("tmp_test_export-ns.xml") |
| 166 | |
| 167 | for i in [o, o50, o200]: |
| 168 | i.get_browse_name() |
| 169 | with self.assertRaises(uaerrors.BadNodeIdUnknown): |
| 170 | onew.get_browse_name() |
| 171 | |
| 172 | # since my_new_namesspace2 is referenced byt a node it should have been reimported |
| 173 | nss = self.opc.get_namespace_array() |
| 174 | self.assertIn("bname_namespace", nss) |
| 175 | # get index of namespaces after import |
| 176 | new_ns = self.opc.register_namespace("my_new_namespace") |
| 177 | bname_ns = self.opc.register_namespace("bname_namespace") |
| 178 | |
| 179 | onew.nodeid.NamespaceIndex = new_ns |
| 180 | onew.get_browse_name() |
| 181 | vnew2 = onew.get_children()[0] |
| 182 | self.assertEqual(new_ns, vnew2.nodeid.NamespaceIndex) |
| 183 | |
| 184 | def test_xml_float(self): |
| 185 | o = self.opc.nodes.objects.add_variable(2, "xmlfloat", 5.67) |
nothing calls this directly
no test coverage detected