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);
        }
Пример #5
0
        public void EmptyStringIsDeserializedIntoNull()
        {
            NullableDateTimeConverter converter = new NullableDateTimeConverter();
            string   text = "";
            DateTime?date = converter.Deserialize(text.AsMemory(), CultureInfo.InvariantCulture, null);

            date.Should().Be(null);
        }
        public void ProvidingNullReturnsNullableFloat()
        {
            var converter = new NullableDateTimeConverter();

            var result = converter.ConvertBack(null, typeof(float?), null, null);

            Assert.IsNull(result);
        }
Пример #7
0
        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 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"));
        }
Пример #10
0
        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("");
        }
Пример #11
0
        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");
        }
Пример #12
0
        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));
        }
Пример #13
0
        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");
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);


        }
Пример #17
0
        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));
        }
Пример #18
0
        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);
 }
Пример #20
0
        public void ConvertToCsvItemTest()
        {
            var c = new NullableDateTimeConverter();

            Assert.AreEqual(string.Empty, c.ConvertToCsvItem(CreateConvertToCsvItemContext(null)));
        }