@@ -285,6 +285,7 @@ private static void AssertSubseconds( Timestamp target, DateTime expected )
285285 Assert . That ( target . Microsecond , Is . EqualTo ( ticks / 10 ) , "Microsecond" ) ;
286286 Assert . That ( target . Nanosecond , Is . EqualTo ( ( ticks % 10 ) * 100 ) , "Nanosecond" ) ;
287287 }
288+
288289 [ Test ]
289290 public void TestFromDateTimeOffset_UtcNow_OK ( )
290291 {
@@ -536,5 +537,379 @@ private static void AssertSubseconds( Timestamp target, DateTimeOffset expected
536537 Assert . That ( target . Microsecond , Is . EqualTo ( ticks / 10 ) , "Microsecond" ) ;
537538 Assert . That ( target . Nanosecond , Is . EqualTo ( ( ticks % 10 ) * 100 ) , "Nanosecond" ) ;
538539 }
540+
541+ #if ! NET35 && ! SILVERLIGHT && ! NETSTANDARD1_1
542+
543+ [ Test ]
544+ public void TestFromDateTime_UnixEpoc_OK ( )
545+ {
546+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( 0 ) . DateTime ;
547+ var target = Timestamp . FromDateTime ( source ) ;
548+ var expected = source ;
549+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
550+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
551+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
552+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
553+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
554+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
555+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
556+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
557+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
558+ AssertSubseconds ( target , expected ) ;
559+ }
560+
561+ [ Test ]
562+ public void TestFromDateTime_UnixEpocMinus1Millisecond_OK ( )
563+ {
564+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( - 1 ) . DateTime ;
565+ var target = Timestamp . FromDateTime ( source ) ;
566+ var expected = source ;
567+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
568+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
569+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
570+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
571+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
572+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
573+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
574+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
575+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
576+ AssertSubseconds ( target , expected ) ;
577+ }
578+
579+ [ Test ]
580+ public void TestFromDateTime_UnixEpocPlus1Millisecond_OK ( )
581+ {
582+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( 1 ) . DateTime ;
583+ var target = Timestamp . FromDateTime ( source ) ;
584+ var expected = source ;
585+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
586+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
587+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
588+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
589+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
590+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
591+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
592+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
593+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
594+ AssertSubseconds ( target , expected ) ;
595+ }
596+
597+ [ Test ]
598+ public void TestFromDateTime_UnixEpocMinusSecond_OK ( )
599+ {
600+ var source = DateTimeOffset . FromUnixTimeSeconds ( - 1 ) . DateTime ;
601+ var target = Timestamp . FromDateTime ( source ) ;
602+ var expected = source ;
603+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
604+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
605+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
606+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
607+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
608+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
609+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
610+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
611+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
612+ AssertSubseconds ( target , expected ) ;
613+ }
614+
615+ [ Test ]
616+ public void TestFromDateTime_UnixEpocPlus1Second_OK ( )
617+ {
618+ var source = DateTimeOffset . FromUnixTimeSeconds ( 1 ) . DateTime ;
619+ var target = Timestamp . FromDateTime ( source ) ;
620+ var expected = source ;
621+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
622+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
623+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
624+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
625+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
626+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
627+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
628+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
629+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
630+ AssertSubseconds ( target , expected ) ;
631+ }
632+
633+ [ Test ]
634+ public void TestToDateTime_UnixEpoc_OK ( )
635+ {
636+ var source = default ( Timestamp ) ;
637+ var target = source . ToDateTime ( ) ;
638+ var expected = source ;
639+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
640+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
641+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
642+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
643+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
644+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
645+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
646+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
647+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
648+ AssertSubseconds ( target , expected ) ;
649+ AssertUtc ( target ) ;
650+ }
651+
652+ [ Test ]
653+ public void TestToDateTime_UnixEpocMinus1Millisecond_OK ( )
654+ {
655+ var source = default ( Timestamp ) . Add ( TimeSpan . FromMilliseconds ( - 1 ) ) ;
656+ var target = source . ToDateTime ( ) ;
657+ var expected = source ;
658+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
659+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
660+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
661+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
662+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
663+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
664+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
665+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
666+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
667+ AssertSubseconds ( target , expected ) ;
668+ AssertUtc ( target ) ;
669+ }
670+
671+ [ Test ]
672+ public void TestToDateTime_UnixEpocPlus1Millisecond_OK ( )
673+ {
674+ var source = default ( Timestamp ) . Add ( TimeSpan . FromMilliseconds ( 1 ) ) ;
675+ var target = source . ToDateTime ( ) ;
676+ var expected = source ;
677+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
678+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
679+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
680+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
681+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
682+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
683+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
684+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
685+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
686+ AssertSubseconds ( target , expected ) ;
687+ AssertUtc ( target ) ;
688+ }
689+
690+ [ Test ]
691+ public void TestToDateTime_UnixEpocMinus1Second_OK ( )
692+ {
693+ var source = default ( Timestamp ) . Add ( TimeSpan . FromSeconds ( - 1 ) ) ;
694+ var target = source . ToDateTime ( ) ;
695+ var expected = source ;
696+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
697+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
698+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
699+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
700+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
701+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
702+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
703+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
704+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
705+ AssertSubseconds ( target , expected ) ;
706+ AssertUtc ( target ) ;
707+ }
708+
709+ [ Test ]
710+ public void TestToDateTime_UnixEpocPlus1Second_OK ( )
711+ {
712+ var source = default ( Timestamp ) . Add ( TimeSpan . FromSeconds ( 1 ) ) ;
713+ var target = source . ToDateTime ( ) ;
714+ var expected = source ;
715+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
716+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
717+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
718+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
719+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
720+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
721+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
722+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
723+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
724+ AssertSubseconds ( target , expected ) ;
725+ AssertUtc ( target ) ;
726+ }
727+
728+ [ Test ]
729+ public void TestFromDateTimeOffset_UnixEpoc_OK ( )
730+ {
731+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( 0 ) ;
732+ var target = Timestamp . FromDateTimeOffset ( source ) ;
733+ var expected = source ;
734+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
735+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
736+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
737+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
738+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
739+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
740+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
741+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
742+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
743+ AssertSubseconds ( target , expected ) ;
744+ }
745+
746+ [ Test ]
747+ public void TestFromDateTimeOffset_UnixEpocMinus1Millisecond_OK ( )
748+ {
749+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( - 1 ) ;
750+ var target = Timestamp . FromDateTimeOffset ( source ) ;
751+ var expected = source ;
752+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
753+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
754+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
755+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
756+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
757+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
758+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
759+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
760+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
761+ AssertSubseconds ( target , expected ) ;
762+ }
763+
764+ [ Test ]
765+ public void TestFromDateTimeOffset_UnixEpocPlus1Millisecond_OK ( )
766+ {
767+ var source = DateTimeOffset . FromUnixTimeMilliseconds ( 1 ) ;
768+ var target = Timestamp . FromDateTimeOffset ( source ) ;
769+ var expected = source ;
770+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
771+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
772+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
773+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
774+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
775+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
776+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
777+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
778+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
779+ AssertSubseconds ( target , expected ) ;
780+ }
781+
782+ [ Test ]
783+ public void TestFromDateTimeOffset_UnixEpocMinus1Second_OK ( )
784+ {
785+ var source = DateTimeOffset . FromUnixTimeSeconds ( - 1 ) ;
786+ var target = Timestamp . FromDateTimeOffset ( source ) ;
787+ var expected = source ;
788+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
789+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
790+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
791+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
792+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
793+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
794+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
795+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
796+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
797+ AssertSubseconds ( target , expected ) ;
798+ }
799+
800+ [ Test ]
801+ public void TestFromDateTimeOffset_UnixEpocPlus1Second_OK ( )
802+ {
803+ var source = DateTimeOffset . FromUnixTimeSeconds ( 1 ) ;
804+ var target = Timestamp . FromDateTimeOffset ( source ) ;
805+ var expected = source ;
806+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
807+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
808+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
809+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
810+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
811+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
812+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
813+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
814+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
815+ AssertSubseconds ( target , expected ) ;
816+ }
817+
818+ [ Test ]
819+ public void TestToDateTimeOffset_UnixEpoc_OK ( )
820+ {
821+ var source = default ( Timestamp ) ;
822+ var target = source . ToDateTimeOffset ( ) ;
823+ var expected = source ;
824+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
825+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
826+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
827+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
828+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
829+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
830+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
831+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
832+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
833+ AssertSubseconds ( target , expected ) ;
834+ AssertUtc ( target ) ;
835+ }
836+
837+ [ Test ]
838+ public void TestToDateTimeOffset_UnixEpocMinus1Millisecond_OK ( )
839+ {
840+ var source = default ( Timestamp ) . Add ( TimeSpan . FromMilliseconds ( - 1 ) ) ;
841+ var target = source . ToDateTimeOffset ( ) ;
842+ var expected = source ;
843+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
844+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
845+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
846+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
847+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
848+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
849+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
850+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
851+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
852+ AssertSubseconds ( target , expected ) ;
853+ AssertUtc ( target ) ;
854+ }
855+
856+ [ Test ]
857+ public void TestToDateTimeOffset_UnixEpocPlus1Millisecond_OK ( )
858+ {
859+ var source = default ( Timestamp ) . Add ( TimeSpan . FromMilliseconds ( 1 ) ) ;
860+ var target = source . ToDateTimeOffset ( ) ;
861+ var expected = source ;
862+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
863+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
864+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
865+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
866+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
867+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
868+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
869+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
870+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
871+ AssertSubseconds ( target , expected ) ;
872+ AssertUtc ( target ) ;
873+ }
874+
875+ [ Test ]
876+ public void TestToDateTimeOffset_UnixEpocMinus1Second_OK ( )
877+ {
878+ var source = default ( Timestamp ) . Add ( TimeSpan . FromSeconds ( - 1 ) ) ;
879+ var target = source . ToDateTimeOffset ( ) ;
880+ var expected = source ;
881+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
882+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
883+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
884+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
885+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
886+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
887+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
888+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
889+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
890+ AssertSubseconds ( target , expected ) ;
891+ AssertUtc ( target ) ;
892+ }
893+
894+ [ Test ]
895+ public void TestToDateTimeOffset_UnixEpocPlus1Second_OK ( )
896+ {
897+ var source = default ( Timestamp ) . Add ( TimeSpan . FromSeconds ( 1 ) ) ;
898+ var target = source . ToDateTimeOffset ( ) ;
899+ var expected = source ;
900+ Assert . That ( target . Year , Is . EqualTo ( expected . Year ) , "Year" ) ;
901+ Assert . That ( target . Month , Is . EqualTo ( expected . Month ) , "Month" ) ;
902+ Assert . That ( target . Day , Is . EqualTo ( expected . Day ) , "Day" ) ;
903+ Assert . That ( target . DayOfYear , Is . EqualTo ( expected . DayOfYear ) , "DayOfYear" ) ;
904+ Assert . That ( target . DayOfWeek , Is . EqualTo ( expected . DayOfWeek ) , "DayOfWeek" ) ;
905+ Assert . That ( target . Hour , Is . EqualTo ( expected . Hour ) , "Hour" ) ;
906+ Assert . That ( target . Minute , Is . EqualTo ( expected . Minute ) , "Minute" ) ;
907+ Assert . That ( target . Second , Is . EqualTo ( expected . Second ) , "Second" ) ;
908+ Assert . That ( target . Millisecond , Is . EqualTo ( expected . Millisecond ) , "Millisecond" ) ;
909+ AssertSubseconds ( target , expected ) ;
910+ AssertUtc ( target ) ;
911+ }
912+
913+ #endif // NET35 && !SILVERLIGHT && !NETSTANDARD1_1
539914 }
540915}
0 commit comments