Exemple #1
0
        public void 算薪水()
        {
            var salaryFormula = new SalaryFormula();
            var test          = new SalaryCalculator(salaryFormula);

            test.Calculate(10, 10, 0);
        }
        public void Calculate_WhenGrossPackageIsValid_ReturnsCorrectSalary(decimal grossPackage,
                                                                           decimal expectedSuperannuation, decimal expectedTaxableIncome, decimal expectedNetIncome,
                                                                           decimal expectedPayPacket)
        {
            //Arrange
            var sc = new ServiceContainer();

            sc.Register <SalaryDetails>((c) =>
            {
                var medicareLevyDeduction     = c.GetInstance <MedicareLevyDeduction>();
                var budgetRepairLevyDeduction = c.GetInstance <BudgetRepairLevyDeduction>();
                var incomeTaxDeduction        = c.GetInstance <IncomeTaxDeduction>();

                return(new SalaryDetails(medicareLevyDeduction, budgetRepairLevyDeduction, incomeTaxDeduction));
            }, new PerContainerLifetime());
            sc.Register <MedicareLevyDeduction>();
            sc.Register <BudgetRepairLevyDeduction>();
            sc.Register <IncomeTaxDeduction>();

            var sut = new SalaryCalculator(sc);
            //Act
            var salaryDetails = sut.Calculate(grossPackage, PayFrequency.Monthly);

            //Assert
            salaryDetails.Superannuation.Should().Be(expectedSuperannuation);
            salaryDetails.TaxableIncome.Should().Be(expectedTaxableIncome);
            salaryDetails.NetIncome.Should().Be(expectedNetIncome);
            salaryDetails.PayPacket.Should().Be(expectedPayPacket);
        }
Exemple #3
0
        public SalaryView()
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("cz-CZ");
            InitializeComponent();
            int           count  = 0;
            StringBuilder result = new StringBuilder();

            calc = new SalaryCalculator();
            foreach (List <SalaryResultDTO> emp in calc.calcSalaryForAll(Employee.getList()))
            {
                result.AppendLine("Jméno a příjmení: " + emp[count].employee.FirstName + " " + emp[count].employee.LastName);
                foreach (SalaryResultDTO month in emp)
                {
                    string monthName = new DateTime(2019, month.Month, 1).ToString("MMMM", CultureInfo.GetCultureInfo("cz-CZ"));
                    result.AppendLine(" Měsíc: " + monthName);
                    result.AppendLine("     Hzubá mzda: " + month.GrossWage);
                    result.AppendLine("     Počet hodin: " + month.Hours);
                    result.AppendLine("     Čistá mzda: " + month.Wage);
                    result.AppendLine("     Sociální pojištění: " + month.SocialInsurance);
                    result.AppendLine("     Zdravotní pojištění: " + month.HealthInsurance);
                    result.AppendLine("");
                }
                count++;
            }
            textBox.Text = result.ToString();
        }
