using System;

namespace QC.QTMDotNetKernelInterface;

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
public class QTMParameter : Attribute
{
	private string unit = "";

	private string description = "";

	private string constraints = "";

	private DisplayHints displayHint;

	private string defaultValue = "";

	private string lowerLimit = "";

	private string upperLimit = "";

	private ParameterIOType parameterType;

	private string testList = "";

	private int numberOfElements = -1;

	private string argumentName = "";

	private string displayName = "";

	private string parentName = "";

	private bool isEditableInTestPlan;

	public string ArgumentName
	{
		get
		{
			return argumentName;
		}
		set
		{
			argumentName = value;
		}
	}

	public string DisplayName
	{
		get
		{
			return displayName;
		}
		set
		{
			displayName = value;
		}
	}

	public string UnitOfMeasure
	{
		get
		{
			return unit;
		}
		set
		{
			unit = value;
		}
	}

	public string Description
	{
		get
		{
			return description;
		}
		set
		{
			description = value;
		}
	}

	public string Constraints
	{
		get
		{
			return constraints;
		}
		set
		{
			constraints = value;
		}
	}

	public DisplayHints DisplayHint
	{
		get
		{
			return displayHint;
		}
		set
		{
			displayHint = value;
		}
	}

	public string DefaultValue
	{
		get
		{
			return defaultValue;
		}
		set
		{
			defaultValue = value;
		}
	}

	public ParameterIOType IOType
	{
		get
		{
			return parameterType;
		}
		set
		{
			parameterType = value;
		}
	}

	public string LowerLimit
	{
		get
		{
			return lowerLimit;
		}
		set
		{
			lowerLimit = value;
		}
	}

	public string UpperLimit
	{
		get
		{
			return upperLimit;
		}
		set
		{
			upperLimit = value;
		}
	}

	public string TestList
	{
		get
		{
			return testList;
		}
		set
		{
			testList = value;
		}
	}

	public int NumberOfElements
	{
		get
		{
			return numberOfElements;
		}
		set
		{
			numberOfElements = value;
		}
	}

	public string ParentName
	{
		get
		{
			return parentName;
		}
		set
		{
			parentName = value;
		}
	}

	public bool IsEditableInTestPlan
	{
		get
		{
			return isEditableInTestPlan;
		}
		set
		{
			isEditableInTestPlan = value;
		}
	}

	public bool CanEditResultValue { get; set; }

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit, string unit, string description, string constraints, DisplayHints displayHint)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.description = description;
		this.unit = unit;
		this.constraints = constraints;
		this.displayHint = displayHint;
	}

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit, string unit, string description)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.unit = unit;
		this.description = description;
	}

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit, string unit)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.unit = unit;
	}

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
	}

	public QTMParameter(string argumentName, string defaultValue)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
	}

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit, string unit, string description, string constraints, DisplayHints displayHint, string parentName)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.description = description;
		this.unit = unit;
		this.constraints = constraints;
		this.displayHint = displayHint;
		this.parentName = parentName;
	}

	public QTMParameter(string argumentName, string defaultValue, string lowerLimit, string upperLimit, string unit, string description, string parentName)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.unit = unit;
		this.description = description;
		this.parentName = parentName;
	}

	public QTMParameter(string argumentName, string defaultValue, string parentName)
	{
		this.argumentName = argumentName;
		this.defaultValue = defaultValue;
		this.parentName = parentName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string unit, string description, string constraints, DisplayHints displayHint, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.unit = unit;
		this.description = description;
		this.constraints = constraints;
		this.displayHint = displayHint;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string unit, string description, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.unit = unit;
		this.description = description;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string unit, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.unit = unit;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType)
	{
		this.parameterType = parameterType;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string unit, string description, string constraints, DisplayHints displayHint, string parentName, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.unit = unit;
		this.description = description;
		this.constraints = constraints;
		this.displayHint = displayHint;
		this.parentName = parentName;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string lowerLimit, string upperLimit, string testList, string unit, string description, string parentName, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.lowerLimit = lowerLimit;
		this.upperLimit = upperLimit;
		this.testList = testList;
		this.unit = unit;
		this.description = description;
		this.parentName = parentName;
		this.displayName = displayName;
	}

	public QTMParameter(ParameterIOType parameterType, string defaultValue, string parentName, string displayName = "")
	{
		this.parameterType = parameterType;
		this.defaultValue = defaultValue;
		this.parentName = parentName;
		this.displayName = displayName;
	}

	public QTMParameter()
	{
	}
}
