def test_null_string(): v = ua.Variant(None, ua.VariantType.String) b = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(b)) assert v.Value == v2.Value v = ua.Variant("", ua.VariantType.String) b = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(b)) assert v.Value == v2.Value
def test_variant_array_none(): v = ua.Variant(None, varianttype=ua.VariantType.Int32, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array v = ua.Variant(None, varianttype=ua.VariantType.Null, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array
def test_variant_array(): v = ua.Variant([1, 2, 3, 4, 5]) assert v.Value[1] == 2 # assert v.VarianType, ua.VariantType.Int64) # we do not care, we should aonly test for sutff that matter v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.Value == v2.Value assert v.VariantType == v2.VariantType now = datetime.utcnow() v = ua.Variant([now]) assert v.Value[0] == now assert v.VariantType == ua.VariantType.DateTime v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.Value == v2.Value assert v.VariantType == v2.VariantType
def test_variant_dimensions(): l = [[[1.0, 1.0, 1.0, 1.0], [2.0, 2.0, 2.0, 2.0], [3.0, 3.0, 3.0, 3.0]], [[5.0, 5.0, 5.0, 5.0], [7.0, 8.0, 9.0, 01.0], [1.0, 1.0, 1.0, 1.0]]] v = ua.Variant(l) assert [2, 3, 4] == v.Dimensions v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v == v2 assert v.Dimensions == v2.Dimensions # very special case l = [[[], [], []], [[], [], []]] v = ua.Variant(l, ua.VariantType.UInt32) assert [2, 3, 0] == v.Dimensions v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.Dimensions == v2.Dimensions assert v == v2
def test_custom_variant(): with pytest.raises(ua.UaError): v = ua.Variant(b"ljsdfljds", ua.VariantTypeCustom(89)) v = ua.Variant(b"ljsdfljds", ua.VariantTypeCustom(61)) v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.VariantType == v2.VariantType assert v == v2
def test_variant_array_dim(): v = ua.Variant([1, 2, 3, 4, 5, 6], dimensions=[2, 3]) assert v.Value[1] == 2 v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert _reshape(v.Value, (2, 3)) == v2.Value assert v.VariantType == v2.VariantType assert v.Dimensions == v2.Dimensions assert v2.Dimensions == [2, 3]
def test_variant_empty_list(): v = ua.Variant([], VariantType=ua.VariantType.Int32, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array assert v2.Dimensions is None v = ua.Variant([], VariantType=ua.VariantType.Int32, is_array=True, Dimensions=[0]) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array assert v2.Dimensions == [0]
def test_extension_object(): obj = ua.UserNameIdentityToken() obj.UserName = "******" obj.Password = b"pass" obj2 = extensionobject_from_binary(ua.utils.Buffer(extensionobject_to_binary(obj))) assert type(obj) == type(obj2) assert obj.UserName == obj2.UserName assert obj.Password == obj2.Password v1 = ua.Variant(obj) v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v1))) assert type(v1) == type(v2) assert v1.VariantType == v2.VariantType
def test_variant_array_none(): v = ua.Variant(None, VariantType=ua.VariantType.Int32, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array assert v2.Dimensions is None v = ua.Variant(None, VariantType=ua.VariantType.Null, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array assert v2.Dimensions is None v = ua.Variant(None, VariantType=ua.VariantType.Null, Dimensions=[0, 0]) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array assert v2.Dimensions == [0, 0]
def test_variant(): dv = ua.Variant(True, ua.VariantType.Boolean) assert dv.Value == True assert type(dv.Value) == bool now = datetime.utcnow() v = ua.Variant(now) assert v.Value == now assert v.VariantType == ua.VariantType.DateTime v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.Value == v2.Value assert v.VariantType == v2.VariantType # commonity method: assert v == ua.Variant(v)
def test_builtin_type_variant(): v = ua.Variant(ua.Int16(4)) assert v.VariantType == ua.VariantType.Int16 v = ua.Variant(ua.UInt64(4)) assert v.VariantType == ua.VariantType.UInt64 b = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(b)) assert v == v2 v = ua.Variant(ua.Byte(4)) assert v.VariantType == ua.VariantType.Byte v = ua.Variant(ua.ByteString(b"hj")) assert v.VariantType == ua.VariantType.ByteString v = ua.Variant(4, ua.Byte) assert v.VariantType == ua.VariantType.Byte v = ua.Variant(None, ua.String) assert v.VariantType == ua.VariantType.String
def test_variant_empty_list(): v = ua.Variant([], varianttype=ua.VariantType.Int32, is_array=True) data = variant_to_binary(v) v2 = variant_from_binary(ua.utils.Buffer(data)) assert v == v2 assert v2.is_array
def test_guid(): v = ua.Variant(uuid.uuid4(), ua.VariantType.Guid) v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.VariantType == v2.VariantType assert v == v2
def test_custom_variant_array(): v = ua.Variant([b"ljsdfljds", b"lkjsdljksdf"], ua.VariantTypeCustom(40)) v2 = variant_from_binary(ua.utils.Buffer(variant_to_binary(v))) assert v.VariantType == v2.VariantType assert v == v2