Exemple #4
0
        private void btnSalaryCalculator_Click(object sender, RoutedEventArgs e)
        {
            using (var context = new CupOfCoffeeContext())
            {
                try
                {
                    var pdfFile = new PdfFile();
                    pdfFile.filename = "..\\..\\..\\PDFReport\\employee-sallaries.pdf";
                    pdfFile.title    = "Report: Employees sallaries";
                    pdfFile.data     = SalaryCalculator.Calculate(context);

                    PdfCreator.Create(pdfFile);

                    SalaryRecorder.Insert(pdfFile.data, context);

                    //var pathToAcroRd32 = Environment.GetEnvironmentVariable("ProgramFiles") + @"\Adobe\Reader 11.0\Reader\AcroRd32.exe";
                    //var adobeInfo = new ProcessStartInfo(pathToAcroRd32, pdfFile.filename);

                    MessageBox.Show("The report for employees was successfully generated!",
                                    "Generated successfully",
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Information);

                    Process.Start(pdfFile.filename);
                }
                catch (Exception)
                {
                    MessageBox.Show("Cannot generate the report for employees!",
                                    "Generation failed",
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                }
            }
        }
Exemple #5
0
        public void SalaryCalculatorShouldReturnCorrectValue()
        {
            var salaryString    = "3400";
            var grossSalary     = 3400m;
            var taxesCalculator = TaxCalculatorServiceMock.New;

            taxesCalculator
            .Setup(x => x.ShouldApplyTax(grossSalary))
            .Returns(true);
            taxesCalculator
            .Setup(x => x.IncomeTax(grossSalary))
            .Returns(240);
            taxesCalculator
            .Setup(x => x.SocialTax(grossSalary))
            .Returns(300);
            var salaryValidation = SalaryValidationServiceMock.New;

            salaryValidation
            .Setup(x => x.IsValid(salaryString))
            .Returns(true);
            var salaryCalculator = new SalaryCalculator(taxesCalculator.Object, salaryValidation.Object);

            var result = salaryCalculator.CalculateNetSalary(salaryString);

            result
            .Should()
            .Be(2860);
        }
        static void Main(string[] args)
        {
            SalaryCalculator salaryCalculate = new SalaryCalculator();

            //string filePath = args[0];
            string filePath = "c:\\temp\\employeeDetail.csv";

            Reader fileReader = new CsvReader();
            List <Model.Employee> employees = fileReader.Read <Model.Employee>(filePath);

            //Testing
            //var employees = GetEmployeeData();

            List <Model.Payslip> paySlips = salaryCalculate.CalculateTax(employees);

            PrintPayslip(paySlips);

            Writer fileWriter = new CsvWriter();

            fileWriter.Write <Model.PayslipReport>(paySlips.Select(x =>
                                                                   new PayslipReport
            {
                FullName    = x.FullName,
                PayPeriod   = x.PayPeriod,
                GrossIncome = x.GrossIncome,
                IncomeTax   = x.IncomeTax,
                NetIncome   = x.NetIncome,
                Super       = x.Super
            }).ToList(), "c:\\temp\\EmployeePaySlip.csv");

            Console.ReadKey();
        }
Exemple #7
0
        public static int Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Wrong args! Please enter input and output file names");
                return(1);
            }

            IDataOperations dataOperations = new CsvDataOperations(args[0], args[1]);
            IInputValidator inputValidator = new InputValidator();

            var inputs = dataOperations.GetData();

            if (inputs.Any(x => !inputValidator.Validate(x)))
            {
                Console.WriteLine("Wrong input data! Please correct your data");
                return(2);
            }

            Console.WriteLine("Calculating...");

            ISalaryCalculator calculator = new SalaryCalculator(GetTaxOptions());
            var ouputs = inputs.Select(calculator.Calculate);

            dataOperations.SaveData(ouputs);

            Console.WriteLine($"Data was processed and saved to file {args[1]}");

            return(0);
        }
Exemple #8
0
 static void PrintSalary(SalaryCalculator all)
 {
     Console.Write($"{all.employeeName} has worked {all.hoursWorked} hours on the relevant week.");
     Console.WriteLine($"The hourly pay of {all.employeeName} is {all.hourlyPay}.");
     Console.WriteLine($"He/she has {all.ExcessHours()} hour(s) overtime.");
     Console.WriteLine($"The total pay for the week of {all.employeeName} is {(all.OverTime() + all.NormalHours()) * all.hourlyPay}.\n");
 }
Exemple #9
0
        private static void Main()
        {
A:
            try
            {
                double basicSalary, currentSalary;
                Console.WriteLine("Enter BS - Basic Salary ");
                basicSalary = double.Parse(Console.ReadLine());

                Console.WriteLine("Enter CS - Current Salary ");
                currentSalary = double.Parse(Console.ReadLine());

                var action = new SalaryCalculator(new SalaryOverview(basicSalary, currentSalary));
                Console.WriteLine(action);
            }

            catch (FormatException)
            {
                //if (!basicSalary.IsNumeric() || !currentSalary.IsNumeric())
                //{
                Console.WriteLine("Entered value is not numeric");
                goto A;
                //}
            }

            Console.ReadKey();
        }
