private Variant GetRandomVariant()

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));
        }