protected override void Solve(out string answer) { Func <SumCalculator, string> format = (sc) => string.Format("n={0}, Sum of squares = {1}, Square of sum = {2}, Diff = {3}", sc.n, sc.SumOfSquares, sc.SquareOfSum, sc.Diff); SumCalculator test = new SumCalculator(1); foreach (int iterator in Enumerable.Range(2, 99)) { test = new SumCalculator(test); //var p = format(test); } var stringAnswer = format(test); string another = stringAnswer; SumCalculator method2Answer = new SumCalculator(100); string method2string = format(method2Answer); var compare = string.Compare(another, method2string); //both strings should be equal, if both methods work the same way. if (compare != 0) { throw new InvalidOperationException("Unit test failed. 2 methods for calculating the answer do not produce the same result."); } answer = string.Format("The difference between the sum of the squares of the first one hundred natural numbers and the square of the sum is: {0}.", method2string); }
public async Task <ActionResult> BalanceChart(string month) { var calculator = new SumCalculator(Db, await GetCurrentClient()); var monthParam = new Month(month); var incomes = new Dictionary <Month, decimal>(); var spendings = new Dictionary <Month, decimal>(); var months = new List <Month> { monthParam.IsCurrentMonth?monthParam.PreviousMonth.PreviousMonth.PreviousMonth.PreviousMonth : monthParam.PreviousMonth.PreviousMonth.PreviousMonth, monthParam.IsCurrentMonth ? monthParam.PreviousMonth.PreviousMonth.PreviousMonth : monthParam.PreviousMonth.PreviousMonth, monthParam.IsCurrentMonth ? monthParam.PreviousMonth.PreviousMonth : monthParam.PreviousMonth, monthParam.IsCurrentMonth ? monthParam.PreviousMonth : monthParam, monthParam.IsCurrentMonth ? monthParam : monthParam.NextMonth }; foreach (var m in months) { var calcResult = (await calculator.CalculateForMonth(m)).ToList(); incomes[m] = calcResult.Where(x => x.Key == Constants.IncomeCategory).Select(x => x.Value).Sum(); spendings[m] = calcResult.Where(x => x.Key != Constants.IncomeCategory).Select(x => x.Value).Sum(); } var result = from x in months orderby x.Date select new { month = x.Date.ToString("MMM yyyy"), income = incomes[x], spendings = -spendings[x] }; return(Json(result, JsonRequestBehavior.AllowGet)); }
public SumCalculator(SumCalculator previous) { this.n = previous.n + 1; this.SumOfSquares = previous.SumOfSquares + (this.n * this.n); //Take advantage of the fact that (a + b)^2 = a^2 + 2ab + b^2 this.Sum = previous.Sum + this.n; this.SquareOfSum = previous.SquareOfSum + (2 * previous.Sum * this.n) + (this.n * this.n); }
public int Calculate_SummandsGiven_CorrectResult(int a, int b) { SumCalculator sut = new SumCalculator(); int actual = sut.Calculate(a, b); return actual; }
public void LCPRightWayTest() { ICalculator calculator = new SumCalculator(Numbers); Assert.Equal(55, calculator.calculate()); calculator = new EvenSumCalculator(Numbers); Assert.Equal(36, calculator.calculate()); }
public SummaryMailRenderer( Db db, BudgetCalculator budgetCalculator, SumCalculator sumCalculator) { _sumCalculator = sumCalculator; _budgetCalculator = budgetCalculator; _db = db; }
// Act and Assert helper method private void ActAndAssert(int[] points, List <int> expected) { // Act var sumCalculator = new SumCalculator(points); var actual = (List <int>)sumCalculator.CalculateSums(); // Assert CollectionAssert.AreEqual(expected, actual, "Points not added correctly"); }
public SummaryMailModel( Db db, BudgetCalculator budgetCalculator, SumCalculator sumCalculator) { _sumCalculator = sumCalculator; _budgetCalculator = budgetCalculator; _db = db; }
static void Main(string[] args) { var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; Calculator sum = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sum.Calculate()}"); Console.WriteLine(); Calculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calculate()}"); }
public void TestCase() { var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; Calculator sum = new SumCalculator(numbers); Assert.AreEqual(sum.Calculate(), 40); EvenNumbersSumCalculator evenSum = new EvenNumbersSumCalculator(numbers); Assert.AreEqual(evenSum.Calculate(), 18); }
private static void SendMail(Db db, User user, Client client, ILogger logger) { logger?.Info("Rendering template and sending email to user '" + user.Email + "' ..."); var budgetCalculator = new BudgetCalculator(db, client); var sumCalculator = new SumCalculator(db, client); var renderer = new SummaryMailRenderer(db, budgetCalculator, sumCalculator); var mailer = new SendGridMailer(); var sender = new SummaryMailSender(renderer, mailer); sender.RenderAndSend(user); }
public void Work() { int[] numbers = Enumerable.Range(0, 400).ToArray(); ICalculateSumStrategy fastStrategy = new FastSumCalculateStrategy(); var sumCalculator = new SumCalculator(fastStrategy); sumCalculator.CalculateSumAndShowIntoConsole(numbers); ICalculateSumStrategy slowStrategy = new SlowSumCalculateStrategy(); sumCalculator.SetStrategy(slowStrategy); sumCalculator.CalculateSumAndShowIntoConsole(numbers); }
static void RunLSPExample() { var numbers = new[] { 5, 7, 9, 8, 1, 6, 4 }; Calculator sum = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sum.Calculate()}"); Console.WriteLine(); Calculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calculate()}"); }
private static void DoCalculatorExampleNotGood() { var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; SumCalculator sum = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sum.Calculate()}"); Console.WriteLine(""); EvenNumbersSumCalculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calculate()}"); }
public async Task <ActionResult> SpendingsChart(string month) { var calculator = new SumCalculator(Db, await GetCurrentClient()); var result = from x in await calculator.CalculateForMonth(new Month(month)) where x.Key != Constants.IncomeCategory orderby x.Value select new { amount = -x.Value, category = x.Key }; return(Json(result, JsonRequestBehavior.AllowGet)); }
public void LiskovTestCalc() { var numbers = new int[] { 2, 6, 8, 1, 5, 6, 4, 7 }; //SumCalculator sum = new SumCalculator(numbers); Calculator sum = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sum.Calcutate()}"); Console.WriteLine(); Calculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calcutate()}"); }
public void EvenSumCalculator() { //Arrange var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; //Act // 4) Excellent. Now we can start making calls towards these classes: //SumCalculator sum = new SumCalculator(numbers); //EvenNumbersSumCalculator evenSum = new EvenNumbersSumCalculator(numbers); Calculator sum = new SumCalculator(numbers); Calculator evenSum = new EvenNumbersSumCalculator(numbers); //Assert Assert.That(sum.Calculate(), Is.EqualTo(40)); Assert.That(evenSum.Calculate(), Is.EqualTo(18)); }
public async Task <ActionResult> SummaryMailPreview() { var currentUser = await GetCurrentUser(); var requestUrl = Request.Url; if (requestUrl == null) { throw new Exception("Request.Url is null. This should not be possible at this point."); } var budgetCalculator = new BudgetCalculator(Db, await GetCurrentClient()); var sumCalculator = new SumCalculator(Db, await GetCurrentClient()); var summaryMailRenderer = new SummaryMailRenderer(Db, budgetCalculator, sumCalculator); var summaryMail = await summaryMailRenderer.Render(currentUser); return(View(new SummaryMailPreviewViewModel { Html = summaryMail })); }
private static void Main(string[] args) { var line = string.Format($"\n{new string('=', 100)}\n"); #region SRP var report = new SolidPrinciples.InitialProject.WorkReport(); var reportRef = new SolidPrinciples.Refactoring.WorkReport(); var scheduler = new SolidPrinciples.Refactoring.Scheduler(); report.AddEntry(new SolidPrinciples.InitialProject.WorkReportEntry { ProjectCode = "123Ds", ProjectName = "Project1", SpentHours = 5 }); report.AddEntry(new SolidPrinciples.InitialProject.WorkReportEntry { ProjectCode = "987Fc", ProjectName = "Project1", SpentHours = 2 }); Console.WriteLine(report.ToString()); Console.WriteLine(line); reportRef.AddEntry(new SolidPrinciples.Refactoring.WorkReportEntry { ProjectCode = "123Ds", ProjectName = "Project1", SpentHours = 5 }); reportRef.AddEntry(new SolidPrinciples.Refactoring.WorkReportEntry { ProjectCode = "987Fc", ProjectName = "Project1", SpentHours = 2 }); Console.WriteLine(reportRef.ToString()); Console.WriteLine(line); scheduler.AddEntry(new SolidPrinciples.Refactoring.ScheduleTask { TaskId = 1, Content = "Do something now.", ExecuteOn = DateTime.Now.AddDays(5) }); scheduler.AddEntry(new SolidPrinciples.Refactoring.ScheduleTask { TaskId = 2, Content = "Don't forget to...", ExecuteOn = DateTime.Now.AddDays(2) }); Console.WriteLine(scheduler.ToString()); Console.WriteLine(line); var saver = new FileSaver(); saver.SaveToFile(@"Reports", "WorkReport.txt", reportRef); saver.SaveToFile(@"Schedulers", "Schedule.txt", scheduler); #endregion #region OCP // SalaryCalculator { var devReports = new List <DeveloperReport> { new DeveloperReport { Id = 1, Name = "Dev1", Level = "Senior developer", HourlyRate = 30.5, WorkingHours = 160 }, new DeveloperReport { Id = 2, Name = "Dev2", Level = "Junior developer", HourlyRate = 20, WorkingHours = 150 }, new DeveloperReport { Id = 3, Name = "Dev3", Level = "Senior developer", HourlyRate = 30.5, WorkingHours = 180 } }; var calculator = new SalaryCalculator(devReports); Console.WriteLine($"Sum of all the developer salaries is {calculator.CalculateTotalSalaries()} dollars"); } Console.WriteLine(line); // SalaryCalculatorRef { var devCalculations = new List <BaseSalaryCalculator> { new SeniorDevSalaryCalculator(new DeveloperReport { Id = 1, Name = "Dev1", Level = "Senior developer", HourlyRate = 30.5, WorkingHours = 160 }), new JuniorDevSalaryCalculator(new DeveloperReport { Id = 2, Name = "Dev2", Level = "Junior developer", HourlyRate = 20, WorkingHours = 150 }), new SeniorDevSalaryCalculator(new DeveloperReport { Id = 3, Name = "Dev3", Level = "Senior developer", HourlyRate = 30.5, WorkingHours = 180 }) }; var calculator = new SalaryCalculatorRefactor(devCalculations); Console.WriteLine($"Sum of all the developer salaries is {calculator.CalculateTotalSalaries()} dollars"); } Console.WriteLine(line); // MonitorFilter { var monitors = new List <ComputerMonitor> { new ComputerMonitor { Name = "Samsung S345", Screen = Screen.CurvedScreen, Type = MonitorType.OLED }, new ComputerMonitor { Name = "Philips P532", Screen = Screen.WideScreen, Type = MonitorType.LCD }, new ComputerMonitor { Name = "LG L888", Screen = Screen.WideScreen, Type = MonitorType.LED }, new ComputerMonitor { Name = "Samsung S999", Screen = Screen.WideScreen, Type = MonitorType.OLED }, new ComputerMonitor { Name = "Dell D2J47", Screen = Screen.CurvedScreen, Type = MonitorType.LCD } }; var filter = new MonitorFilter(); var lcdMonitors = filter.FilterByType(monitors, MonitorType.LCD); Console.WriteLine("All LCD monitors"); foreach (var monitor in lcdMonitors) { Console.WriteLine($"Name: {monitor.Name}, Type: {monitor.Type}, Screen: {monitor.Screen}"); } Console.WriteLine(line); var filterNew = new MonitorFilterNew(); var lcdMonitorsNew = filterNew.Filter(monitors, new MonitorTypeSpecification(MonitorType.LCD)); Console.WriteLine("All LCD monitors"); foreach (var monitor in lcdMonitorsNew) { Console.WriteLine($"Name: {monitor.Name}, Type: {monitor.Type}, Screen: {monitor.Screen}"); } Console.WriteLine(line); Console.WriteLine("All WideScreen Monitors"); var wideScreenMonitors = filterNew.Filter(monitors, new ScreenSpecification(Screen.WideScreen)); foreach (var monitor in wideScreenMonitors) { Console.WriteLine($"Name: {monitor.Name}, Type: {monitor.Type}, Screen: {monitor.Screen}"); } } #endregion #region LSP { Console.WriteLine(line); var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; //SumCalculator sum = new SumCalculator(numbers); Calculator sum = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sum.Calculate()}"); Console.WriteLine(); //EvenNumbersSumCalculator evenSum = new EvenNumbersSumCalculator(numbers); Calculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calculate()}"); // Problem //SumCalculator badEvenSum = new EvenNumbersSumCalculator(numbers); Calculator badEvenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"(Bad)The sum of all the even numbers: {badEvenSum.Calculate()}"); } #endregion #region ISP #endregion #region DIP { var empManager = new EmployeeManagerRef(); empManager.AddEmployee(new Employee { Name = "Leen", Gender = Gender.Female, Position = Position.Manager }); empManager.AddEmployee(new Employee { Name = "Mike", Gender = Gender.Male, Position = Position.Administrator }); var stats = new EmployeeStatisticsRef(empManager); Console.WriteLine($"Number of female managers in our company is: {stats.CountFemaleManagers()}"); } #endregion }
public ActionResult Index(SumCalculator obj) { obj.result = obj.firstNum + obj.secondNum; return(View(obj)); }
public void Calculate() { var result = SumCalculator.Calculate(1, 2); Assert.AreEqual(3, result); }
public void Setup() { _calculator = new SumCalculator(); }