Exemple #10
0
            public void CalculateTotalSalaries_Calculated()
            {
                List <BaseSalaryCalculator> data = new List <BaseSalaryCalculator>
                {
                    new JuniorDevSalaryCalculator(new DeveloperReport {
                        Id = 1, Name = "ho", Level = "Junior", HourlyRate = 1.0, WorkingHours = 100
                    }),
                    new SeniorDevSalaryCalculator(new DeveloperReport {
                        Id = 2, Name = "so", Level = "Senior", HourlyRate = 0.5, WorkingHours = 200
                    }),
                    new JuniorDevSalaryCalculator(new DeveloperReport {
                        Id = 3, Name = "ka", Level = "Junior", HourlyRate = 2.0, WorkingHours = 50
                    }),
                    new SeniorDevSalaryCalculator(new DeveloperReport {
                        Id = 4, Name = "wa", Level = "Senior", HourlyRate = 2.5, WorkingHours = 40
                    })
                };

                SalaryCalculator calc = new SalaryCalculator(data);

                double actual   = calc.CalculateTotalSalaries();
                double expected = 440D;

                Assert.Equal(expected, actual);
            }
        public void Should_Be_Correct_Monthly_Gross_Salary()
        {
            SalaryCalculator salaryCalculator = new SalaryCalculator(_mockTaxCalculator.Object);
            var salary = salaryCalculator.CalculateSalary(60050, 9);

            salary.GrossSalary.ShouldEqual(5004);
        }
Exemple #12
0
        public void Obliczenia_dla_wynagrodzenie_netto
            (decimal salary, bool higherCostOfGettingIncome, bool hasHealthInsurance, decimal exceptetBrutto, decimal exceptetPit, decimal exceptetInsurance)
        {
            //Arrange
            var contractBuilder = new ContractBuilder();

            contractBuilder.TypeOfContract(TypeOfContract.UmowaZlecenie);
            contractBuilder.Salary(salary, SalaryFrom.Net);
            if (higherCostOfGettingIncome)
            {
                contractBuilder.HigherCostOfGettingIncome(true);
            }
            if (hasHealthInsurance)
            {
                contractBuilder.HealthInsurance();
            }
            var contract = contractBuilder.Build();

            //Act
            var calculator = new SalaryCalculator(contract);
            var result     = calculator.Calculator();

            //Assert
            Assert.Equal(exceptetBrutto, result.GrossSalary);
            Assert.Equal(exceptetPit, result.SalaryCosts.First(x => x.CostName == "zaliczka na PIT").CostValue);
            if (hasHealthInsurance)
            {
                Assert.Equal(exceptetInsurance, result.SalaryCosts.First(x => x.CostName == "ubezpieczenie zdrowotne").CostValue);
            }
        }
Exemple #13
0
        static void Main(string[] args)
        {
            //一般員工(以Container方式實現DI)
            using (IUnityContainer container = new UnityContainer())
            {
                UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                //只有container不同
                section.Configure(container, "containerEmployee");
                //其他code完全相同
                SalaryCalculator SC     = container.Resolve <SalaryCalculator>();
                float            amount = SC.Calculate(8 * 19, 200, 8);
                Console.Write("\nSalaryFormula--->amount:" + amount);
                Console.ReadKey();
            }

            //老闆
            using (IUnityContainer container = new UnityContainer())
            {
                UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                //只有container不同
                section.Configure(container, "containerBoss");
                //其他code完全相同
                SalaryCalculator SC     = container.Resolve <SalaryCalculator>();
                float            amount = SC.Calculate(8 * 19, 200, 8);
                Console.Write("\nSalaryFormula--->amount:" + amount);
                Console.ReadKey();
            }
        }
Exemple #14
0
        public void ShouldGive10PercentDiscountIfSalaryIsLessThanLimit()
        {
            var salary    = 3000m;
            var developer = new Employee(name: "Fleta Balistreri", salary, Role.Developer);

            Assert.AreEqual(2700m, SalaryCalculator.Calculate(developer));
        }
Exemple #15
0
        private void _initializeDataContext()
        {
            IRepository       employeeRepository = new Repository();
            ISalaryCalculator salaryCalculator   = new SalaryCalculator();

            DataContext = new MainWindowViewModel(employeeRepository, salaryCalculator);
        }
