public Defects Validate(YearlyData yearlyData)
        {
            if (yearlyData.DevelopmentYear < yearlyData.OriginYear)
            {
                _defects.Errors.Add("The Development Year " + yearlyData.DevelopmentYear +
                                    " is less than the Origin Year " + yearlyData.OriginYear);
            }
            if (yearlyData.OriginYear < WatsonAndSonsYearFounded)
            {
                _defects.Errors.Add("The Origin Year " + yearlyData.OriginYear + " is too old");
            }
            if (yearlyData.DevelopmentYear < WatsonAndSonsYearFounded)
            {
                _defects.Errors.Add("The Development Year " + yearlyData.DevelopmentYear + " is too old");
            }

            if (yearlyData.OriginYear > DateTime.Now.Year)
            {
                _defects.Warnings.Add("The Origin Year " + yearlyData.OriginYear +
                                      " post dates the year that this PC’s system clock is set to (" + DateTime.Now.Year +
                                      ").");
            }

            return(_defects);
        }
        public List <YearlyData> LoadCsvFile(string filePath)
        {
            var records = new List <YearlyData>();

            using var reader = new StreamReader(filePath);
            using var csv    = new CsvReader(reader);
            csv.Read();
            SetCsvHelperConfiguration(csv);

            try
            {
                csv.ReadHeader();
            }
            catch (ReaderException)
            {
                return(records); // If the header record is missing we cannot load the file
            }

            while (csv.Read())
            {
                var record = new YearlyData
                {
                    ProductName      = csv.GetField <string>("Product"),
                    OriginYear       = csv.GetField <int>("Origin Year"),
                    DevelopmentYear  = csv.GetField <int>("Development Year"),
                    IncrementalValue = csv.GetField <decimal?>("Incremental Value"),
                };
                records.Add(record);
            }

            return(records);
        }
Example #3
0
        public void TwoErrorsWhenDevelopmentYearIs1066AndOlderThanOriginYear()
        {
            // Arrange
            var record = new YearlyData {
                DevelopmentYear = 1066, OriginYear = 2000, ProductName = "Comp"
            };

            // Act
            var result = _target.Validate(record);

            // Assert
            Assert.That(result.Errors[0], Is.EqualTo("The Development Year 1066 is less than the Origin Year 2000"));
            Assert.That(result.Errors[1], Is.EqualTo("The Development Year 1066 is too old"));
        }
Example #4
0
        public void WarningWhenOriginYearInTheFuture()
        {
            // It is also reasonable to consider this case an error - would normally check something like this with a B.A.

            // Arrange
            var record = new YearlyData {
                DevelopmentYear = 3000, OriginYear = 3000, ProductName = "Comp"
            };

            // Act
            var result = _target.Validate(record);

            // Assert
            Assert.That(result.Warnings[0], Is.EqualTo("The Origin Year 3000 post dates the year that this PC’s system clock is set to ("
                                                       + DateTime.Now.Year + ")."));
        }
        public void Setup()
        {
            _target = new ProductClaimsRecord();
            var origin90Dev90Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1990, IncrementalValue = 0.0m
            };
            var origin90Dev91Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1991, IncrementalValue = 0.0m
            };
            var origin90Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1992, IncrementalValue = 0.0m
            };
            var origin90Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1993, IncrementalValue = 0.0m
            };

            var origin91Dev91Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1991, IncrementalValue = 0.0m
            };
            var origin91Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1992, IncrementalValue = 0.0m
            };
            var origin91Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1993, IncrementalValue = 0.0m
            };

            var origin92Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1992, DevelopmentYear = 1992, IncrementalValue = 110.0m
            };
            var origin92Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1992, DevelopmentYear = 1993, IncrementalValue = 170.0m
            };

            var origin93Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1993, DevelopmentYear = 1993, IncrementalValue = 200.0m
            };

            _records = new List <YearlyData>
            {
                origin90Dev90Comp, origin90Dev91Comp, origin90Dev92Comp, origin90Dev93Comp,
                origin91Dev91Comp, origin91Dev92Comp, origin91Dev93Comp,
                origin92Dev92Comp, origin92Dev93Comp,
                origin93Dev93Comp
            };
        }
Example #6
0
        public void Setup()
        {
            _target = new RecordsPerProduct();

            var origin90Dev90Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1990, IncrementalValue = 0.0m
            };
            var origin90Dev91Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1991, IncrementalValue = 0.0m
            };
            var origin90Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1992, IncrementalValue = 0.0m
            };
            var origin90Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1990, DevelopmentYear = 1993, IncrementalValue = 0.0m
            };

            var origin91Dev91Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1991, IncrementalValue = 0.0m
            };
            var origin91Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1992, IncrementalValue = 0.0m
            };
            var origin91Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1991, DevelopmentYear = 1993, IncrementalValue = 0.0m
            };

            var origin92Dev92Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1992, DevelopmentYear = 1992, IncrementalValue = 110.0m
            };
            var origin92Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1992, DevelopmentYear = 1993, IncrementalValue = 170.0m
            };

            var origin93Dev93Comp = new YearlyData {
                ProductName = "Comp", OriginYear = 1993, DevelopmentYear = 1993, IncrementalValue = 200.0m
            };

            var origin90Dev90NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1990, DevelopmentYear = 1990, IncrementalValue = 45.2m
            };
            var origin90Dev91NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1990, DevelopmentYear = 1991, IncrementalValue = 64.8m
            };

            var origin90Dev92NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1990, DevelopmentYear = 1992, IncrementalValue = 0.0m
            };
            var origin90Dev93NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1990, DevelopmentYear = 1993, IncrementalValue = 37.0m
            };

            var origin91Dev91NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1991, DevelopmentYear = 1991, IncrementalValue = 50.0m
            };
            var origin91Dev92NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1991, DevelopmentYear = 1992, IncrementalValue = 75.0m
            };
            var origin91Dev93NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1991, DevelopmentYear = 1993, IncrementalValue = 25.0m
            };

            var origin92Dev92NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1992, DevelopmentYear = 1992, IncrementalValue = 55.0m
            };
            var origin92Dev93NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1992, DevelopmentYear = 1993, IncrementalValue = 85.0m
            };

            var origin93Dev93NonComp = new YearlyData {
                ProductName = "Non-Comp", OriginYear = 1993, DevelopmentYear = 1993, IncrementalValue = 100.0m
            };



            _records = new List <YearlyData>
            {
                origin90Dev90Comp, origin90Dev91Comp, origin90Dev92Comp, origin90Dev93Comp,
                origin91Dev91Comp, origin91Dev92Comp, origin91Dev93Comp,
                origin92Dev92Comp, origin92Dev93Comp,
                origin93Dev93Comp,
                origin90Dev90NonComp, origin90Dev91NonComp, origin90Dev92NonComp, origin90Dev93NonComp,
                origin91Dev91NonComp, origin91Dev92NonComp, origin91Dev93NonComp,
                origin92Dev92NonComp, origin92Dev93NonComp,
                origin93Dev93NonComp,
            };
        }
        public Defects Validate(YearlyData yearlyData)
        {
            // Add any validation relevant rules relating to allowed product name values

            return(_defects);
        }