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