Exemple #16
0
    static void Main()
    {
        SalaryCalculator salaryCalculator1 = new SalaryCalculator();
        SalaryCalculator salaryCalculator2 = new SalaryCalculator();
        SalaryCalculator salaryCalculator3 = new SalaryCalculator();

        Console.Write("Please enter the name of the 1st employee: ");
        string salaryCalculator1theEmployeetheName = Console.ReadLine();

        salaryCalculator1.SetEmployeeName(salaryCalculator1theEmployeetheName);

        Console.Write($"Please enter the hourly wage of {salaryCalculator1.GetEmployeeName()}: ");
        decimal salaryCalculator1theHourlyPay = decimal.Parse(Console.ReadLine());

        salaryCalculator1.SetHourlyPay(salaryCalculator1theHourlyPay);

        Console.Write($"Please enter the hours worked by {salaryCalculator1.GetEmployeeName()}: ");
        int salaryCalculator1theHoursWorked = int.Parse(Console.ReadLine());

        salaryCalculator1.SetHoursWorked(salaryCalculator1theHoursWorked);

        Console.Write("\n\nPlease enter the name of the 2nd employee: ");
        string salaryCalculator2theEmployeetheName = Console.ReadLine();

        salaryCalculator2.SetEmployeeName(salaryCalculator2theEmployeetheName);

        Console.Write($"Please enter the hourly wage of {salaryCalculator2.GetEmployeeName()}: ");
        decimal salaryCalculator2theHourlyPay = decimal.Parse(Console.ReadLine());

        salaryCalculator2.SetHourlyPay(salaryCalculator2theHourlyPay);

        Console.Write($"Please enter the hours worked by {salaryCalculator2.GetEmployeeName()}: ");
        int salaryCalculator2theHoursWorked = int.Parse(Console.ReadLine());

        salaryCalculator2.SetHoursWorked(salaryCalculator2theHoursWorked);

        Console.Write("\n\nPlease enter the name of the 3rd employee: ");
        string salaryCalculator3theEmployeetheName = Console.ReadLine();

        salaryCalculator3.SetEmployeeName(salaryCalculator3theEmployeetheName);

        Console.Write($"Please enter the hourly wage of {salaryCalculator3.GetEmployeeName()}: ");
        decimal salaryCalculator3theHourlyPay = decimal.Parse(Console.ReadLine());

        salaryCalculator3.SetHourlyPay(salaryCalculator3theHourlyPay);

        Console.Write($"Please enter the hours worked by {salaryCalculator3.GetEmployeeName()}: ");
        int salaryCalculator3theHoursWorked = int.Parse(Console.ReadLine());

        salaryCalculator3.SetHoursWorked(salaryCalculator3theHoursWorked);

        Console.Write("\n\n");

        PrintSalary(salaryCalculator1);

        PrintSalary(salaryCalculator2);

        PrintSalary(salaryCalculator3);
    }
        public void Test2()
        {
            SalaryCalculator salaryCalculator = new SalaryCalculator();

            decimal hourlyWage = salaryCalculator.GetHourlyWage(93600);

            Assert.Equal(40, hourlyWage);
        }
 public IActionResult GetWithSalary()
 {
     return(Ok(m_context.Employees.Select(
                   x => SalaryCalculator.Calculate(x,
                                                   m_context.BaseSalaries.FirstOrDefault(y =>
                                                                                         y.Position == x.Position && y.ExperienceFrom <= x.ExperienceYears && y.ExperienceTo >= x.ExperienceYears)))
               ));
 }
        public void ShouldObtainTheJuniorsTotalSalary()
        {
            var calculatorContext = new SalaryCalculator(new JuniorDevSalaryCalculator());

            var juniorsTotalSalary = calculatorContext.Calculate(_reports);

            juniorsTotalSalary.Should().Be(5830);
        }
