public void TestEmployeeShareGainLargeNumberOfShares() { var marketPrice = new MarketPrice(); marketPrice.Price = 6.00M; marketPrice.MarketPriceDate = DateTime.Now; var employeeShare = new EmployeeShare(); employeeShare.GrantPrice = 5.00M; employeeShare.VestDate = DateTime.Now.AddDays(-1); employeeShare.NumberOfUnits = 1000; Assert.IsTrue(employeeShare.CalculateGains(marketPrice) == 1000.00M); }
public void TestVestDateAfterMarketDate() { var marketPrice = new MarketPrice(); marketPrice.Price = 6.00M; marketPrice.MarketPriceDate = DateTime.Now; var employeeShare = new EmployeeShare(); employeeShare.GrantPrice = 5.00M; employeeShare.VestDate = DateTime.Now.AddDays(1); employeeShare.NumberOfUnits = 1; Assert.IsTrue(employeeShare.CalculateGains(marketPrice) == 0.00M); }
public void TestOutputGeneration() { var marketPrice = new MarketPrice(); marketPrice.Price = 6.00M; marketPrice.MarketPriceDate = DateTime.Now; var anEmployee = new EmployeeShare(); anEmployee.EmployeeId = "1"; anEmployee.GrantPrice = 5.00M; anEmployee.NumberOfUnits = 100; anEmployee.VestDate = DateTime.Now.AddDays(-10); var anEmployee1 = new EmployeeShare(); anEmployee1.EmployeeId = "1"; anEmployee1.GrantPrice = 5.00M; anEmployee1.NumberOfUnits = 100; anEmployee1.VestDate = DateTime.Now.AddDays(-10); var anEmployee2 = new EmployeeShare(); anEmployee2.EmployeeId = "2"; anEmployee2.GrantPrice = 5.00M; anEmployee2.NumberOfUnits = 100; anEmployee2.VestDate = DateTime.Now.AddDays(-10); var employeeList = new List <EmployeeShare>(); employeeList.Add(anEmployee); employeeList.Add(anEmployee1); employeeList.Add(anEmployee2); var outputRenderer = new OutputRendererService(); var bonuses = new List <EmployeeBonus>(); var result = outputRenderer.GenerateOutput(marketPrice, employeeList, bonuses, new List <EmployeeSale>()); var resultCount = result.Split('\n').Length; Assert.IsTrue(resultCount == 3); // there is an extra line at the end, this is fine... 3 == 2, etc. }
public void TestEmployeeShareWithMultiplier() { var marketPrice = new MarketPrice(); marketPrice.Price = 6.00M; marketPrice.MarketPriceDate = DateTime.Now; var employeeShare = new EmployeeShare(); var employeeBonus = new EmployeeBonus(); employeeBonus.BonusDate = DateTime.Now; employeeBonus.Multiplier = 2.00M; employeeBonus.EmployeeId = "123"; employeeShare.EmployeeId = "123"; employeeShare.GrantPrice = 5.00M; employeeShare.VestDate = DateTime.Now.AddDays(-1); employeeShare.NumberOfUnits = 1000; Assert.IsTrue(employeeShare.CalculateGains(marketPrice, employeeBonus, 0) == 2000.00M); }
public BaseRecord GetRecord(string type, CsvReader csvReader) { switch (type) { case "VEST": var newShareRecord = new EmployeeShare { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), VestDate = ParseExactDate(csvReader.GetField <string>(2)), NumberOfUnits = csvReader.GetField <int>(3), GrantPrice = csvReader.GetField <decimal>(4) }; return(newShareRecord); case "PERF": var employeeBonus = new EmployeeBonus { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), BonusDate = ParseExactDate(csvReader.GetField <string>(2)), Multiplier = csvReader.GetField <decimal>(3) }; return(employeeBonus); case "SALE": var employeeSale = new EmployeeSale { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), SaleDate = ParseExactDate(csvReader.GetField <string>(2)), Quantity = csvReader.GetField <int>(3), MarketSellPrice = csvReader.GetField <decimal>(4) }; return(employeeSale); default: throw new InvalidInputException("Row type not supported."); } }