示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }