public DefaultRateEvaluator(RateEvaluatorOptions options, ILogger <DefaultRateEvaluator> logger, INotificationManager notificationManager, IRates rateFatcher, IDataStore dataStore) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); NotificationManager = notificationManager ?? throw new ArgumentNullException(nameof(notificationManager)); _rateFatcher = rateFatcher ?? throw new ArgumentNullException(nameof(rateFatcher)); _dataStore = dataStore ?? throw new ArgumentNullException(nameof(dataStore)); _options = options ?? throw new ArgumentNullException(nameof(options)); _options.CloseUIUrl += (_options.CloseUIUrl.Contains("?") ? "&" : "?"); }
public void Should_return_the_same_amount_when_target_currency_is_same() { Currency eurCurrency = new Currency("EUR"); Amount eurAmount = new Amount(10, eurCurrency); IRates rates = Substitute.For <IRates>(); Converter converter = new Converter(rates); Amount convertedAmount = converter.Convert(eurAmount, eurCurrency); Amount expectedAmount = new Amount(10, eurCurrency); Check.That(convertedAmount).IsEqualTo(expectedAmount); }
public void Should_convert_the_amount_when_target_currency_is_different_triangulation() { Currency cadCurrency = new Currency("CAD"); Currency eurCurrency = new Currency("EUR"); Amount eurAmount = new Amount(10, eurCurrency); IRates rates = Substitute.For <IRates>(); Rate eurCadRate = new Rate(1.5m); rates.GetRateOf(cadCurrency).Returns(eurCadRate); Converter converter = new Converter(rates); Amount convertedAmount = converter.Convert(eurAmount, cadCurrency); Amount expectedAmount = new Amount(15, cadCurrency); Check.That(convertedAmount).IsEqualTo(expectedAmount); }
public void Should_convert_the_amount_when_target_currency_is_different() { Currency usdCurrency = new Currency("USD"); Currency eurCurrency = new Currency("EUR"); Amount eurAmount = new Amount(10, eurCurrency); IRates rates = Substitute.For <IRates>(); var eurUsdRate = new Rate(1.14m); rates.GetRateOf(usdCurrency).Returns(eurUsdRate); Converter converter = new Converter(rates); Amount convertedAmount = converter.Convert(eurAmount, usdCurrency); Amount expectedAmount = new Amount(11.4m, usdCurrency); Check.That(convertedAmount).IsEqualTo(expectedAmount); }
public void Setup() { _options = new RateEvaluatorOptions { CloseOffsetPercentage = 0.26f, NotificationTarget = TargetEmail, OpenAmount = 10, OpenHour = DateTime.UtcNow.Hour }; var logger = Substitute.For <ILogger <DefaultRateEvaluator> >(); _notificationManager = Substitute.For <INotificationManager>(); _rateFetcher = Substitute.For <IRates>(); _rateFetcher.GetRateAsync(Currency.EUR, Currency.USD).Returns(Task.FromResult(2f)); _position = Substitute.For <IPosition>(); var store = Substitute.For <IDataStore>(); store.Position.Returns(_position); _underTest = new DefaultRateEvaluator(_options, logger, _notificationManager, _rateFetcher, store); }
public RatesController(IRates rates) { _rates = rates; }
/// <summary> /// Add Rates object to the Rates IEnumerable /// </summary> /// <param name="r"></param> /// <returns></returns> public ShipmentFluent <T> AddRates(IRates r) { _shipment.AddRates(r); return(this); }
public RatesList(IRates Irate) { rates = Irate.rates(); }
/// <summary> /// Add Rates object to the Rates IEnumerable /// </summary> /// <param name="r"></param> /// <returns></returns> virtual public IRates AddRates(IRates r) { return(ModelHelper.AddToEnumerable <IRates, Rates>(r, () => Rates, (x) => Rates = x)); }
public Converter(IRates rates) { _rates = rates; }
public static decimal CalculateFare(int minutesAbove6, decimal milesBelow6, DateTime startTime, IRates rates) { decimal fare = rates.InitialEntry + rates.StateTaxSurcharge; DateTime endTime = startTime.AddMinutes(minutesAbove6); if (DateTimeHelper.TimeIsInBetween(startTime, rates.NightStartHours, rates.NightEndHours)) { fare += rates.NightSurcharge; } else if (DateTimeHelper.TimeIsInBetween(endTime, rates.NightStartHours, rates.NightEndHours) || DateTimeHelper.WillTimeBeReached(endTime, minutesAbove6, rates.NightStartHours)) { fare += rates.NightSurcharge; } if (!startTime.IsWeekend() && DateTimeHelper.TimeIsInBetween(startTime, rates.PeakStartHours, rates.PeakEndHours)) { fare += rates.PeakWeekdaySurcharge; } else if (!endTime.IsWeekend() && (DateTimeHelper.TimeIsInBetween(endTime, rates.PeakStartHours, rates.PeakEndHours) || DateTimeHelper.WillTimeBeReached(endTime, minutesAbove6, rates.PeakStartHours))) { fare += rates.PeakWeekdaySurcharge; } decimal distanceUnits = milesBelow6 / DistanceUnitsOfMile; fare += (distanceUnits + minutesAbove6) * rates.BaseUnitRate; return(fare); }
/// <summary> /// Create the default requests /// </summary> /// <param name="path">The path we want to watch</param> /// <param name="recursive">Recursively watch or not.</param> /// <param name="rates">The various refresh rates</param> public Request(string path, bool recursive, IRates rates) { Path = path ?? throw new ArgumentNullException(nameof(path)); Recursive = recursive; Rates = rates ?? throw new ArgumentNullException(nameof(rates)); }
public ContreValoCalculator(IRates rates) { this.rates = rates; }