public void ShouldReturn18b() { var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; Calculator sum = new EvenNumbersSumCalculator(numbers); Assert.AreEqual(sum.Calculate(), 18); }
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); }
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 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)); }
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 }
static void Main(string[] args) { // ------------- SRP -------------------- var report = new WorkReport(); report.AddEntry(new WorkReportEntry { ProjectCode = "123Ds", ProjectName = "Project1", SpentHours = 5 }); report.AddEntry(new WorkReportEntry { ProjectCode = "987Fc", ProjectName = "Project2", SpentHours = 3 }); Console.WriteLine(report.ToString()); Console.WriteLine(); // ------------- OCP -------------------- var devReports = 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 SalaryCalculator(devReports); Console.WriteLine($"Sum of all the developer salaries is {calculator.CalculateTotalSalaries()} dollars"); Console.WriteLine(); // ------------- LSP -------------------- var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 }; Calculator sumCalculator = new SumCalculator(numbers); Console.WriteLine($"The sum of all the numbers: {sumCalculator.Calculate()}"); Calculator evenSum = new EvenNumbersSumCalculator(numbers); Console.WriteLine($"The sum of all the even numbers: {evenSum.Calculate()}"); Console.WriteLine(); // ------------- ISP -------------------- ICar car = new MultiFunctionalCar(); car.Drive(); IAirplane airplane = new MultiFunctionalCar(); airplane.Fly(); Console.WriteLine(); // ------------- DIP -------------------- var empManager = new EmployeeManager(); empManager.AddEmployee(new Employee { Name = "Leen", Gender = Gender.Female, Position = Position.Manager }); empManager.AddEmployee(new Employee { Name = "Mike", Gender = Gender.Male, Position = Position.Administrator }); empManager.AddEmployee(new Employee { Name = "Lina", Gender = Gender.Female, Position = Position.Administrator }); var empAdmin = new EmployeeAdmin(); empAdmin.AddEmployee(new Employee { Name = "Lina", Gender = Gender.Female, Position = Position.Administrator }); var stats = new EmployeeStatistics(empManager); var stats1 = new EmployeeStatistics(empAdmin); Console.WriteLine($"Number of female managers in our company is: {stats.CountFemaleManagers()}"); Console.WriteLine($"Number of female managers in our company is: {stats1.CountFemaleAdmins()}"); int k = 5; int f = k += 1; Console.WriteLine(f); }