private static IList <IPerson> InputPersons() { var kernel = NinjectAdds.GetKernel(); var numberOfPersons = int.Parse(Console.ReadLine()); var persons = new List <IPerson>(numberOfPersons); for (int i = 0; i < numberOfPersons; i++) { var nameAndGrossAsPairOfStrings = Console.ReadLine() .TrimSpaces() .Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); var person = kernel.Get <IPerson>( new IParameter[] { new ConstructorArgument("name", nameAndGrossAsPairOfStrings[0].TrimSpaces()), }); decimal?gross = null; if (1 < nameAndGrossAsPairOfStrings.Length) { decimal knownGross; gross = decimal.TryParse(nameAndGrossAsPairOfStrings[1].TrimSpaces(), out knownGross) ? knownGross : (decimal?)null; } person.Gross = gross; persons.Add(person); } return(persons); }
private static void TaxPersons(IEnumerable <IPerson> persons) { var kernel = NinjectAdds.GetKernel(); var taxVisitor = kernel.Get <IVisitor>(); foreach (var person in persons) { person.AcceptVisitor(taxVisitor); } }
public void UnknownGross() { var kernel = NinjectAdds.GetKernel(); var person = kernel.Get <IPerson>( new IParameter[] { new ConstructorArgument("name", "Todor"), }); var visitor = kernel.Get <IVisitor>(); person.AcceptVisitor(visitor); Assert.AreEqual(0m, person.Tax); }
public void AboveUpperLimitOfSocialContributions() { var kernel = NinjectAdds.GetKernel(); var person = kernel.Get <IPerson>( new IParameter[] { new ConstructorArgument("name", "Todor"), new ConstructorArgument("gross", 5000m), }); var visitor = kernel.Get <IVisitor>(); person.AcceptVisitor(visitor); Assert.AreEqual(700m, person.Tax); }
public void ToUpperLimitWithoutTax() { var kernel = NinjectAdds.GetKernel(); var person = kernel.Get <IPerson>( new IParameter[] { new ConstructorArgument("name", "Todor"), new ConstructorArgument("gross", 1000m), }); var visitor = kernel.Get <IVisitor>(); person.AcceptVisitor(visitor); Assert.AreEqual(0m, person.Tax); }