コード例 #1
0
ファイル: CallExternal.cs プロジェクト: Puchaczov/TQL.RDL
        /// <summary>
        ///     Initialize object.
        /// </summary>
        /// <param name="obj">object on that method will be executed</param>
        /// <param name="info">method to execute</param>
        /// <param name="callParamsCount">Count of parameters passed from AST</param>
        /// <param name="partOfDate">Part of date</param>
        /// <param name="functionOccurenceAmount">Function occurence amount.</param>
        /// <param name="functionOrder">Function order</param>
        public CallExternal(object obj, MethodInfo info, int callParamsCount, PartOfDate partOfDate, int functionOccurenceAmount, int functionOrder)
        {
            _obj                     = obj;
            _info                    = info;
            _infoParameters          = _info.GetParameters();
            _withoutInjectParameters = _infoParameters.GetParametersWithoutAttribute <InjectTypeAttribute>();
            var toInjectParameters = _infoParameters.GetParametersWithAttribute <InjectTypeAttribute>();

            _toInjectAttributes      = toInjectParameters.Select(f => f.GetCustomAttribute <InjectTypeAttribute>()).ToArray();
            _callParamsCount         = callParamsCount;
            _partOfDate              = partOfDate;
            _functionOccurenceAmount = functionOccurenceAmount;
            _functionOrder           = functionOrder;
        }
コード例 #2
0
 /// <summary>
 ///     Initialize object.
 /// </summary>
 /// <param name="partOfDate">Part of date that will be modified.</param>
 /// <param name="value">Value that will be added to datetime.</param>
 public AddNumericToDatetime(PartOfDate partOfDate, int value)
 {
     _partOfDate = partOfDate;
     _value      = value;
 }
コード例 #3
0
        public int NRandomTime([InjectReferenceTime] DateTimeOffset referenceTime, [InjectPartOfDateType] PartOfDate type, [InjectOccurenceOrder] int index, [InjectOccurencesAmount] int count)
        {
            int minValue;
            var divisor = 0;

            switch (type)
            {
            case PartOfDate.Hours:
                if (_lastPartOfDayValue != -1 && _lastPartOfDayValue == referenceTime.Day && _randomizedValues.Count == count)
                {
                    return(_randomizedValues[index]);
                }
                else if (_lastPartOfDayValue != -1 && _lastPartOfDayValue != referenceTime.Day)
                {
                    _randomizedValues.Clear();
                }

                _lastPartOfDayValue = referenceTime.Day;
                minValue            = 0;
                divisor             = 24;
                break;

            case PartOfDate.Minutes:
                if (_lastPartOfDayValue != -1 && _lastPartOfDayValue == referenceTime.Hour && _randomizedValues.Count == count)
                {
                    return(_randomizedValues[index]);
                }
                else if (_lastPartOfDayValue != -1 && _lastPartOfDayValue != referenceTime.Hour)
                {
                    _randomizedValues.Clear();
                }

                _lastPartOfDayValue = referenceTime.Hour;
                minValue            = 0;
                divisor             = 60;
                break;

            case PartOfDate.Seconds:
                if (_lastPartOfDayValue != -1 && _lastPartOfDayValue == referenceTime.Minute && _randomizedValues.Count == count)
                {
                    return(_randomizedValues[index]);
                }
                else if (_lastPartOfDayValue != -1 && _lastPartOfDayValue != referenceTime.Minute)
                {
                    _randomizedValues.Clear();
                }

                _lastPartOfDayValue = referenceTime.Minute;
                minValue            = 0;
                divisor             = 60;
                break;

            case PartOfDate.Years:
                throw new NotSupportedException("years");

            case PartOfDate.Months:
                if (_lastPartOfDayValue != -1 && _lastPartOfDayValue == referenceTime.Year && _randomizedValues.Count == count)
                {
                    return(_randomizedValues[index]);
                }
                else if (_lastPartOfDayValue != -1 && _lastPartOfDayValue != referenceTime.Year)
                {
                    _randomizedValues.Clear();
                }

                _lastPartOfDayValue = referenceTime.Year;
                minValue            = 1;
                divisor             = 12;
                break;

            case PartOfDate.DaysOfMonth:
                if (_lastPartOfDayValue != -1 && _lastPartOfDayValue == referenceTime.Month && _randomizedValues.Count == count)
                {
                    return(_randomizedValues[index]);
                }
                else if (_lastPartOfDayValue != -1 && _lastPartOfDayValue != referenceTime.Month)
                {
                    _randomizedValues.Clear();
                }

                _lastPartOfDayValue = referenceTime.Month;
                minValue            = 1;
                divisor             = DateTime.DaysInMonth(referenceTime.Year, referenceTime.Month);
                break;

            default:
                throw new NotSupportedException(nameof(type));
            }

            var value = GetRandomValue(minValue, divisor);

            if (_randomizedValues.Count > index)
            {
                while (value == _randomizedValues[index])
                {
                    value = GetRandomValue(minValue, divisor);
                }
                _randomizedValues[index] = value;
            }
            else
            {
                if (index > 0)
                {
                    while (_randomizedValues.Contains(value))
                    {
                        value = GetRandomValue(minValue, divisor);
                    }
                }
                _randomizedValues.Add(value);
            }

            return(value);
        }