public void IsUsingDefaultFormat_FalseAfterConfigure()
        {
            var converter = new TimestampFromTimeSpanConverter();

            converter.Configure(@"d\.hh\:mm\:ss");

            Assert.IsFalse(converter.IsUsingDefaultFormat);
        }
        public void Convert_ValidValue()
        {
            var converter = new TimestampFromTimeSpanConverter();

            var expected = DateTimeOffset.MinValue.Add(new TimeSpan(((((14L * 60 + 30) * 60 + 20) * 1000 + 40) * 1000 + 555) * 10));

            DateTimeOffset timestamp = converter.Convert("14:30:20.040555");

            Assert.AreEqual(expected, timestamp);
        }
        public void Configure_ResetFormatWithNullOrEmptyString()
        {
            var converter = new TimestampFromTimeSpanConverter();

            converter.Configure(@"d\.hh\:mm\:ss");

            converter.Configure(String.Empty);

            Assert.IsTrue(converter.IsUsingDefaultFormat);
        }
        public void ConvertBack_ValidValue_IgnoreDatePart()
        {
            var converter = new TimestampFromTimeSpanConverter();

            string expected  = "14:30:20.0405550";
            var    timestamp = new DateTimeOffset(new DateTime(2018, 3, 24)).Add(new TimeSpan(((((14L * 60 + 30) * 60 + 20) * 1000 + 40) * 1000 + 555) * 10));

            string timestampString = converter.ConvertBack(timestamp);

            Assert.AreEqual(expected, timestampString);
        }
        public void ConvertBack_ValidValue_TimeOnly()
        {
            var converter = new TimestampFromTimeSpanConverter();

            string expected  = "14:30:20.0405550";
            var    timestamp = DateTimeOffset.MinValue.Add(new TimeSpan(((((14L * 60 + 30) * 60 + 20) * 1000 + 40) * 1000 + 555) * 10));

            string timestampString = converter.ConvertBack(timestamp);

            Assert.AreEqual(expected, timestampString);
        }
        public void Convert_ValidValue_CustomFormat()
        {
            var converter = new TimestampFromTimeSpanConverter();

            converter.Configure(@"hh\-mm\-ss\.ffffff");

            var expected = DateTimeOffset.MinValue.Add(new TimeSpan(((((14L * 60 + 30) * 60 + 20) * 1000 + 40) * 1000 + 555) * 10));

            DateTimeOffset timestamp = converter.Convert("14-30-20.040555");

            Assert.AreEqual(expected, timestamp);
        }
        public void ConvertBack_ValidValue_CustomFormat()
        {
            var converter = new TimestampFromTimeSpanConverter();

            converter.Configure(@"hh\-mm\-ss\.fff");

            string expected  = "14-30-20.040";
            var    timestamp = new DateTimeOffset(new DateTime(2018, 3, 24)).Add(new TimeSpan(((((14L * 60 + 30) * 60 + 20) * 1000 + 40) * 1000 + 555) * 10));

            string timestampString = converter.ConvertBack(timestamp);

            Assert.AreEqual(expected, timestampString);
        }
        public void Convert_InvalidValue()
        {
            var converter = new TimestampFromTimeSpanConverter();

            try
            {
                DateTimeOffset timestamp = converter.Convert("14-30-20.040555");

                Assert.Fail();
            }
            catch (Exception)
            {
            }
        }
        public void IsUsingDefaultFormat_TrueForNewInstance()
        {
            var converter = new TimestampFromTimeSpanConverter();

            Assert.IsTrue(converter.IsUsingDefaultFormat);
        }