public void GetReadData_CannotHandleNonNumericStrings_ThrowsException(string inputData)
        {
            // Arrange
            var attribute = new CsvConverterNumberAttribute();
            var cut       = new CsvConverterDecimalToInt();

            cut.Initialize(attribute, new DefaultTypeConverterFactory());

            // Act
            decimal actual = (decimal)cut.GetReadData(typeof(decimal), inputData, "Column1", 1, 1);

            // Assert
            Assert.Fail("Exception should be thrown when invalid values are passed into the parser!");
        }
        public void GetReadData_CanConvertNonNullableDecimalsWithoutAnAttribute_ValuesConverted(string inputData, int?expected)
        {
            // Arrange
            var attribute = new CsvConverterNumberAttribute();
            var cut       = new CsvConverterDecimalToInt();

            cut.Initialize(attribute, new DefaultTypeConverterFactory());

            // Act
            int actual = (int)cut.GetReadData(typeof(int), inputData, "Column1", 1, 1);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        [DataRow("58.88", 59, true, 2)] // decimal places are IGNORED during reading!
        public void GetReadData_CanRoundToGivenPrecision_NumberRoundedProperly(string inputData, int?expected,
                                                                               bool allowRounding, int numberOfDecimalPlaces)
        {
            // Arrange
            var attribute = new CsvConverterNumberAttribute()
            {
                AllowRounding = allowRounding, NumberOfDecimalPlaces = numberOfDecimalPlaces
            };
            var cut = new CsvConverterDecimalToInt();

            cut.Initialize(attribute, new DefaultTypeConverterFactory());

            // Act
            int actual = (int)cut.GetReadData(typeof(int), inputData, "Column1", 1, 1);

            // Assert
            Assert.AreEqual(expected, actual);
        }