private double GetCredit(TimeSpan eftByDownloadTime, TimeSpan eftByFrameTime, SlotStatus status, BonusCalculationType calculateBonus) { if (CurrentProtein.IsUnknown) { return(0); } // Issue 125 if (calculateBonus.Equals(BonusCalculationType.DownloadTime)) { // Issue 183 if (status.Equals(SlotStatus.RunningAsync) || status.Equals(SlotStatus.RunningNoFrameTimes)) { return(ProductionCalculator.GetCredit(CurrentProtein, eftByFrameTime)); } return(ProductionCalculator.GetCredit(CurrentProtein, eftByDownloadTime)); } if (calculateBonus.Equals(BonusCalculationType.FrameTime)) { return(ProductionCalculator.GetCredit(CurrentProtein, eftByFrameTime)); } return(CurrentProtein.Credit); }
public void GetCredit_Test2() { var protein = new Protein { Credit = 700, PreferredDays = 3, MaximumDays = 5, KFactor = 26.4 }; Assert.AreEqual(13648.383, ProductionCalculator.GetCredit(protein, TimeSpan.FromMinutes(5 * 100))); }
public void GetCredit_Test1() { var protein = new Protein { Credit = 700, PreferredDays = 3, MaximumDays = 5, KFactor = 26.4 }; Assert.AreEqual(700, ProductionCalculator.GetCredit(protein, TimeSpan.Zero)); }
public override object Invoke(object[] args) { Debug.Assert(args.Length == 9); if (args.Any(x => x == null || Convert.IsDBNull(x))) { return(0.0); } var frameTime = TimeSpan.FromSeconds((long)args[0]); // unbox then cast to int var frames = (int)((long)args[1]); var baseCredit = (double)args[2]; var kFactor = (double)args[3]; var preferredDays = (double)args[4]; var maximumDays = (double)args[5]; DateTime downloadDateTime; DateTime.TryParseExact((string)args[6], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out downloadDateTime); DateTime completionDateTime; DateTime.TryParseExact((string)args[7], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out completionDateTime); var calcOption = (long)args[8]; TimeSpan unitTime = TimeSpan.Zero; switch (BonusCalculation) { case BonusCalculationType.FrameTime: unitTime = TimeSpan.FromSeconds(frameTime.TotalSeconds * frames); break; case BonusCalculationType.DownloadTime: unitTime = completionDateTime.Subtract(downloadDateTime); break; } if (calcOption != 0) { return(ProductionCalculator.GetCredit(baseCredit, kFactor, preferredDays, maximumDays, unitTime)); } return(ProductionCalculator.GetPPD(frameTime, frames, baseCredit, kFactor, preferredDays, maximumDays, unitTime)); }