public void TryConvertToObjectItemTest() { var c = new NullableDateTimeConverter(); Assert.IsTrue(c.TryConvertToObjectItem(CreateConvertToObjectItemContext(string.Empty), out object?result, out string _)); Assert.IsNull(result); }
public void ShouldConvertToCellValue() { //Arrange var converter = new NullableDateTimeConverter(); string value0; string value1; string value2; string value3; //Act bool success0 = converter.TryConvertToCellValue(new DateTime(2015, 10, 10), out value0); bool success1 = converter.TryConvertToCellValue(DateTime.MinValue, out value1); bool success2 = converter.TryConvertToCellValue(DateTime.MaxValue, out value2); bool success3 = converter.TryConvertToCellValue(null, out value3); //Assert Assert.IsTrue(success0); Assert.IsTrue(success1); Assert.IsTrue(success2); Assert.IsTrue(success3); Assert.AreEqual("2015/10/10", value0); Assert.AreEqual("0001/01/01", value1); Assert.AreEqual("9999/12/31", value2); Assert.AreEqual(null,value3); }
public void ShouldConvertToCSharpValue() { //Arrange var converter = new NullableDateTimeConverter(); object value0; object value1; object value2; object value3; //Act bool success0 = converter.TryConvertToCSharpValue("2015-12-15", out value0); bool success1 = converter.TryConvertToCSharpValue("12/15/2015", out value1); bool success2 = converter.TryConvertToCSharpValue("12-15-2015", out value2); bool success3 = converter.TryConvertToCSharpValue("", out value3); //Assert Assert.IsTrue(success0); Assert.IsTrue(success1); Assert.IsTrue(success2); Assert.IsTrue(success3); var targetDate = new DateTime(2015, 12, 15); Assert.AreEqual(targetDate, value0); Assert.AreEqual(targetDate, value1); Assert.AreEqual(targetDate, value2); Assert.IsNull(value3); }
public void ProvidingNullReturnsNullableFloat() { var converter = new NullableDateTimeConverter(); var result = converter.ConvertBack(null, typeof(float?), null, null); Assert.IsNull(result); }
public void EmptyStringIsDeserializedIntoNull() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); string text = ""; DateTime?date = converter.Deserialize(text.AsMemory(), CultureInfo.InvariantCulture, null); date.Should().Be(null); }
public void DateTimeDeserializerIsValid() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); string text = "05/04/2019 03:02:01"; DateTime?date = converter.Deserialize(text.AsMemory(), CultureInfo.InvariantCulture, null); date.Should().Be(new DateTime(2019, 5, 4, 3, 2, 1)); }
public void DateTimeStringReturnsParsedDateTime() { var converter = new NullableDateTimeConverter(); var expected = DateTime.Now; var result = (DateTime)converter.ConvertBack(expected.ToString(), typeof(DateTime?), null, null); Assert.AreEqual(expected.ToString("dd MMMM yyyy hh:mm:ss"), result.ToString("dd MMMM yyyy hh:mm:ss")); }
public void NullIsSerializedIntoEmptyString() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); DateTime? date = null; StringBuilder stringBuilder = new StringBuilder(); converter.AppendToStringBuilder(stringBuilder, CultureInfo.InvariantCulture, date, null, ','); string serialized = stringBuilder.ToString(); serialized.Should().Be(""); }
public void DateTimeSerializerIsValid() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); DateTime? date = new DateTime(2019, 5, 4, 3, 2, 1); StringBuilder stringBuilder = new StringBuilder(); converter.AppendToStringBuilder(stringBuilder, CultureInfo.InvariantCulture, date, null, ','); string serialized = stringBuilder.ToString(); serialized.Should().Be("05/04/2019 03:02:01"); }
public void CanDeserializeUsingCustomDateFormat() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); string text = "2019/May/04 3:02:01"; CsvColumnAttribute attribute = new CsvColumnAttribute("Date") { DateFormat = "yyyy/MMM/dd H:mm:ss" }; DateTime?date = converter.Deserialize(text.AsMemory(), CultureInfo.InvariantCulture, attribute); date.Should().Be(new DateTime(2019, 5, 4, 3, 2, 1)); }
public void CanSerializeUsingCustomDateFormat() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); DateTime? date = new DateTime(2019, 5, 4, 3, 2, 1); StringBuilder stringBuilder = new StringBuilder(); CsvColumnAttribute attribute = new CsvColumnAttribute("Date") { DateFormat = "yyyy/MMM/dd H:mm:ss" }; converter.AppendToStringBuilder(stringBuilder, CultureInfo.InvariantCulture, date, attribute, ','); string serialized = stringBuilder.ToString(); serialized.Should().Be("2019/May/04 3:02:01"); }
public void EmittedDeserializerDeserializesEmptyStringIntoNull() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); string text = ""; DynamicMethod deserialize = new DynamicMethod("Deserialize", typeof(DateTime?), new Type[] { typeof(ReadOnlyMemory <char>), typeof(IFormatProvider) }, typeof(DateTimeConverterTests)); deserialize.GetILGenerator() .DeclareLocal <DateTime?>(out LocalBuilder nullableLocal) .DeclareLocal <DateTime>(out LocalBuilder local) .Ldarga_S(0) .Emit(gen => converter.EmitDeserialize(gen, nullableLocal, local, null)) .Ret(); DateTime?deserialized = (DateTime?)deserialize.Invoke(this, new object?[] { text.AsMemory(), CultureInfo.InvariantCulture }) !; deserialized.Should().Be(null); }
public void EmittedSerializerIsValid() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); DateTime? date = new DateTime(2019, 5, 4, 3, 2, 1); DynamicMethod serialize = new DynamicMethod("Serialize", typeof(string), new Type[] { typeof(DateTime?), typeof(IFormatProvider), typeof(char) }, typeof(DateTimeConverterTests)); serialize.GetILGenerator() .DeclareLocal <DateTime?>(out LocalBuilder nullableLocal) .DeclareLocal <DateTime>(out LocalBuilder local) .Newobj <StringBuilder>() .Ldarg_0() .Emit(gen => converter.EmitAppendToStringBuilder(gen, nullableLocal, local, null)) .Callvirt <StringBuilder>("ToString") .Ret(); string serialized = (string)serialize.Invoke(null, new object?[] { date, CultureInfo.InvariantCulture, ',' }) !; serialized.Should().Be("05/04/2019 03:02:01"); }
public void ShouldFailToConvertToCSharpValue() { //Arrange var converter = new NullableDateTimeConverter(); object value0; object value1; object value2; //Act bool success0 = converter.TryConvertToCSharpValue("2/29/2015", out value0); bool success1 = converter.TryConvertToCSharpValue("15/12/2015", out value1); bool success2 = converter.TryConvertToCSharpValue("NoDate", out value2); //Assert Assert.IsFalse(success0); Assert.IsFalse(success1); Assert.IsFalse(success2); }
public void CanEmitDeserializerWithCustomDateFormat() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); string text = "2019/May/04 3:02:01"; CsvColumnAttribute attribute = new CsvColumnAttribute("Date") { DateFormat = "yyyy/MMM/dd H:mm:ss" }; DynamicMethod deserialize = new DynamicMethod("Deserialize", typeof(DateTime?), new Type[] { typeof(ReadOnlyMemory <char>), typeof(IFormatProvider) }, typeof(DateTimeConverterTests)); deserialize.GetILGenerator() .DeclareLocal <DateTime?>(out LocalBuilder nullableLocal) .DeclareLocal <DateTime>(out LocalBuilder local) .Ldarga_S(0) .Emit(gen => converter.EmitDeserialize(gen, nullableLocal, local, attribute)) .Ret(); DateTime?deserialized = (DateTime?)deserialize.Invoke(this, new object?[] { text.AsMemory(), CultureInfo.InvariantCulture }) !; deserialized.Should().Be(new DateTime(2019, 5, 4, 3, 2, 1)); }
public void CanEmitSerializerWithCustomDateFormat() { NullableDateTimeConverter converter = new NullableDateTimeConverter(); DateTime? date = new DateTime(2019, 5, 4, 3, 2, 1); CsvColumnAttribute attribute = new CsvColumnAttribute("Date") { DateFormat = "yyyy/MMM/dd H:mm:ss" }; DynamicMethod serialize = new DynamicMethod("Serialize", typeof(string), new Type[] { typeof(DateTime?), typeof(IFormatProvider), typeof(char) }, typeof(DateTimeConverterTests)); serialize.GetILGenerator() .DeclareLocal <DateTime?>(out LocalBuilder nullableLocal) .DeclareLocal <DateTime>(out LocalBuilder local) .Newobj <StringBuilder>() .Ldarg_0() .Emit(gen => converter.EmitAppendToStringBuilder(gen, nullableLocal, local, attribute)) .Callvirt <StringBuilder>("ToString") .Ret(); string serialized = (string)serialize.Invoke(null, new object?[] { date, CultureInfo.InvariantCulture, ',' }) !; serialized.Should().Be("2019/May/04 3:02:01"); }
public void ShouldFailToConvertToCellValue() { //Arrange var converter = new NullableDateTimeConverter(); string value0; string value1; string value2; //Act bool success0 = converter.TryConvertToCellValue("10/25/2015", out value0); bool success1 = converter.TryConvertToCellValue("N/A", out value1); bool success2 = converter.TryConvertToCellValue("", out value2); //Assert Assert.IsFalse(success0); Assert.IsFalse(success1); Assert.IsFalse(success2); }
public void ConvertToCsvItemTest() { var c = new NullableDateTimeConverter(); Assert.AreEqual(string.Empty, c.ConvertToCsvItem(CreateConvertToCsvItemContext(null))); }