public void GetWriteData_CanCovertDecimalToPercentage(string expectedResult, string inputDataString, int numberOfDecimalPlaces) { // Arrange decimal inputData = decimal.Parse(inputDataString); var attribute = new CsvConverterNumberAttribute(); attribute.NumberOfDecimalPlaces = numberOfDecimalPlaces; var classUnderTest = new CsvConverterPercentage(); classUnderTest.Initialize(attribute, new DefaultTypeConverterFactory()); // Act string actual = classUnderTest.GetWriteData(typeof(decimal), inputData, ColumName, ColumnIndex, RowNumber); // Windows 7 and Windows 10 format strings differently so remove the space so that for the test it doesn't matter if (actual != null) { actual = actual.Replace(" ", ""); } // Assert Assert.AreEqual(expectedResult, actual); }
[DataRow(2, "200%", "P0")] // Differs between windows 10 (20%) & windows 7 (20 %) public void GetWriteData_CanConvertIntToDecimal_IntConverted(int inputData, string expectedData, string formatData) { // Arrange var attribute = new CsvConverterNumberAttribute() { StringFormat = formatData }; var cut = new CsvConverterDecimalToInt(); cut.Initialize(attribute, new DefaultTypeConverterFactory()); // Act string actualData = cut.GetWriteData(typeof(int), inputData, "Column1", 1, 1); // Windows 10 (2,000%) & Windows 7 (2,000 %) format percentages slightly differently // So remove spaces before comparing if (formatData != null && formatData.StartsWith("P")) { actualData = actualData.Replace(" ", ""); } // Assert Assert.AreEqual(expectedData, actualData); }
private void CreateConverter(Type inputType, CsvConverterNumberAttribute oneAttribute, IDefaultTypeConverterFactory defaultFactory) { ICsvConverter converter = defaultFactory.CreateConverter(inputType); converter.Initialize(oneAttribute, defaultFactory); _converterDictionary.Add(inputType, converter); }
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); }
public void GetReadData_CanCovertStringWithPercentageSign(string inputData, string expected, int numberOfDecimalPlaces) { // Arrange var attribute = new CsvConverterNumberAttribute(); attribute.NumberOfDecimalPlaces = numberOfDecimalPlaces; var classUnderTest = new CsvConverterPercentage(); classUnderTest.Initialize(attribute, new DefaultTypeConverterFactory()); decimal expectedResult = decimal.Parse(expected); // Act var actual = classUnderTest.GetReadData(typeof(decimal), inputData, ColumName, ColumnIndex, RowNumber); // Assert Assert.AreEqual(expectedResult, actual); }