using CryptoExchange.Net.Converters; using Newtonsoft.Json; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests { [TestFixture()] public class ConverterTests { [TestCase("2021-05-12")] [TestCase("20210512")] [TestCase("210512")] [TestCase("1620777600.000")] [TestCase("1620777600000")] [TestCase("2021-05-12T00:00:00.000Z")] public void TestDateTimeConverterString(string input) { var output = JsonConvert.DeserializeObject($"{{ \"time\": \"{input}\" }}"); Assert.AreEqual(output.Time, new DateTime(2021, 05, 12, 0, 0, 0, DateTimeKind.Utc)); } [TestCase(1620777600.000)] [TestCase(1620777600000d)] public void TestDateTimeConverterDouble(double input) { var output = JsonConvert.DeserializeObject($"{{ \"time\": {input} }}"); Assert.AreEqual(output.Time, new DateTime(2021, 05, 12, 0, 0, 0, DateTimeKind.Utc)); } [TestCase(1620777600)] [TestCase(1620777600000)] [TestCase(1620777600000000)] [TestCase(1620777600000000000)] public void TestDateTimeConverterLong(long input) { var output = JsonConvert.DeserializeObject($"{{ \"time\": {input} }}"); Assert.AreEqual(output.Time, new DateTime(2021, 05, 12, 0, 0, 0, DateTimeKind.Utc)); } [Test] public void TestDateTimeConverterNull() { var output = JsonConvert.DeserializeObject($"{{ \"time\": null }}"); Assert.AreEqual(output.Time, null); } } public class TimeObject { [JsonConverter(typeof(DateTimeConverter))] public DateTime? Time { get; set; } } }