in src/Azure.IIoT.OpcUa.Publisher.Testing/src/Utils/TestDataGenerator.cs [709:779]
private Variant GetRandomVariant(BuiltInType builtInType, bool isArray)
{
if (builtInType == BuiltInType.Null)
{
return Variant.Null;
}
var num = -1;
if (isArray)
{
num = _random.NextInt32(MaxArrayLength - 1);
}
else if (builtInType == BuiltInType.Variant)
{
num = 1;
}
if (num >= 0)
{
switch (builtInType)
{
case BuiltInType.Boolean:
return new Variant(GetRandomArray<bool>(num, true));
case BuiltInType.SByte:
return new Variant(GetRandomArray<sbyte>(num, true));
case BuiltInType.Byte:
return new Variant(GetRandomArray<byte>(num, true));
case BuiltInType.Int16:
return new Variant(GetRandomArray<short>(num, true));
case BuiltInType.UInt16:
return new Variant(GetRandomArray<ushort>(num, true));
case BuiltInType.Int32:
return new Variant(GetRandomArray<int>(num, true));
case BuiltInType.UInt32:
return new Variant(GetRandomArray<uint>(num, true));
case BuiltInType.Int64:
return new Variant(GetRandomArray<long>(num, true));
case BuiltInType.UInt64:
return new Variant(GetRandomArray<ulong>(num, true));
case BuiltInType.Float:
return new Variant(GetRandomArray<float>(num, true));
case BuiltInType.Double:
return new Variant(GetRandomArray<double>(num, true));
case BuiltInType.String:
return new Variant(GetRandomArray<string>(num, true));
case BuiltInType.DateTime:
return new Variant(GetRandomArray<DateTime>(num, true));
case BuiltInType.Guid:
return new Variant(GetRandomArray<Guid>(num, true));
case BuiltInType.ByteString:
return new Variant(GetRandomArray<byte[]>(num, true));
case BuiltInType.XmlElement:
return new Variant(GetRandomArray<XmlElement>(num, true));
case BuiltInType.NodeId:
return new Variant(GetRandomArray<NodeId>(num, true));
case BuiltInType.ExpandedNodeId:
return new Variant(GetRandomArray<ExpandedNodeId>(num, true));
case BuiltInType.QualifiedName:
return new Variant(GetRandomArray<QualifiedName>(num, true));
case BuiltInType.LocalizedText:
return new Variant(GetRandomArray<LocalizedText>(num, true));
case BuiltInType.StatusCode:
return new Variant(GetRandomArray<StatusCode>(num, true));
case BuiltInType.Variant:
return new Variant(GetRandomArray<Variant>(num, true));
case BuiltInType.ExtensionObject:
return new Variant(GetRandomArray<ExtensionObject>(num, true));
default:
throw new ArgumentException($"Unexpected type {builtInType} constructing variant");
}
}
return new Variant(GetRandom(builtInType));
}