public void Can_convert()
        {
            var sut    = new UnixDateTimeJsonConverter();
            var actual = sut.CanConvert(typeof(DateTime));

            Assert.True(actual);
        }
        public void Cannot_convert()
        {
            var sut    = new UnixDateTimeJsonConverter();
            var actual = sut.CanConvert(typeof(DateTimeOffset));

            Assert.False(actual);
        }
        public void Serializes_correctly()
        {
            var sut    = new UnixDateTimeJsonConverter();
            var date   = EpochTime;
            var actual = JsonConvert.SerializeObject(date, sut);

            Assert.Equal("0", actual);

            date   = DateTime.UtcNow;
            actual = JsonConvert.SerializeObject(date, sut);
            Assert.Equal(((long)((date - EpochTime).TotalSeconds)).ToString(), actual);
        }
        public void Deserializes_correctly()
        {
            var sut    = new UnixDateTimeJsonConverter();
            var date   = DateTime.UtcNow;
            var value  = ((long)((date - EpochTime).TotalSeconds)).ToString();
            var actual = JsonConvert.DeserializeObject <DateTime>(value, sut);

            Assert.Equal(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, DateTimeKind.Utc), actual);

            date   = EpochTime;
            actual = JsonConvert.DeserializeObject <DateTime>("0", sut);
            Assert.Equal(date, actual);
        }
        /// <summary>
        /// Gets a list of blocks mined on a specific day.
        /// </summary>
        /// <param name="dateTime">DateTime that falls
        /// between 00:00 UTC and 23:59 UTC of the desired day.</param>
        /// <returns>A list of SimpleBlock objects</returns>
        /// <exception cref="ServerApiException">If the server returns an error</exception>
        public async Task <ReadOnlyCollection <SimpleBlock> > GetBlocksAsync(DateTime dateTime)
        {
            if (dateTime < UnixDateTimeJsonConverter.GenesisBlockDate)
            {
                throw new ArgumentOutOfRangeException(nameof(dateTime), "Date must be greater than or equal to the genesis block creation date (2009-01-03T18:15:05+00:00)");
            }
            if (dateTime.ToUniversalTime() > DateTime.UtcNow)
            {
                throw new ArgumentOutOfRangeException(nameof(dateTime), "Date must be in the past");
            }
            double unixTimestap     = UnixDateTimeJsonConverter.DateTimeToUnixSeconds(dateTime);
            string unixMillisstring = (unixTimestap * 1000).ToString();             //TODO?

            return(await this.GetBlocksAsync(unixMillisstring));
        }