Beispiel #1
0
        public void ShouldReturn18b()
        {
            var numbers = new int[] { 5, 7, 9, 8, 1, 6, 4 };

            Calculator sum = new EvenNumbersSumCalculator(numbers);

            Assert.AreEqual(sum.Calculate(), 18);
        }
Beispiel #2
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()}");
        }
Beispiel #3
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);
        }
        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()}");
        }
Beispiel #5
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()}");
        }
Beispiel #6
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()}");
        }
Beispiel #7
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));
        }
Beispiel #8
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
        }
Beispiel #9
0
        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);
        }