private object IncrementValue(TestVariable variable, double counter)
{
BuiltInType builtInType = TypeInfo.GetBuiltInType(variable.Variable.DataType, Session.TypeTree);
Range range = variable.EURange;
if (range == null)
{
switch (builtInType)
{
case BuiltInType.SByte:
{
range = new Range(SByte.MaxValue, 0);
break;
}
case BuiltInType.Byte:
{
range = new Range(Byte.MaxValue, 0);
break;
}
case BuiltInType.Int16:
{
range = new Range(Int16.MaxValue, 0);
break;
}
case BuiltInType.UInt16:
{
range = new Range(UInt16.MaxValue, 0);
break;
}
case BuiltInType.Integer:
case BuiltInType.Int32:
{
range = new Range(Int32.MaxValue, 0);
break;
}
default:
{
range = new Range(Int32.MaxValue, 0);
break;
}
}
}
if (counter > range.High)
{
counter = 0;
}
if (counter < range.Low)
{
counter = range.Low;
}
object value = TypeInfo.Cast(counter, builtInType);
if (variable.Variable.ValueRank < 0)
{
return value;
}
Array array = TypeInfo.CreateArray(builtInType, 3);
if (array.GetType().GetElementType() == typeof(Variant))
{
array.SetValue(new Variant(value), 0);
array.SetValue(new Variant(value), 1);
array.SetValue(new Variant(value), 2);
}
else
{
array.SetValue(value, 0);
array.SetValue(value, 1);
array.SetValue(value, 2);
}
return array;
}