Exemple #20
0
        public void Calculate_WhenProvidedNull_ReturnsEmpty()
        {
            var calculator = new SalaryCalculator();

            var result = calculator.Calculate(null);

            result.ShouldBeEmpty();
        }
        public void ShouldObtainTheSeniorsTotalSalary()
        {
            var calculatorContext = new SalaryCalculator(new SeniorDevSalaryCalculator());

            var seniorsTotalSalary = calculatorContext.Calculate(_reports);

            seniorsTotalSalary.Should().Be(10926);
        }
 public void SalaryCalculation_HoursMoreThanAllowed_ReturnsCalculationErrorMessage()
 {
     //arrange
     const string expected = "Employee 1: Error in salary calculation!";
     //act
     var actual = SalaryCalculator.SalaryCalculation("Employee 1", 8.50, 660);
     //assert
     Assert.Equal(expected, actual);
 }
        public void Should_Be_Correct_Monthly_Gross_Salary()
        {
            _mockTaxCalculator.Setup(t => t.CalculateTax(It.IsAny <decimal>())).Returns(922);
            _mockSuperCalculator.Setup(t => t.CalculateSuper(It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(450);
            SalaryCalculator calculator = new SalaryCalculator(_mockTaxCalculator.Object, _mockSuperCalculator.Object);
            var salary = calculator.CalculateSalary(60050, 9);

            salary.GrossSalary.ShouldEqual(5004);
        }
Exemple #24
0
        public void ShouldGive15PercentDiscountIfSalaryIsLessThanLimit()
        {
            var salary = 2500m;
            var dba    = new Employee(name: "Fleta Balistreri", salary, Role.DBA);
            var tester = new Employee(name: "Fleta Balistreri", salary, Role.Tester);

            Assert.AreEqual(2125m, SalaryCalculator.Calculate(dba));
            Assert.AreEqual(2125m, SalaryCalculator.Calculate(tester));
        }
 public void SalaryCalculation_CalculateSalaryNoOvertime_ReturnsCalculatedSalary()
 {
     //arrange
     const string expected = "Employee 2 salary is: 320.00";
     //act
     var actual = SalaryCalculator.SalaryCalculation("Employee 2", 8.00, 40);
     //assert
     Assert.Equal(expected, actual);
 }
        public void TestNull()
        {
            var c = new SalaryCalculator(SalaryArgs);

            Assert.ThrowsException <ArgumentNullException>(() => c.CalculateSalary((Employee)null));
            Assert.ThrowsException <ArgumentNullException>(() => c.CalculateSalary((ManagerEmployee)null));
            Assert.ThrowsException <ArgumentNullException>(() => c.CalculateSalary((SalesEmployee)null));
            Assert.ThrowsException <ArgumentNullException>(() => c.CalculateSalary((List <Employee>)null));
        }
        public void Should_Be_Correct_Net_Salary()
        {
            _mockTaxCalculator.Setup(t => t.CalculateTax(It.IsAny <decimal>())).Returns(922);
            _mockSuperCalculator.Setup(t => t.CalculateSuper(It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(450);
            SalaryCalculator calculator = new SalaryCalculator(_mockTaxCalculator.Object, _mockSuperCalculator.Object);
            var salary = calculator.CalculateSalary(60050, 9);

            salary.NetIncome.ShouldEqual(4082);
        }
Exemple #28
0
        public void Calculate_WhenProvidedInvalidEmployee_ReturnsEmpty()
        {
            var employee   = new Employee();
            var calculator = new SalaryCalculator();

            var result = calculator.Calculate(employee);

            employee.IsValid().ShouldBeFalse();
            result.ShouldBeEmpty();
        }
Exemple #29
0
        public void AnnualSalaryTest()
        {
            // Arrange
            var sc = new SalaryCalculator();
            // Act
            decimal annunalSalary = sc.GetAnnualSalary(50);

            // Assert
            Assert.AreEqual(104000, annunalSalary);
        }
Exemple #30
0
        public void HourlyWageTest()
        {
            // Arrange
            var sc = new SalaryCalculator();
            // Act
            decimal hourlyWage = sc.GetHourlyWage(52000);

            // Assert
            Assert.AreEqual(25, hourlyWage);
        }