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);
        }
Exemple #2
0
        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;
        }
Exemple #5
0
        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;
 }
Exemple #9
0
        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()}");
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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()}");
        }
Exemple #14
0
        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()}");
        }
Exemple #15
0
        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));
        }
Exemple #16
0
        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()}");
        }
Exemple #17
0
        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));
        }
Exemple #18
0
        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
            }));
        }
Exemple #19
0
        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
        }
Exemple #20
0
 public ActionResult Index(SumCalculator obj)
 {
     obj.result = obj.firstNum + obj.secondNum;
     return(View(obj));
 }
Exemple #21
0
        public void Calculate()
        {
            var result = SumCalculator.Calculate(1, 2);

            Assert.AreEqual(3, result);
        }
Exemple #22
0
 public void Setup()
 {
     _calculator = new SumCalculator();
 }