public void MergeIntervals_Normal_2Intervals(
                [Values(true, false)] bool reverse)
            {
                var intNow = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(0), EndTS = DateTime.Today.AddDays(1), RegistrationDate = DateTime.Today.AddDays(0)
                };
                var intPrv = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(-4), EndTS = DateTime.Today.AddDays(0), RegistrationDate = DateTime.Today.AddDays(-4)
                };

                var res = RegisteredInterval.MergeIntervals <RegisteredIntervalStub>(CreateArray(reverse, intNow, intPrv));

                Assert.AreEqual(intPrv, res.First());
                Assert.AreEqual(intNow, res.Last());
            }
            public void MergeIntervals_2_ClosedIdenticalIntervals_LatestRegistrationDateWins(
                [Values(true, false)] bool reverse)
            {
                var intNow = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(0), EndTS = DateTime.Today.AddDays(5), RegistrationDate = DateTime.Today.AddDays(0)
                };
                var intPrv = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(0), EndTS = DateTime.Today.AddDays(5), RegistrationDate = DateTime.Today.AddDays(-4)
                };

                var res = RegisteredInterval.MergeIntervals <RegisteredIntervalStub>(CreateArray(reverse, intNow, intPrv));

                Assert.AreEqual(1, res.Length);
                Assert.AreEqual(intNow, res.First());
            }
            public void MergeIntervals_2OpenStartAndEnd_OnlyLatestInterval(
                [Values(true, false)] bool reverse)
            {
                var intNow = new RegisteredIntervalStub()
                {
                    StartTS = null, EndTS = null, RegistrationDate = DateTime.Today.AddDays(0)
                };
                var intPrv = new RegisteredIntervalStub()
                {
                    StartTS = null, EndTS = null, RegistrationDate = DateTime.Today.AddDays(-4)
                };

                var res = RegisteredInterval.MergeIntervals <RegisteredIntervalStub>(CreateArray(reverse, intNow, intPrv));

                Assert.AreEqual(1, res.Length);
                Assert.AreEqual(intNow, res.First());
            }
            public void MergeIntervals_2_ClosedStart_OpenEnd_1PastAnd1Current(
                [Values(true, false)] bool reverse)
            {
                var intNow = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(0), EndTS = null, RegistrationDate = DateTime.Today.AddDays(0)
                };
                var intPrv = new RegisteredIntervalStub()
                {
                    StartTS = DateTime.Today.AddDays(-5), EndTS = null, RegistrationDate = DateTime.Today.AddDays(-4)
                };

                var res = RegisteredInterval.MergeIntervals <RegisteredIntervalStub>(CreateArray(reverse, intNow, intPrv));

                Assert.AreEqual(2, res.Length);
                Assert.AreEqual(intPrv, res.First());
                Assert.AreEqual(intNow, res.Last());
                Assert.AreEqual(intNow.StartTS.Value, intPrv.EndTS.Value);
            }