Lines Matching refs:Date

136         Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
160 assert(Interval!Date(Date(1996, 1, 2), dur!"days"(3)) ==
161 Interval!Date(Date(1996, 1, 2), Date(1996, 1, 5)));
203 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).begin ==
204 Date(1996, 1, 2));
236 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).end ==
237 Date(2012, 3, 1));
269 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).length ==
284 assert(Interval!Date(Date(1996, 1, 2), Date(1996, 1, 2)).empty);
285 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).empty);
306 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
307 Date(1994, 12, 24)));
309 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
310 Date(2000, 1, 5)));
311 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
312 Date(2012, 3, 1)));
334 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
335 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
337 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
338 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
340 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
341 Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
370 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
371 PosInfInterval!Date(Date(1999, 5, 4))));
397 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
398 NegInfInterval!Date(Date(1996, 5, 4))));
421 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
422 Date(1994, 12, 24)));
424 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
425 Date(2000, 1, 5)));
427 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
428 Date(2012, 3, 1)));
451 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
452 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
454 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
455 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
457 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
458 Interval!Date(Date(2012, 3, 1), Date(2013, 5, 1))));
482 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
483 PosInfInterval!Date(Date(1999, 5, 4))));
485 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
486 PosInfInterval!Date(Date(2013, 3, 7))));
512 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
513 NegInfInterval!Date(Date(1996, 5, 4))));
536 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
537 Date(1994, 12, 24)));
539 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
540 Date(2000, 1, 5)));
542 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
543 Date(2012, 3, 1)));
566 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
567 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
569 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
570 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
572 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
573 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
600 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
601 PosInfInterval!Date(Date(1999, 5, 4))));
624 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
625 NegInfInterval!Date(Date(1996, 1, 2))));
647 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
648 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
650 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
651 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
653 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
654 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
677 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
678 PosInfInterval!Date(Date(1999, 5, 4))));
680 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
681 PosInfInterval!Date(Date(2012, 3, 1))));
703 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
704 NegInfInterval!Date(Date(1996, 1, 2))));
706 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
707 NegInfInterval!Date(Date(2000, 1, 2))));
729 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
730 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
731 Interval!Date(Date(1996, 1 , 2), Date(2000, 8, 2)));
733 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
734 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
735 Interval!Date(Date(1999, 1 , 12), Date(2011, 9, 17)));
764 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
765 PosInfInterval!Date(Date(1990, 7, 6))) ==
766 Interval!Date(Date(1996, 1 , 2), Date(2012, 3, 1)));
768 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
769 PosInfInterval!Date(Date(1999, 1, 12))) ==
770 Interval!Date(Date(1999, 1 , 12), Date(2012, 3, 1)));
796 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
797 NegInfInterval!Date(Date(1999, 7, 6))) ==
798 Interval!Date(Date(1996, 1 , 2), Date(1999, 7, 6)));
800 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
801 NegInfInterval!Date(Date(2013, 1, 12))) ==
802 Interval!Date(Date(1996, 1 , 2), Date(2012, 3, 1)));
829 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
830 Interval!Date(Date(1990, 7, 6), Date(1996, 1, 2))));
832 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
833 Interval!Date(Date(2012, 3, 1), Date(2013, 9, 17))));
835 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
836 Interval!Date(Date(1989, 3, 1), Date(2012, 3, 1))));
860 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
861 PosInfInterval!Date(Date(1999, 5, 4))));
863 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
864 PosInfInterval!Date(Date(2012, 3, 1))));
887 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
888 NegInfInterval!Date(Date(1996, 1, 2))));
890 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
891 NegInfInterval!Date(Date(2000, 1, 2))));
913 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
914 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
915 Interval!Date(Date(1990, 7 , 6), Date(2012, 3, 1)));
917 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
918 Interval!Date(Date(2012, 3, 1), Date(2013, 5, 7))) ==
919 Interval!Date(Date(1996, 1 , 2), Date(2013, 5, 7)));
948 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
949 PosInfInterval!Date(Date(1990, 7, 6))) ==
950 PosInfInterval!Date(Date(1990, 7 , 6)));
952 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
953 PosInfInterval!Date(Date(2012, 3, 1))) ==
954 PosInfInterval!Date(Date(1996, 1 , 2)));
980 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
981 NegInfInterval!Date(Date(1996, 1, 2))) ==
982 NegInfInterval!Date(Date(2012, 3 , 1)));
984 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(
985 NegInfInterval!Date(Date(2013, 1, 12))) ==
986 NegInfInterval!Date(Date(2013, 1 , 12)));
1014 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1015 Interval!Date(Date(1990, 7, 6), Date(1991, 1, 8))) ==
1016 Interval!Date(Date(1990, 7 , 6), Date(2012, 3, 1)));
1018 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1019 Interval!Date(Date(2012, 3, 1), Date(2013, 5, 7))) ==
1020 Interval!Date(Date(1996, 1 , 2), Date(2013, 5, 7)));
1049 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1050 PosInfInterval!Date(Date(1990, 7, 6))) ==
1051 PosInfInterval!Date(Date(1990, 7 , 6)));
1053 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1054 PosInfInterval!Date(Date(2050, 1, 1))) ==
1055 PosInfInterval!Date(Date(1996, 1 , 2)));
1079 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1080 NegInfInterval!Date(Date(1602, 5, 21))) ==
1081 NegInfInterval!Date(Date(2012, 3 , 1)));
1083 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(
1084 NegInfInterval!Date(Date(2013, 1, 12))) ==
1085 NegInfInterval!Date(Date(2013, 1 , 12)));
1110 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 4, 5));
1111 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 4, 5));
1114 assert(interval1 == Interval!Date(Date(1996, 2, 21), Date(2012, 5, 25)));
1117 assert(interval2 == Interval!Date(Date(1995, 11, 13), Date(2012, 2, 15)));
1160 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1161 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1164 assert(interval1 == Interval!Date(Date(1998, 1, 2), Date(2014, 3, 1)));
1167 assert(interval2 == Interval!Date(Date(1994, 1, 2), Date(2010, 3, 1)));
1207 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1208 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1211 assert(interval1 == Interval!Date(Date(1994, 1, 2), Date(2014, 3, 1)));
1214 assert(interval2 == Interval!Date(Date(1998, 1, 2), Date(2010, 3, 1)));
1285 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1286 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1289 assert(interval1 == Interval!Date(Date(1994, 1, 2), Date(2014, 3, 1)));
1292 assert(interval2 == Interval!Date(Date(1998, 1, 2), Date(2010, 3, 1)));
1406 auto interval = Interval!Date(Date(2010, 9, 1), Date(2010, 9, 9));
1407 auto func = delegate (scope const Date date) // For iterating over even-numbered days.
1416 // An odd day. Using PopFirst.yes would have made this Date(2010, 9, 2).
1417 assert(range.front == Date(2010, 9, 1));
1420 assert(range.front == Date(2010, 9, 2));
1423 assert(range.front == Date(2010, 9, 4));
1426 assert(range.front == Date(2010, 9, 6));
1429 assert(range.front == Date(2010, 9, 8));
1500 auto interval = Interval!Date(Date(2010, 9, 1), Date(2010, 9, 9));
1501 auto func = delegate (scope const Date date) // For iterating over even-numbered days.
1510 // An odd day. Using PopFirst.yes would have made this Date(2010, 9, 8).
1511 assert(range.front == Date(2010, 9, 9));
1514 assert(range.front == Date(2010, 9, 8));
1517 assert(range.front == Date(2010, 9, 6));
1520 assert(range.front == Date(2010, 9, 4));
1523 assert(range.front == Date(2010, 9, 2));
1614 assertThrown!DateTimeException(Interval!Date(Date(2010, 1, 1), Date(1, 1, 1)));
1616 Interval!Date(Date.init, Date.init);
1624 Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
1625 assert(Interval!Date(Date(1996, 1, 2), dur!"weeks"(3)) == Interval!Date(Date(1996, 1, 2), Date(1996, 1, 23)));
1626 assert(Interval!Date(Date(1996, 1, 2), dur!"days"(3)) == Interval!Date(Date(1996, 1, 2), Date(1996, 1, 5)));
1642 assert(Interval!Date(Date(1, 1, 1), Date(2010, 1, 1)).begin == Date(1, 1, 1));
1643 assert(Interval!Date(Date(2010, 1, 1), Date(2010, 1, 1)).begin == Date(2010, 1, 1));
1644 assert(Interval!Date(Date(1997, 12, 31), Date(1998, 1, 1)).begin == Date(1997, 12, 31));
1646 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1647 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1648 assert(cInterval.begin == Date(2010, 7, 4));
1649 assert(iInterval.begin == Date(2010, 7, 4));
1652 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).begin == Date(1996, 1, 2));
1660 assert(Interval!Date(Date(1, 1, 1), Date(2010, 1, 1)).end == Date(2010, 1, 1));
1661 assert(Interval!Date(Date(2010, 1, 1), Date(2010, 1, 1)).end == Date(2010, 1, 1));
1662 assert(Interval!Date(Date(1997, 12, 31), Date(1998, 1, 1)).end == Date(1998, 1, 1));
1664 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1665 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1666 assert(cInterval.end == Date(2012, 1, 7));
1667 assert(iInterval.end == Date(2012, 1, 7));
1670 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).end == Date(2012, 3, 1));
1679 assert(Interval!Date(Date(2010, 1, 1), Date(2010, 1, 1)).length == dur!"days"(0));
1680 assert(Interval!Date(Date(2010, 1, 1), Date(2010, 4, 1)).length == dur!"days"(90));
1687 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1688 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1693 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).length == dur!"days"(5903));
1702 assert(Interval!Date(Date(2010, 1, 1), Date(2010, 1, 1)).empty);
1703 assert(!Interval!Date(Date(2010, 1, 1), Date(2010, 4, 1)).empty);
1708 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1709 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1714 assert(Interval!Date(Date(1996, 1, 2), Date(1996, 1, 2)).empty);
1715 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).empty);
1723 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1725 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).contains(Date(2010, 7, 4)));
1727 assert(!interval.contains(Date(2009, 7, 4)));
1728 assert(!interval.contains(Date(2010, 7, 3)));
1729 assert(interval.contains(Date(2010, 7, 4)));
1730 assert(interval.contains(Date(2010, 7, 5)));
1731 assert(interval.contains(Date(2011, 7, 1)));
1732 assert(interval.contains(Date(2012, 1, 6)));
1733 assert(!interval.contains(Date(2012, 1, 7)));
1734 assert(!interval.contains(Date(2012, 1, 8)));
1735 assert(!interval.contains(Date(2013, 1, 7)));
1737 const cdate = Date(2010, 7, 6);
1738 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1739 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1745 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(Date(1994, 12, 24)));
1746 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(Date(2000, 1, 5)));
1747 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(Date(2012, 3, 1)));
1755 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1757 assertThrown!DateTimeException(interval.contains(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
1758 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).contains(interval));
1759 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4),dur!"days"(0)).contains(
1760 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
1763 assert(!interval.contains(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
1764 assert(!interval.contains(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
1765 assert(!interval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
1766 assert(!interval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
1767 assert(!interval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
1768 assert(!interval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
1769 assert(interval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
1770 assert(interval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
1771 assert(interval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
1772 assert(!interval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
1773 assert(!interval.contains(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
1774 assert(!interval.contains(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
1776 assert(!Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).contains(interval));
1777 assert(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).contains(interval));
1778 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).contains(interval));
1779 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).contains(interval));
1780 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).contains(interval));
1781 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).contains(interval));
1782 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).contains(interval));
1783 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).contains(interval));
1784 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).contains(interval));
1785 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).contains(interval));
1786 assert(!Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).contains(interval));
1787 assert(!Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).contains(interval));
1789 assert(!interval.contains(PosInfInterval!Date(Date(2010, 7, 3))));
1790 assert(!interval.contains(PosInfInterval!Date(Date(2010, 7, 4))));
1791 assert(!interval.contains(PosInfInterval!Date(Date(2010, 7, 5))));
1792 assert(!interval.contains(PosInfInterval!Date(Date(2012, 1, 6))));
1793 assert(!interval.contains(PosInfInterval!Date(Date(2012, 1, 7))));
1794 assert(!interval.contains(PosInfInterval!Date(Date(2012, 1, 8))));
1796 assert(!interval.contains(NegInfInterval!Date(Date(2010, 7, 3))));
1797 assert(!interval.contains(NegInfInterval!Date(Date(2010, 7, 4))));
1798 assert(!interval.contains(NegInfInterval!Date(Date(2010, 7, 5))));
1799 assert(!interval.contains(NegInfInterval!Date(Date(2012, 1, 6))));
1800 assert(!interval.contains(NegInfInterval!Date(Date(2012, 1, 7))));
1801 assert(!interval.contains(NegInfInterval!Date(Date(2012, 1, 8))));
1803 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1804 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1805 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1806 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1807 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1808 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1809 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1810 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1840 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
1841 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
1842 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
1843 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
1844 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(
1845 Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
1847 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(PosInfInterval!Date(Date(1999, 5, 4))));
1849 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).contains(NegInfInterval!Date(Date(1996, 5, 4))));
1857 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1859 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isBefore(Date(2010, 7, 4)));
1861 assert(!interval.isBefore(Date(2009, 7, 3)));
1862 assert(!interval.isBefore(Date(2010, 7, 3)));
1863 assert(!interval.isBefore(Date(2010, 7, 4)));
1864 assert(!interval.isBefore(Date(2010, 7, 5)));
1865 assert(!interval.isBefore(Date(2011, 7, 1)));
1866 assert(!interval.isBefore(Date(2012, 1, 6)));
1867 assert(interval.isBefore(Date(2012, 1, 7)));
1868 assert(interval.isBefore(Date(2012, 1, 8)));
1869 assert(interval.isBefore(Date(2013, 1, 7)));
1871 const cdate = Date(2010, 7, 6);
1872 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1873 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1879 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(Date(1994, 12, 24)));
1880 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(Date(2000, 1, 5)));
1881 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(Date(2012, 3, 1)));
1889 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1891 assertThrown!DateTimeException(interval.isBefore(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
1892 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isBefore(interval));
1893 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isBefore(
1894 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
1897 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
1898 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
1899 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
1900 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
1901 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
1902 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
1903 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
1904 assert(!interval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
1905 assert(!interval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
1906 assert(!interval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
1907 assert(interval.isBefore(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
1908 assert(interval.isBefore(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
1910 assert(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).isBefore(interval));
1911 assert(!Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).isBefore(interval));
1912 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).isBefore(interval));
1913 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).isBefore(interval));
1914 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).isBefore(interval));
1915 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).isBefore(interval));
1916 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).isBefore(interval));
1917 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).isBefore(interval));
1918 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).isBefore(interval));
1919 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).isBefore(interval));
1920 assert(!Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).isBefore(interval));
1921 assert(!Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).isBefore(interval));
1923 assert(!interval.isBefore(PosInfInterval!Date(Date(2010, 7, 3))));
1924 assert(!interval.isBefore(PosInfInterval!Date(Date(2010, 7, 4))));
1925 assert(!interval.isBefore(PosInfInterval!Date(Date(2010, 7, 5))));
1926 assert(!interval.isBefore(PosInfInterval!Date(Date(2012, 1, 6))));
1927 assert(interval.isBefore(PosInfInterval!Date(Date(2012, 1, 7))));
1928 assert(interval.isBefore(PosInfInterval!Date(Date(2012, 1, 8))));
1930 assert(!interval.isBefore(NegInfInterval!Date(Date(2010, 7, 3))));
1931 assert(!interval.isBefore(NegInfInterval!Date(Date(2010, 7, 4))));
1932 assert(!interval.isBefore(NegInfInterval!Date(Date(2010, 7, 5))));
1933 assert(!interval.isBefore(NegInfInterval!Date(Date(2012, 1, 6))));
1934 assert(!interval.isBefore(NegInfInterval!Date(Date(2012, 1, 7))));
1935 assert(!interval.isBefore(NegInfInterval!Date(Date(2012, 1, 8))));
1937 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1938 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1939 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1940 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1941 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
1942 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1943 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1944 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
1974 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
1975 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
1976 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
1977 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
1978 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(
1979 Interval!Date(Date(2012, 3, 1), Date(2013, 5, 1))));
1981 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(PosInfInterval!Date(Date(1999, 5, 4))));
1982 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(PosInfInterval!Date(Date(2013, 3, 7))));
1984 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isBefore(NegInfInterval!Date(Date(1996, 5, 4))));
1992 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
1994 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isAfter(Date(2010, 7, 4)));
1996 assert(interval.isAfter(Date(2009, 7, 4)));
1997 assert(interval.isAfter(Date(2010, 7, 3)));
1998 assert(!interval.isAfter(Date(2010, 7, 4)));
1999 assert(!interval.isAfter(Date(2010, 7, 5)));
2000 assert(!interval.isAfter(Date(2011, 7, 1)));
2001 assert(!interval.isAfter(Date(2012, 1, 6)));
2002 assert(!interval.isAfter(Date(2012, 1, 7)));
2003 assert(!interval.isAfter(Date(2012, 1, 8)));
2004 assert(!interval.isAfter(Date(2013, 1, 7)));
2006 const cdate = Date(2010, 7, 6);
2007 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2008 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2014 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(Date(1994, 12, 24)));
2015 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(Date(2000, 1, 5)));
2016 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(Date(2012, 3, 1)));
2024 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2026 assertThrown!DateTimeException(interval.isAfter(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2027 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isAfter(interval));
2028 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).isAfter(
2029 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2032 assert(interval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
2033 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
2034 assert(interval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
2035 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
2036 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
2037 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
2038 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
2039 assert(!interval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
2040 assert(!interval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
2041 assert(!interval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
2042 assert(!interval.isAfter(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
2043 assert(!interval.isAfter(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
2045 assert(!Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).isAfter(interval));
2046 assert(!Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).isAfter(interval));
2047 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).isAfter(interval));
2048 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).isAfter(interval));
2049 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).isAfter(interval));
2050 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).isAfter(interval));
2051 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).isAfter(interval));
2052 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).isAfter(interval));
2053 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).isAfter(interval));
2054 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).isAfter(interval));
2055 assert(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).isAfter(interval));
2056 assert(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).isAfter(interval));
2058 assert(!interval.isAfter(PosInfInterval!Date(Date(2010, 7, 3))));
2059 assert(!interval.isAfter(PosInfInterval!Date(Date(2010, 7, 4))));
2060 assert(!interval.isAfter(PosInfInterval!Date(Date(2010, 7, 5))));
2061 assert(!interval.isAfter(PosInfInterval!Date(Date(2012, 1, 6))));
2062 assert(!interval.isAfter(PosInfInterval!Date(Date(2012, 1, 7))));
2063 assert(!interval.isAfter(PosInfInterval!Date(Date(2012, 1, 8))));
2065 assert(interval.isAfter(NegInfInterval!Date(Date(2010, 7, 3))));
2066 assert(interval.isAfter(NegInfInterval!Date(Date(2010, 7, 4))));
2067 assert(!interval.isAfter(NegInfInterval!Date(Date(2010, 7, 5))));
2068 assert(!interval.isAfter(NegInfInterval!Date(Date(2012, 1, 6))));
2069 assert(!interval.isAfter(NegInfInterval!Date(Date(2012, 1, 7))));
2070 assert(!interval.isAfter(NegInfInterval!Date(Date(2012, 1, 8))));
2072 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2073 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2074 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2075 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2076 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2077 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2078 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2079 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2109 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
2110 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
2111 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
2112 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
2113 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(
2114 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
2116 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(PosInfInterval!Date(Date(1999, 5, 4))));
2118 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAfter(NegInfInterval!Date(Date(1996, 1, 2))));
2126 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2128 assertThrown!DateTimeException(interval.intersects(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2129 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).intersects(interval));
2130 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).intersects(
2131 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2134 assert(!interval.intersects(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
2135 assert(interval.intersects(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
2136 assert(!interval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
2137 assert(interval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
2138 assert(interval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
2139 assert(interval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
2140 assert(interval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
2141 assert(interval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
2142 assert(interval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
2143 assert(interval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
2144 assert(!interval.intersects(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
2145 assert(!interval.intersects(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
2147 assert(!Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).intersects(interval));
2148 assert(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).intersects(interval));
2149 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).intersects(interval));
2150 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).intersects(interval));
2151 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).intersects(interval));
2152 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).intersects(interval));
2153 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).intersects(interval));
2154 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).intersects(interval));
2155 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).intersects(interval));
2156 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).intersects(interval));
2157 assert(!Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).intersects(interval));
2158 assert(!Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).intersects(interval));
2160 assert(interval.intersects(PosInfInterval!Date(Date(2010, 7, 3))));
2161 assert(interval.intersects(PosInfInterval!Date(Date(2010, 7, 4))));
2162 assert(interval.intersects(PosInfInterval!Date(Date(2010, 7, 5))));
2163 assert(interval.intersects(PosInfInterval!Date(Date(2012, 1, 6))));
2164 assert(!interval.intersects(PosInfInterval!Date(Date(2012, 1, 7))));
2165 assert(!interval.intersects(PosInfInterval!Date(Date(2012, 1, 8))));
2167 assert(!interval.intersects(NegInfInterval!Date(Date(2010, 7, 3))));
2168 assert(!interval.intersects(NegInfInterval!Date(Date(2010, 7, 4))));
2169 assert(interval.intersects(NegInfInterval!Date(Date(2010, 7, 5))));
2170 assert(interval.intersects(NegInfInterval!Date(Date(2012, 1, 6))));
2171 assert(interval.intersects(NegInfInterval!Date(Date(2012, 1, 7))));
2172 assert(interval.intersects(NegInfInterval!Date(Date(2012, 1, 8))));
2174 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2175 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2176 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2177 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2178 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2179 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2180 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2181 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2211 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
2212 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
2213 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
2214 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
2215 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(
2216 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
2218 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(PosInfInterval!Date(Date(1999, 5, 4))));
2219 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(PosInfInterval!Date(Date(2012, 3, 1))));
2221 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(NegInfInterval!Date(Date(1996, 1, 2))));
2222 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersects(NegInfInterval!Date(Date(2000, 1, 2))));
2230 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2232 assertThrown!DateTimeException(interval.intersection(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2233 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).intersection(interval));
2234 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 4), dur!"days"(0)).intersection(
2235 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2237 assertThrown!DateTimeException(interval.intersection(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
2238 assertThrown!DateTimeException(interval.intersection(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
2239 assertThrown!DateTimeException(interval.intersection(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
2240 assertThrown!DateTimeException(interval.intersection(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
2242 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).intersection(interval));
2243 assertThrown!DateTimeException(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).intersection(interval));
2244 assertThrown!DateTimeException(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).intersection(interval));
2245 assertThrown!DateTimeException(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).intersection(interval));
2247 assertThrown!DateTimeException(interval.intersection(PosInfInterval!Date(Date(2012, 1, 7))));
2248 assertThrown!DateTimeException(interval.intersection(PosInfInterval!Date(Date(2012, 1, 8))));
2250 assertThrown!DateTimeException(interval.intersection(NegInfInterval!Date(Date(2010, 7, 3))));
2251 assertThrown!DateTimeException(interval.intersection(NegInfInterval!Date(Date(2010, 7, 4))));
2254 assert(interval.intersection(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
2255 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2256 assert(interval.intersection(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
2257 Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)));
2258 assert(interval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
2259 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2260 assert(interval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
2261 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2262 assert(interval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
2263 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)));
2264 assert(interval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
2265 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)));
2266 assert(interval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
2267 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
2268 assert(interval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
2269 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
2271 assert(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).intersection(interval) ==
2272 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2273 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).intersection(interval) ==
2274 Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)));
2275 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).intersection(interval) ==
2276 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2277 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).intersection(interval) ==
2278 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2279 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).intersection(interval) ==
2280 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)));
2281 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).intersection(interval) ==
2282 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)));
2283 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).intersection(interval) ==
2284 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
2285 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).intersection(interval) ==
2286 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
2288 assert(interval.intersection(PosInfInterval!Date(Date(2010, 7, 3))) ==
2289 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2290 assert(interval.intersection(PosInfInterval!Date(Date(2010, 7, 4))) ==
2291 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2292 assert(interval.intersection(PosInfInterval!Date(Date(2010, 7, 5))) ==
2293 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)));
2294 assert(interval.intersection(PosInfInterval!Date(Date(2012, 1, 6))) ==
2295 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
2297 assert(interval.intersection(NegInfInterval!Date(Date(2010, 7, 5))) ==
2298 Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)));
2299 assert(interval.intersection(NegInfInterval!Date(Date(2012, 1, 6))) ==
2300 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 6)));
2301 assert(interval.intersection(NegInfInterval!Date(Date(2012, 1, 7))) ==
2302 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2303 assert(interval.intersection(NegInfInterval!Date(Date(2012, 1, 8))) ==
2304 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2306 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2307 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2308 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2309 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2310 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2311 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2312 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2313 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2343 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2344 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
2345 Interval!Date(Date(1996, 1 , 2), Date(2000, 8, 2)));
2346 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2347 Interval!Date(Date(1999, 1, 12),Date(2011, 9, 17))) ==
2348 Interval!Date(Date(1999, 1 , 12), Date(2011, 9, 17)));
2350 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2351 PosInfInterval!Date(Date(1990, 7, 6))) ==
2352 Interval!Date(Date(1996, 1 , 2), Date(2012, 3, 1)));
2353 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2354 PosInfInterval!Date(Date(1999, 1, 12))) ==
2355 Interval!Date(Date(1999, 1 , 12), Date(2012, 3, 1)));
2357 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2358 NegInfInterval!Date(Date(1999, 7, 6))) ==
2359 Interval!Date(Date(1996, 1 , 2), Date(1999, 7, 6)));
2360 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).intersection(
2361 NegInfInterval!Date(Date(2013, 1, 12))) ==
2362 Interval!Date(Date(1996, 1 , 2), Date(2012, 3, 1)));
2370 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2372 static void testInterval(scope const Interval!Date interval1, scope const Interval!Date interval2)
2377 assertThrown!DateTimeException(testInterval(interval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2378 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), interval));
2379 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)),
2380 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2383 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
2384 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
2385 assert(interval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
2386 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
2387 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
2388 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
2389 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
2390 assert(!interval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
2391 assert(!interval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
2392 assert(!interval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
2393 assert(interval.isAdjacent(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
2394 assert(!interval.isAdjacent(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
2396 assert(!Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).isAdjacent(interval));
2397 assert(!Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).isAdjacent(interval));
2398 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).isAdjacent(interval));
2399 assert(!Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).isAdjacent(interval));
2400 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).isAdjacent(interval));
2401 assert(!Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).isAdjacent(interval));
2402 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).isAdjacent(interval));
2403 assert(!Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).isAdjacent(interval));
2404 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).isAdjacent(interval));
2405 assert(!Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).isAdjacent(interval));
2406 assert(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).isAdjacent(interval));
2407 assert(!Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).isAdjacent(interval));
2409 assert(!interval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 3))));
2410 assert(!interval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 4))));
2411 assert(!interval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 5))));
2412 assert(!interval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 6))));
2413 assert(interval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 7))));
2414 assert(!interval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 8))));
2416 assert(!interval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 3))));
2417 assert(interval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 4))));
2418 assert(!interval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 5))));
2419 assert(!interval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 6))));
2420 assert(!interval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 7))));
2421 assert(!interval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 8))));
2423 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2424 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2425 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2426 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2427 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2428 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2429 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2430 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2460 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
2461 Interval!Date(Date(1990, 7, 6), Date(1996, 1, 2))));
2462 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
2463 Interval!Date(Date(2012, 3, 1), Date(2013, 9, 17))));
2464 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(
2465 Interval!Date(Date(1989, 3, 1), Date(2012, 3, 1))));
2467 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(PosInfInterval!Date(Date(1999, 5, 4))));
2468 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(PosInfInterval!Date(Date(2012, 3, 1))));
2470 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).isAdjacent(NegInfInterval!Date(Date(1996, 1, 2))));
2471 assert(!Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)) .isAdjacent(NegInfInterval!Date(Date(2000, 1, 2))));
2479 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2481 static void testInterval(I)(scope const Interval!Date interval1, scope const I interval2)
2486 assertThrown!DateTimeException(testInterval(interval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2487 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), interval));
2488 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)),
2489 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2491 assertThrown!DateTimeException(testInterval(interval, Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
2492 assertThrown!DateTimeException(testInterval(interval, Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
2494 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)), interval));
2495 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)), interval));
2497 assertThrown!DateTimeException(testInterval(interval, PosInfInterval!Date(Date(2012, 1, 8))));
2499 assertThrown!DateTimeException(testInterval(interval, NegInfInterval!Date(Date(2010, 7, 3))));
2502 assert(interval.merge(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
2503 Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)));
2504 assert(interval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
2505 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2506 assert(interval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
2507 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2508 assert(interval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
2509 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2510 assert(interval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
2511 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)));
2512 assert(interval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
2513 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2514 assert(interval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
2515 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2516 assert(interval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
2517 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2518 assert(interval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
2519 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2520 assert(interval.merge(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
2521 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2523 assert(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).merge(interval) ==
2524 Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)));
2525 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).merge(interval) ==
2526 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2527 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).merge(interval) ==
2528 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2529 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).merge(interval) ==
2530 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2531 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).merge(interval) ==
2532 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)));
2533 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).merge(interval) ==
2534 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2535 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).merge(interval) ==
2536 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2537 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).merge(interval) ==
2538 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2539 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).merge(interval) ==
2540 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2541 assert(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).merge(interval) ==
2542 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2544 assert(interval.merge(PosInfInterval!Date(Date(2010, 7, 3))) ==
2545 PosInfInterval!Date(Date(2010, 7, 3)));
2546 assert(interval.merge(PosInfInterval!Date(Date(2010, 7, 4))) ==
2547 PosInfInterval!Date(Date(2010, 7, 4)));
2548 assert(interval.merge(PosInfInterval!Date(Date(2010, 7, 5))) ==
2549 PosInfInterval!Date(Date(2010, 7, 4)));
2550 assert(interval.merge(PosInfInterval!Date(Date(2012, 1, 6))) ==
2551 PosInfInterval!Date(Date(2010, 7, 4)));
2552 assert(interval.merge(PosInfInterval!Date(Date(2012, 1, 7))) ==
2553 PosInfInterval!Date(Date(2010, 7, 4)));
2555 assert(interval.merge(NegInfInterval!Date(Date(2010, 7, 4))) ==
2556 NegInfInterval!Date(Date(2012, 1, 7)));
2557 assert(interval.merge(NegInfInterval!Date(Date(2010, 7, 5))) ==
2558 NegInfInterval!Date(Date(2012, 1, 7)));
2559 assert(interval.merge(NegInfInterval!Date(Date(2012, 1, 6))) ==
2560 NegInfInterval!Date(Date(2012, 1, 7)));
2561 assert(interval.merge(NegInfInterval!Date(Date(2012, 1, 7))) ==
2562 NegInfInterval!Date(Date(2012, 1, 7)));
2563 assert(interval.merge(NegInfInterval!Date(Date(2012, 1, 8))) ==
2564 NegInfInterval!Date(Date(2012, 1, 8)));
2566 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2567 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2568 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2569 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2570 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2571 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2572 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2573 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2603 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
2604 Interval!Date(Date(1990, 7 , 6), Date(2012, 3, 1)));
2605 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(Interval!Date(Date(2012, 3, 1), Date(2013, 5, 7))) ==
2606 Interval!Date(Date(1996, 1 , 2), Date(2013, 5, 7)));
2608 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(PosInfInterval!Date(Date(1990, 7, 6))) ==
2609 PosInfInterval!Date(Date(1990, 7 , 6)));
2610 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(PosInfInterval!Date(Date(2012, 3, 1))) ==
2611 PosInfInterval!Date(Date(1996, 1 , 2)));
2613 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(NegInfInterval!Date(Date(1996, 1, 2))) ==
2614 NegInfInterval!Date(Date(2012, 3 , 1)));
2615 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).merge(NegInfInterval!Date(Date(2013, 1, 12))) ==
2616 NegInfInterval!Date(Date(2013, 1 , 12)));
2624 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2626 static void testInterval(scope const Interval!Date interval1, scope const Interval!Date interval2)
2631 assertThrown!DateTimeException(testInterval(interval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2632 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)),interval));
2633 assertThrown!DateTimeException(testInterval(Interval!Date(Date(2010, 7, 4), dur!"days"(0)),
2634 Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
2637 assert(interval.span(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))) ==
2638 Interval!Date(Date(2010, 7, 1), Date(2012, 1, 7)));
2639 assert(interval.span(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
2640 Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)));
2641 assert(interval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
2642 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2643 assert(interval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
2644 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2645 assert(interval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
2646 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2647 assert(interval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
2648 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)));
2649 assert(interval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
2650 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2651 assert(interval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
2652 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2653 assert(interval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
2654 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2655 assert(interval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
2656 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2657 assert(interval.span(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
2658 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2659 assert(interval.span(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))) ==
2660 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 9)));
2662 assert(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)).span(interval) ==
2663 Interval!Date(Date(2010, 7, 1), Date(2012, 1, 7)));
2664 assert(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)).span(interval) ==
2665 Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3)));
2666 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)).span(interval) ==
2667 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2668 assert(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)).span(interval) ==
2669 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2670 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)).span(interval) ==
2671 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
2672 assert(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)).span(interval) ==
2673 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8)));
2674 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)).span(interval) ==
2675 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2676 assert(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)).span(interval) ==
2677 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2678 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)).span(interval) ==
2679 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
2680 assert(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)).span(interval) ==
2681 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2682 assert(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)).span(interval) ==
2683 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
2684 assert(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)).span(interval) ==
2685 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 9)));
2687 assert(interval.span(PosInfInterval!Date(Date(2010, 7, 3))) == PosInfInterval!Date(Date(2010, 7, 3)));
2688 assert(interval.span(PosInfInterval!Date(Date(2010, 7, 4))) == PosInfInterval!Date(Date(2010, 7, 4)));
2689 assert(interval.span(PosInfInterval!Date(Date(2010, 7, 5))) == PosInfInterval!Date(Date(2010, 7, 4)));
2690 assert(interval.span(PosInfInterval!Date(Date(2012, 1, 6))) == PosInfInterval!Date(Date(2010, 7, 4)));
2691 assert(interval.span(PosInfInterval!Date(Date(2012, 1, 7))) == PosInfInterval!Date(Date(2010, 7, 4)));
2692 assert(interval.span(PosInfInterval!Date(Date(2012, 1, 8))) == PosInfInterval!Date(Date(2010, 7, 4)));
2694 assert(interval.span(NegInfInterval!Date(Date(2010, 7, 3))) == NegInfInterval!Date(Date(2012, 1, 7)));
2695 assert(interval.span(NegInfInterval!Date(Date(2010, 7, 4))) == NegInfInterval!Date(Date(2012, 1, 7)));
2696 assert(interval.span(NegInfInterval!Date(Date(2010, 7, 5))) == NegInfInterval!Date(Date(2012, 1, 7)));
2697 assert(interval.span(NegInfInterval!Date(Date(2012, 1, 6))) == NegInfInterval!Date(Date(2012, 1, 7)));
2698 assert(interval.span(NegInfInterval!Date(Date(2012, 1, 7))) == NegInfInterval!Date(Date(2012, 1, 7)));
2699 assert(interval.span(NegInfInterval!Date(Date(2012, 1, 8))) == NegInfInterval!Date(Date(2012, 1, 8)));
2701 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2702 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2703 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2704 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2705 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
2706 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2707 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2708 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
2738 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(Interval!Date(Date(1990, 7, 6), Date(1991, 1, 8))) ==
2739 Interval!Date(Date(1990, 7 , 6), Date(2012, 3, 1)));
2740 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(Interval!Date(Date(2012, 3, 1), Date(2013, 5, 7))) ==
2741 Interval!Date(Date(1996, 1 , 2), Date(2013, 5, 7)));
2743 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(PosInfInterval!Date(Date(1990, 7, 6))) ==
2744 PosInfInterval!Date(Date(1990, 7 , 6)));
2745 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(PosInfInterval!Date(Date(2050, 1, 1))) ==
2746 PosInfInterval!Date(Date(1996, 1 , 2)));
2748 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(NegInfInterval!Date(Date(1602, 5, 21))) ==
2749 NegInfInterval!Date(Date(2012, 3 , 1)));
2750 assert(Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1)).span(NegInfInterval!Date(Date(2013, 1, 12))) ==
2751 NegInfInterval!Date(Date(2013, 1 , 12)));
2759 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2761 static void testIntervalFail(Interval!Date interval, scope const Duration duration)
2766 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), dur!"days"(1)));
2775 testInterval(interval, dur!"days"(22), Interval!Date(Date(2010, 7, 26), Date(2012, 1, 29)));
2776 testInterval(interval, dur!"days"(-22), Interval!Date(Date(2010, 6, 12), Date(2011, 12, 16)));
2778 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2779 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2784 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 4, 5));
2785 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 4, 5));
2788 assert(interval1 == Interval!Date(Date(1996, 2, 21), Date(2012, 5, 25)));
2791 assert(interval2 == Interval!Date(Date(1995, 11, 13), Date(2012, 2, 15)));
2800 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2802 static void testIntervalFail(Interval!Date interval, int years, int months)
2807 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), 1, 0));
2816 testInterval(interval, 5, 0, AllowDayOverflow.yes, Interval!Date(Date(2015, 7, 4), Date(2017, 1, 7)));
2817 testInterval(interval, -5, 0, AllowDayOverflow.yes, Interval!Date(Date(2005, 7, 4), Date(2007, 1, 7)));
2819 auto interval2 = Interval!Date(Date(2000, 1, 29), Date(2010, 5, 31));
2821 testInterval(interval2, 1, 1, AllowDayOverflow.yes, Interval!Date(Date(2001, 3, 1), Date(2011, 7, 1)));
2822 testInterval(interval2, 1, -1, AllowDayOverflow.yes, Interval!Date(Date(2000, 12, 29), Date(2011, 5, 1)));
2823 testInterval(interval2, -1, -1, AllowDayOverflow.yes, Interval!Date(Date(1998, 12, 29), Date(2009, 5, 1)));
2824 testInterval(interval2, -1, 1, AllowDayOverflow.yes, Interval!Date(Date(1999, 3, 1), Date(2009, 7, 1)));
2826 testInterval(interval2, 1, 1, AllowDayOverflow.no, Interval!Date(Date(2001, 2, 28), Date(2011, 6, 30)));
2827 testInterval(interval2, 1, -1, AllowDayOverflow.no, Interval!Date(Date(2000, 12, 29), Date(2011, 4, 30)));
2828 testInterval(interval2, -1, -1, AllowDayOverflow.no, Interval!Date(Date(1998, 12, 29), Date(2009, 4, 30)));
2829 testInterval(interval2, -1, 1, AllowDayOverflow.no, Interval!Date(Date(1999, 2, 28), Date(2009, 6, 30)));
2832 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2833 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2838 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2839 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2842 assert(interval1 == Interval!Date(Date(1998, 1, 2), Date(2014, 3, 1)));
2845 assert(interval2 == Interval!Date(Date(1994, 1, 2), Date(2010, 3, 1)));
2853 auto interval = Interval!Date(Date(2000, 7, 4), Date(2012, 1, 7));
2860 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), dur!"days"(1)));
2861 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)), dur!"days"(-5)));
2870 testInterval(interval, dur!"days"(22), Interval!Date(Date(2000, 6, 12), Date(2012, 1, 29)));
2871 testInterval(interval, dur!"days"(-22), Interval!Date(Date(2000, 7, 26), Date(2011, 12, 16)));
2873 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2874 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2879 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2880 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2883 assert(interval1 == Interval!Date(Date(1995, 12, 31), Date(2012, 3, 3)));
2886 assert(interval2 == Interval!Date(Date(1996, 1, 4), Date(2012, 2, 28)));
2895 auto interval = Interval!Date(Date(2000, 7, 4), Date(2012, 1, 7));
2897 static void testIntervalFail(Interval!Date interval, int years, int months)
2902 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), dur!"days"(0)), 1, 0));
2903 assertThrown!DateTimeException(testIntervalFail(Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)), -5, 0));
2913 Interval!Date(Date(1995, 7, 4), Date(2017, 1, 7)));
2915 Interval!Date(Date(2005, 7, 4), Date(2007, 1, 7)));
2918 Interval!Date(Date(2000, 7, 4), Date(2017, 1, 7)));
2920 Interval!Date(Date(2000, 7, 4), Date(2007, 1, 7)));
2923 Interval!Date(Date(1995, 7, 4), Date(2012, 1, 7)));
2925 Interval!Date(Date(2005, 7, 4), Date(2012, 1, 7)));
2927 auto interval2 = Interval!Date(Date(2000, 1, 29), Date(2010, 5, 31));
2930 Interval!Date(Date(1998, 12, 29), Date(2011, 7, 1)));
2932 Interval!Date(Date(1999, 3, 1), Date(2011, 5, 1)));
2934 Interval!Date(Date(2001, 3, 1), Date(2009, 5, 1)));
2936 Interval!Date(Date(2000, 12, 29), Date(2009, 7, 1)));
2939 Interval!Date(Date(1998, 12, 29), Date(2011, 6, 30)));
2941 Interval!Date(Date(1999, 2, 28), Date(2011, 4, 30)));
2943 Interval!Date(Date(2001, 2, 28), Date(2009, 4, 30)));
2945 Interval!Date(Date(2000, 12, 29), Date(2009, 6, 30)));
2948 Interval!Date(Date(2000, 1, 29), Date(2011, 7, 1)));
2950 Interval!Date(Date(2000, 1, 29), Date(2011, 5, 1)));
2952 Interval!Date(Date(2000, 1, 29), Date(2009, 5, 1)));
2954 Interval!Date(Date(2000, 1, 29), Date(2009, 7, 1)));
2957 Interval!Date(Date(2000, 1, 29), Date(2011, 6, 30)));
2959 Interval!Date(Date(2000, 1, 29), Date(2011, 4, 30)));
2961 Interval!Date(Date(2000, 1, 29), Date(2009, 4, 30)));
2963 Interval!Date(Date(2000, 1, 29), Date(2009, 6, 30)));
2966 Interval!Date(Date(1998, 12, 29), Date(2010, 5, 31)));
2968 Interval!Date(Date(1999, 3, 1), Date(2010, 5, 31)));
2970 Interval!Date(Date(2001, 3, 1), Date(2010, 5, 31)));
2972 Interval!Date(Date(2000, 12, 29), Date(2010, 5, 31)));
2975 Interval!Date(Date(1998, 12, 29), Date(2010, 5, 31)));
2977 Interval!Date(Date(1999, 2, 28), Date(2010, 5, 31)));
2979 Interval!Date(Date(2001, 2, 28), Date(2010, 5, 31)));
2981 Interval!Date(Date(2000, 12, 29), Date(2010, 5, 31)));
2984 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2985 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
2990 auto interval1 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2991 auto interval2 = Interval!Date(Date(1996, 1, 2), Date(2012, 3, 1));
2994 assert(interval1 == Interval!Date(Date(1994, 1, 2), Date(2014, 3, 1)));
2997 assert(interval2 == Interval!Date(Date(1998, 1, 2), Date(2010, 3, 1)));
3006 auto interval = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 21));
3008 static void testInterval1(Interval!Date interval)
3010 interval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
3013 assertThrown!DateTimeException(testInterval1(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
3015 static void testInterval2(Interval!Date interval)
3017 interval.fwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).popFront();
3022 assert(!interval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
3023 assert(interval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri), PopFirst.yes).empty);
3025 assert(Interval!Date(Date(2010, 9, 12), Date(2010, 10, 1)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).front ==
3026 Date(2010, 9, 12));
3028 assert(Interval!Date(Date(2010, 9, 12), Date(2010, 10, 1)).fwdRange(
3029 everyDayOfWeek!Date(DayOfWeek.fri), PopFirst.yes).front == Date(2010, 9, 17));
3034 auto interval = Interval!Date(Date(2010, 9, 1), Date(2010, 9, 9));
3035 auto func = delegate (scope const Date date)
3043 // An odd day. Using PopFirst.yes would have made this Date(2010, 9, 2).
3044 assert(range.front == Date(2010, 9, 1));
3047 assert(range.front == Date(2010, 9, 2));
3050 assert(range.front == Date(2010, 9, 4));
3053 assert(range.front == Date(2010, 9, 6));
3056 assert(range.front == Date(2010, 9, 8));
3062 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3063 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3064 assert(!cInterval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
3065 assert(!iInterval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
3074 auto interval = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 21));
3076 static void testInterval1(Interval!Date interval)
3078 interval.bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
3081 assertThrown!DateTimeException(testInterval1(Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
3083 static void testInterval2(Interval!Date interval)
3085 interval.bwdRange(everyDayOfWeek!(Date, Direction.fwd)(DayOfWeek.fri)).popFront();
3090 assert(!interval.bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).empty);
3091 assert(interval.bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri), PopFirst.yes).empty);
3093 assert(Interval!Date(Date(2010, 9, 19), Date(2010, 10, 1)).bwdRange(
3094 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).front == Date(2010, 10, 1));
3096 assert(Interval!Date(Date(2010, 9, 19), Date(2010, 10, 1)).bwdRange(
3097 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri), PopFirst.yes).front == Date(2010, 9, 24));
3102 auto interval = Interval!Date(Date(2010, 9, 1), Date(2010, 9, 9));
3103 auto func = delegate (scope const Date date)
3111 // An odd day. Using PopFirst.yes would have made this Date(2010, 9, 8).
3112 assert(range.front == Date(2010, 9, 9));
3115 assert(range.front == Date(2010, 9, 8));
3118 assert(range.front == Date(2010, 9, 6));
3121 assert(range.front == Date(2010, 9, 4));
3124 assert(range.front == Date(2010, 9, 2));
3130 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3131 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3132 assert(!cInterval.bwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
3133 assert(!iInterval.bwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
3141 assert(Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).toString() == "[2010-Jul-04 - 2012-Jan-07)");
3143 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3144 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
3167 auto interval = PosInfInterval!Date(Date(1996, 1, 2));
3203 assert(PosInfInterval!Date(Date(1996, 1, 2)).begin == Date(1996, 1, 2));
3229 assert(!PosInfInterval!Date(Date(1996, 1, 2)).empty);
3243 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(Date(1994, 12, 24)));
3244 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(Date(2000, 1, 5)));
3265 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(
3266 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
3268 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(
3269 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
3271 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(
3272 Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
3290 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(
3291 PosInfInterval!Date(Date(1999, 5, 4))));
3293 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(
3294 PosInfInterval!Date(Date(1995, 7, 2))));
3314 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(
3315 NegInfInterval!Date(Date(1996, 5, 4))));
3336 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Date(1994, 12, 24)));
3337 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Date(2000, 1, 5)));
3363 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(
3364 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
3366 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(
3367 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
3389 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(
3390 PosInfInterval!Date(Date(1992, 5, 4))));
3392 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(
3393 PosInfInterval!Date(Date(2013, 3, 7))));
3414 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(
3415 NegInfInterval!Date(Date(1996, 5, 4))));
3433 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Date(1994, 12, 24)));
3434 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Date(2000, 1, 5)));
3456 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3457 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
3459 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3460 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
3462 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3463 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
3485 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3486 PosInfInterval!Date(Date(1990, 1, 7))));
3488 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3489 PosInfInterval!Date(Date(1999, 5, 4))));
3507 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3508 NegInfInterval!Date(Date(1996, 1, 2))));
3510 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(
3511 NegInfInterval!Date(Date(2000, 7, 1))));
3532 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3533 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
3535 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3536 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
3538 assert(!PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3539 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
3561 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3562 PosInfInterval!Date(Date(1990, 1, 7))));
3564 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3565 PosInfInterval!Date(Date(1999, 5, 4))));
3583 assert(!PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3584 NegInfInterval!Date(Date(1996, 1, 2))));
3586 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(
3587 NegInfInterval!Date(Date(2000, 7, 1))));
3608 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3609 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
3610 Interval!Date(Date(1996, 1 , 2), Date(2000, 8, 2)));
3612 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3613 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
3614 Interval!Date(Date(1999, 1 , 12), Date(2011, 9, 17)));
3638 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3639 PosInfInterval!Date(Date(1990, 7, 6))) ==
3640 PosInfInterval!Date(Date(1996, 1 , 2)));
3642 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3643 PosInfInterval!Date(Date(1999, 1, 12))) ==
3644 PosInfInterval!Date(Date(1999, 1 , 12)));
3665 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3666 NegInfInterval!Date(Date(1999, 7, 6))) ==
3667 Interval!Date(Date(1996, 1 , 2), Date(1999, 7, 6)));
3669 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(
3670 NegInfInterval!Date(Date(2013, 1, 12))) ==
3671 Interval!Date(Date(1996, 1 , 2), Date(2013, 1, 12)));
3698 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(
3699 Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
3701 assert(!PosInfInterval!Date(Date(1999, 1, 12)).isAdjacent(
3702 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
3724 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(
3725 PosInfInterval!Date(Date(1990, 1, 7))));
3727 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(
3728 PosInfInterval!Date(Date(1996, 1, 2))));
3746 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(
3747 NegInfInterval!Date(Date(1996, 1, 2))));
3749 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(
3750 NegInfInterval!Date(Date(2000, 7, 1))));
3778 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(
3779 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
3780 PosInfInterval!Date(Date(1990, 7 , 6)));
3782 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(
3783 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
3784 PosInfInterval!Date(Date(1996, 1 , 2)));
3812 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(
3813 PosInfInterval!Date(Date(1990, 7, 6))) ==
3814 PosInfInterval!Date(Date(1990, 7 , 6)));
3816 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(
3817 PosInfInterval!Date(Date(1999, 1, 12))) ==
3818 PosInfInterval!Date(Date(1996, 1 , 2)));
3848 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(
3849 Interval!Date(Date(500, 8, 9), Date(1602, 1, 31))) ==
3850 PosInfInterval!Date(Date(500, 8, 9)));
3852 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(
3853 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
3854 PosInfInterval!Date(Date(1990, 7 , 6)));
3856 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(
3857 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
3858 PosInfInterval!Date(Date(1996, 1 , 2)));
3885 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(
3886 PosInfInterval!Date(Date(1990, 7, 6))) ==
3887 PosInfInterval!Date(Date(1990, 7 , 6)));
3889 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(
3890 PosInfInterval!Date(Date(1999, 1, 12))) ==
3891 PosInfInterval!Date(Date(1996, 1 , 2)));
3911 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
3912 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
3915 assert(interval1 == PosInfInterval!Date(Date(1996, 2, 21)));
3918 assert(interval2 == PosInfInterval!Date(Date(1995, 11, 13)));
3952 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
3953 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
3956 assert(interval1 == PosInfInterval!Date(Date(1996, 2, 21)));
3959 assert(interval2 == PosInfInterval!Date(Date(1995, 11, 13)));
3984 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
3985 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
3988 assert(interval1 == PosInfInterval!Date(Date(1995, 12, 31)));
3991 assert(interval2 == PosInfInterval!Date(Date(1996, 1, 4)));
4020 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
4021 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
4024 assert(interval1 == PosInfInterval!Date(Date(1994, 1, 2)));
4027 assert(interval2 == PosInfInterval!Date(Date(1998, 1, 2)));
4093 auto interval = PosInfInterval!Date(Date(2010, 9, 1));
4094 auto func = delegate (scope const Date date) //For iterating over even-numbered days.
4103 //An odd day. Using PopFirst.yes would have made this Date(2010, 9, 2).
4104 assert(range.front == Date(2010, 9, 1));
4107 assert(range.front == Date(2010, 9, 2));
4110 assert(range.front == Date(2010, 9, 4));
4113 assert(range.front == Date(2010, 9, 6));
4116 assert(range.front == Date(2010, 9, 8));
4181 PosInfInterval!Date(Date.init);
4187 auto interval = PosInfInterval!Date(Date(1996, 1, 2));
4195 assert(PosInfInterval!Date(Date(1, 1, 1)).begin == Date(1, 1, 1));
4196 assert(PosInfInterval!Date(Date(2010, 1, 1)).begin == Date(2010, 1, 1));
4197 assert(PosInfInterval!Date(Date(1997, 12, 31)).begin == Date(1997, 12, 31));
4199 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4200 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4201 assert(cPosInfInterval.begin != Date.init);
4202 assert(iPosInfInterval.begin != Date.init);
4205 assert(PosInfInterval!Date(Date(1996, 1, 2)).begin == Date(1996, 1, 2));
4214 assert(!PosInfInterval!Date(Date(2010, 1, 1)).empty);
4219 const cPosInfInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4220 immutable iPosInfInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4225 assert(!PosInfInterval!Date(Date(1996, 1, 2)).empty);
4233 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4235 assert(!posInfInterval.contains(Date(2009, 7, 4)));
4236 assert(!posInfInterval.contains(Date(2010, 7, 3)));
4237 assert(posInfInterval.contains(Date(2010, 7, 4)));
4238 assert(posInfInterval.contains(Date(2010, 7, 5)));
4239 assert(posInfInterval.contains(Date(2011, 7, 1)));
4240 assert(posInfInterval.contains(Date(2012, 1, 6)));
4241 assert(posInfInterval.contains(Date(2012, 1, 7)));
4242 assert(posInfInterval.contains(Date(2012, 1, 8)));
4243 assert(posInfInterval.contains(Date(2013, 1, 7)));
4245 const cdate = Date(2010, 7, 6);
4246 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4247 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4253 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(Date(1994, 12, 24)));
4254 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(Date(2000, 1, 5)));
4262 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4264 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4269 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4272 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4273 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
4274 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4275 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
4276 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
4277 assert(!posInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
4278 assert(posInfInterval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
4279 assert(posInfInterval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
4280 assert(posInfInterval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
4281 assert(posInfInterval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
4282 assert(posInfInterval.contains(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
4283 assert(posInfInterval.contains(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
4285 assert(!posInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 3))));
4286 assert(posInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 4))));
4287 assert(posInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 5))));
4288 assert(posInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 6))));
4289 assert(posInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 7))));
4290 assert(posInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 8))));
4292 assert(PosInfInterval!Date(Date(2010, 7, 3)).contains(posInfInterval));
4293 assert(PosInfInterval!Date(Date(2010, 7, 4)).contains(posInfInterval));
4294 assert(!PosInfInterval!Date(Date(2010, 7, 5)).contains(posInfInterval));
4295 assert(!PosInfInterval!Date(Date(2012, 1, 6)).contains(posInfInterval));
4296 assert(!PosInfInterval!Date(Date(2012, 1, 7)).contains(posInfInterval));
4297 assert(!PosInfInterval!Date(Date(2012, 1, 8)).contains(posInfInterval));
4299 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 3))));
4300 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 4))));
4301 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 5))));
4302 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 6))));
4303 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 7))));
4304 assert(!posInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 8))));
4306 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4307 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4308 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4309 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4310 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4311 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4312 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4313 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4343 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
4344 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
4345 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
4347 assert(PosInfInterval!Date(Date(1996, 1, 2)).contains(PosInfInterval!Date(Date(1999, 5, 4))));
4348 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(PosInfInterval!Date(Date(1995, 7, 2))));
4350 assert(!PosInfInterval!Date(Date(1996, 1, 2)).contains(NegInfInterval!Date(Date(1996, 5, 4))));
4358 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4360 assert(!posInfInterval.isBefore(Date(2009, 7, 3)));
4361 assert(!posInfInterval.isBefore(Date(2010, 7, 3)));
4362 assert(!posInfInterval.isBefore(Date(2010, 7, 4)));
4363 assert(!posInfInterval.isBefore(Date(2010, 7, 5)));
4364 assert(!posInfInterval.isBefore(Date(2011, 7, 1)));
4365 assert(!posInfInterval.isBefore(Date(2012, 1, 6)));
4366 assert(!posInfInterval.isBefore(Date(2012, 1, 7)));
4367 assert(!posInfInterval.isBefore(Date(2012, 1, 8)));
4368 assert(!posInfInterval.isBefore(Date(2013, 1, 7)));
4370 const cdate = Date(2010, 7, 6);
4371 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4372 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4378 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Date(1994, 12, 24)));
4379 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Date(2000, 1, 5)));
4387 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4389 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4394 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4397 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4398 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
4399 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4400 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
4401 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
4402 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
4403 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
4404 assert(!posInfInterval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
4405 assert(!posInfInterval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
4406 assert(!posInfInterval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
4407 assert(!posInfInterval.isBefore(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
4408 assert(!posInfInterval.isBefore(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
4410 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 3))));
4411 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 4))));
4412 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 5))));
4413 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 6))));
4414 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 7))));
4415 assert(!posInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 8))));
4417 assert(!PosInfInterval!Date(Date(2010, 7, 3)).isBefore(posInfInterval));
4418 assert(!PosInfInterval!Date(Date(2010, 7, 4)).isBefore(posInfInterval));
4419 assert(!PosInfInterval!Date(Date(2010, 7, 5)).isBefore(posInfInterval));
4420 assert(!PosInfInterval!Date(Date(2012, 1, 6)).isBefore(posInfInterval));
4421 assert(!PosInfInterval!Date(Date(2012, 1, 7)).isBefore(posInfInterval));
4422 assert(!PosInfInterval!Date(Date(2012, 1, 8)).isBefore(posInfInterval));
4424 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 3))));
4425 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 4))));
4426 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 5))));
4427 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 6))));
4428 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 7))));
4429 assert(!posInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 8))));
4431 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4432 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4433 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4434 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4435 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4436 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4437 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4438 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4468 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
4469 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
4471 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(PosInfInterval!Date(Date(1992, 5, 4))));
4472 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(PosInfInterval!Date(Date(2013, 3, 7))));
4474 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isBefore(NegInfInterval!Date(Date(1996, 5, 4))));
4482 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4484 assert(posInfInterval.isAfter(Date(2009, 7, 3)));
4485 assert(posInfInterval.isAfter(Date(2010, 7, 3)));
4486 assert(!posInfInterval.isAfter(Date(2010, 7, 4)));
4487 assert(!posInfInterval.isAfter(Date(2010, 7, 5)));
4488 assert(!posInfInterval.isAfter(Date(2011, 7, 1)));
4489 assert(!posInfInterval.isAfter(Date(2012, 1, 6)));
4490 assert(!posInfInterval.isAfter(Date(2012, 1, 7)));
4491 assert(!posInfInterval.isAfter(Date(2012, 1, 8)));
4492 assert(!posInfInterval.isAfter(Date(2013, 1, 7)));
4494 const cdate = Date(2010, 7, 6);
4495 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4496 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4502 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Date(1994, 12, 24)));
4503 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Date(2000, 1, 5)));
4511 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4513 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4518 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4521 assert(posInfInterval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4522 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
4523 assert(posInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4524 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
4525 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
4526 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
4527 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
4528 assert(!posInfInterval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
4529 assert(!posInfInterval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
4530 assert(!posInfInterval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
4531 assert(!posInfInterval.isAfter(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
4532 assert(!posInfInterval.isAfter(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
4534 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 3))));
4535 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 4))));
4536 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 5))));
4537 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 6))));
4538 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 7))));
4539 assert(!posInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 8))));
4541 assert(!PosInfInterval!Date(Date(2010, 7, 3)).isAfter(posInfInterval));
4542 assert(!PosInfInterval!Date(Date(2010, 7, 4)).isAfter(posInfInterval));
4543 assert(!PosInfInterval!Date(Date(2010, 7, 5)).isAfter(posInfInterval));
4544 assert(!PosInfInterval!Date(Date(2012, 1, 6)).isAfter(posInfInterval));
4545 assert(!PosInfInterval!Date(Date(2012, 1, 7)).isAfter(posInfInterval));
4546 assert(!PosInfInterval!Date(Date(2012, 1, 8)).isAfter(posInfInterval));
4548 assert(posInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 3))));
4549 assert(posInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 4))));
4550 assert(!posInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 5))));
4551 assert(!posInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 6))));
4552 assert(!posInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 7))));
4553 assert(!posInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 8))));
4555 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4556 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4557 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4558 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4559 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4560 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4561 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4562 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4592 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
4593 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
4594 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
4596 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(PosInfInterval!Date(Date(1990, 1, 7))));
4597 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(PosInfInterval!Date(Date(1999, 5, 4))));
4599 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAfter(NegInfInterval!Date(Date(1996, 1, 2))));
4600 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAfter(NegInfInterval!Date(Date(2000, 7, 1))));
4608 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4610 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4615 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4618 assert(!posInfInterval.intersects(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4619 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
4620 assert(!posInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4621 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
4622 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
4623 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
4624 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
4625 assert(posInfInterval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
4626 assert(posInfInterval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
4627 assert(posInfInterval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
4628 assert(posInfInterval.intersects(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
4629 assert(posInfInterval.intersects(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
4631 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 3))));
4632 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 4))));
4633 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 5))));
4634 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 6))));
4635 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 7))));
4636 assert(posInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 8))));
4638 assert(PosInfInterval!Date(Date(2010, 7, 3)).intersects(posInfInterval));
4639 assert(PosInfInterval!Date(Date(2010, 7, 4)).intersects(posInfInterval));
4640 assert(PosInfInterval!Date(Date(2010, 7, 5)).intersects(posInfInterval));
4641 assert(PosInfInterval!Date(Date(2012, 1, 6)).intersects(posInfInterval));
4642 assert(PosInfInterval!Date(Date(2012, 1, 7)).intersects(posInfInterval));
4643 assert(PosInfInterval!Date(Date(2012, 1, 8)).intersects(posInfInterval));
4645 assert(!posInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 3))));
4646 assert(!posInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 4))));
4647 assert(posInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 5))));
4648 assert(posInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 6))));
4649 assert(posInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 7))));
4650 assert(posInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 8))));
4652 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4653 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4654 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4655 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4656 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4657 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4658 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4659 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4689 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
4690 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
4691 assert(!PosInfInterval!Date(Date(1996, 1, 2)).intersects(Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
4693 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(PosInfInterval!Date(Date(1990, 1, 7))));
4694 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(PosInfInterval!Date(Date(1999, 5, 4))));
4696 assert(!PosInfInterval!Date(Date(1996, 1, 2)).intersects(NegInfInterval!Date(Date(1996, 1, 2))));
4697 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersects(NegInfInterval!Date(Date(2000, 7, 1))));
4705 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4712 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4714 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4715 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4717 assertThrown!DateTimeException(testInterval(posInfInterval, NegInfInterval!Date(Date(2010, 7, 3))));
4718 assertThrown!DateTimeException(testInterval(posInfInterval, NegInfInterval!Date(Date(2010, 7, 4))));
4721 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
4722 Interval!Date(Date(2010, 7, 4), Date(2013, 7, 3)));
4723 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
4724 Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)));
4725 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
4726 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
4727 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
4728 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
4729 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
4730 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)));
4731 assert(posInfInterval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
4732 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)));
4733 assert(posInfInterval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
4734 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
4735 assert(posInfInterval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
4736 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8)));
4737 assert(posInfInterval.intersection(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
4738 Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8)));
4739 assert(posInfInterval.intersection(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))) ==
4740 Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9)));
4742 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 3))) == PosInfInterval!Date(Date(2010, 7, 4)));
4743 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 4))) == PosInfInterval!Date(Date(2010, 7, 4)));
4744 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 5))) == PosInfInterval!Date(Date(2010, 7, 5)));
4745 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2012, 1, 6))) == PosInfInterval!Date(Date(2012, 1, 6)));
4746 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2012, 1, 7))) == PosInfInterval!Date(Date(2012, 1, 7)));
4747 assert(posInfInterval.intersection(PosInfInterval!Date(Date(2012, 1, 8))) == PosInfInterval!Date(Date(2012, 1, 8)));
4749 assert(PosInfInterval!Date(Date(2010, 7, 3)).intersection(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4750 assert(PosInfInterval!Date(Date(2010, 7, 4)).intersection(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4751 assert(PosInfInterval!Date(Date(2010, 7, 5)).intersection(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 5)));
4752 assert(PosInfInterval!Date(Date(2012, 1, 6)).intersection(posInfInterval) == PosInfInterval!Date(Date(2012, 1, 6)));
4753 assert(PosInfInterval!Date(Date(2012, 1, 7)).intersection(posInfInterval) == PosInfInterval!Date(Date(2012, 1, 7)));
4754 assert(PosInfInterval!Date(Date(2012, 1, 8)).intersection(posInfInterval) == PosInfInterval!Date(Date(2012, 1, 8)));
4756 assert(posInfInterval.intersection(NegInfInterval!Date(Date(2010, 7, 5))) ==
4757 Interval!Date(Date(2010, 7, 4), Date(2010, 7, 5)));
4758 assert(posInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 6))) ==
4759 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 6)));
4760 assert(posInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 7))) ==
4761 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)));
4762 assert(posInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 8))) ==
4763 Interval!Date(Date(2010, 7, 4), Date(2012, 1, 8)));
4765 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4766 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4767 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4768 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4769 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4770 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4771 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4772 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4802 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
4803 Interval!Date(Date(1996, 1, 2), Date(2000, 8, 2)));
4804 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
4805 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17)));
4807 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(PosInfInterval!Date(Date(1990, 7, 6))) ==
4808 PosInfInterval!Date(Date(1996, 1, 2)));
4809 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(PosInfInterval!Date(Date(1999, 1, 12))) ==
4810 PosInfInterval!Date(Date(1999, 1, 12)));
4812 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(NegInfInterval!Date(Date(1999, 7, 6))) ==
4813 Interval!Date(Date(1996, 1, 2), Date(1999, 7, 6)));
4814 assert(PosInfInterval!Date(Date(1996, 1, 2)).intersection(NegInfInterval!Date(Date(2013, 1, 12))) ==
4815 Interval!Date(Date(1996, 1, 2), Date(2013, 1, 12)));
4823 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4825 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4830 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4833 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4834 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
4835 assert(posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
4836 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
4837 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
4838 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
4839 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
4840 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
4841 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
4842 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
4843 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
4844 assert(!posInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
4846 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 3))));
4847 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 4))));
4848 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 5))));
4849 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 6))));
4850 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 7))));
4851 assert(!posInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 8))));
4853 assert(!PosInfInterval!Date(Date(2010, 7, 3)).isAdjacent(posInfInterval));
4854 assert(!PosInfInterval!Date(Date(2010, 7, 4)).isAdjacent(posInfInterval));
4855 assert(!PosInfInterval!Date(Date(2010, 7, 5)).isAdjacent(posInfInterval));
4856 assert(!PosInfInterval!Date(Date(2012, 1, 6)).isAdjacent(posInfInterval));
4857 assert(!PosInfInterval!Date(Date(2012, 1, 7)).isAdjacent(posInfInterval));
4858 assert(!PosInfInterval!Date(Date(2012, 1, 8)).isAdjacent(posInfInterval));
4860 assert(!posInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 3))));
4861 assert(posInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 4))));
4862 assert(!posInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 5))));
4863 assert(!posInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 6))));
4864 assert(!posInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 7))));
4865 assert(!posInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 8))));
4867 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4868 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4869 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4870 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4871 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4872 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4873 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4874 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4904 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(Interval!Date(Date(1989, 3, 1), Date(1996, 1, 2))));
4905 assert(!PosInfInterval!Date(Date(1999, 1, 12)).isAdjacent(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
4907 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(PosInfInterval!Date(Date(1990, 1, 7))));
4908 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(PosInfInterval!Date(Date(1996, 1, 2))));
4910 assert(PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(NegInfInterval!Date(Date(1996, 1, 2))));
4911 assert(!PosInfInterval!Date(Date(1996, 1, 2)).isAdjacent(NegInfInterval!Date(Date(2000, 7, 1))));
4919 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4921 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
4926 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
4928 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
4931 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
4932 PosInfInterval!Date(Date(2010, 7, 1)));
4933 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
4934 PosInfInterval!Date(Date(2010, 7, 3)));
4935 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
4936 PosInfInterval!Date(Date(2010, 7, 3)));
4937 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
4938 PosInfInterval!Date(Date(2010, 7, 3)));
4939 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
4940 PosInfInterval!Date(Date(2010, 7, 3)));
4941 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
4942 PosInfInterval!Date(Date(2010, 7, 4)));
4943 assert(posInfInterval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
4944 PosInfInterval!Date(Date(2010, 7, 4)));
4945 assert(posInfInterval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
4946 PosInfInterval!Date(Date(2010, 7, 4)));
4947 assert(posInfInterval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
4948 PosInfInterval!Date(Date(2010, 7, 4)));
4949 assert(posInfInterval.merge(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
4950 PosInfInterval!Date(Date(2010, 7, 4)));
4951 assert(posInfInterval.merge(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))) ==
4952 PosInfInterval!Date(Date(2010, 7, 4)));
4954 assert(posInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 3))) == PosInfInterval!Date(Date(2010, 7, 3)));
4955 assert(posInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 4))) == PosInfInterval!Date(Date(2010, 7, 4)));
4956 assert(posInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 5))) == PosInfInterval!Date(Date(2010, 7, 4)));
4957 assert(posInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 6))) == PosInfInterval!Date(Date(2010, 7, 4)));
4958 assert(posInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 7))) == PosInfInterval!Date(Date(2010, 7, 4)));
4959 assert(posInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 8))) == PosInfInterval!Date(Date(2010, 7, 4)));
4961 assert(PosInfInterval!Date(Date(2010, 7, 3)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 3)));
4962 assert(PosInfInterval!Date(Date(2010, 7, 4)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4963 assert(PosInfInterval!Date(Date(2010, 7, 5)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4964 assert(PosInfInterval!Date(Date(2012, 1, 6)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4965 assert(PosInfInterval!Date(Date(2012, 1, 7)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4966 assert(PosInfInterval!Date(Date(2012, 1, 8)).merge(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
4968 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 3)))));
4969 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 4)))));
4970 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 5)))));
4971 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 6)))));
4972 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 7)))));
4973 static assert(!__traits(compiles, posInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 8)))));
4975 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4976 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4977 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
4978 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4979 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
4980 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4981 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
4982 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
5012 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
5013 PosInfInterval!Date(Date(1990, 7, 6)));
5014 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
5015 PosInfInterval!Date(Date(1996, 1, 2)));
5017 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(PosInfInterval!Date(Date(1990, 7, 6))) ==
5018 PosInfInterval!Date(Date(1990, 7, 6)));
5019 assert(PosInfInterval!Date(Date(1996, 1, 2)).merge(PosInfInterval!Date(Date(1999, 1, 12))) ==
5020 PosInfInterval!Date(Date(1996, 1, 2)));
5028 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5030 static void testInterval(scope const PosInfInterval!Date posInfInterval, scope const Interval!Date interval)
5035 assertThrown!DateTimeException(testInterval(posInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
5038 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))) ==
5039 PosInfInterval!Date(Date(2010, 7, 1)));
5040 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
5041 PosInfInterval!Date(Date(2010, 7, 1)));
5042 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
5043 PosInfInterval!Date(Date(2010, 7, 3)));
5044 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
5045 PosInfInterval!Date(Date(2010, 7, 3)));
5046 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
5047 PosInfInterval!Date(Date(2010, 7, 3)));
5048 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
5049 PosInfInterval!Date(Date(2010, 7, 3)));
5050 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
5051 PosInfInterval!Date(Date(2010, 7, 4)));
5052 assert(posInfInterval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
5053 PosInfInterval!Date(Date(2010, 7, 4)));
5054 assert(posInfInterval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
5055 PosInfInterval!Date(Date(2010, 7, 4)));
5056 assert(posInfInterval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
5057 PosInfInterval!Date(Date(2010, 7, 4)));
5058 assert(posInfInterval.span(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
5059 PosInfInterval!Date(Date(2010, 7, 4)));
5060 assert(posInfInterval.span(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))) ==
5061 PosInfInterval!Date(Date(2010, 7, 4)));
5063 assert(posInfInterval.span(PosInfInterval!Date(Date(2010, 7, 3))) == PosInfInterval!Date(Date(2010, 7, 3)));
5064 assert(posInfInterval.span(PosInfInterval!Date(Date(2010, 7, 4))) == PosInfInterval!Date(Date(2010, 7, 4)));
5065 assert(posInfInterval.span(PosInfInterval!Date(Date(2010, 7, 5))) == PosInfInterval!Date(Date(2010, 7, 4)));
5066 assert(posInfInterval.span(PosInfInterval!Date(Date(2012, 1, 6))) == PosInfInterval!Date(Date(2010, 7, 4)));
5067 assert(posInfInterval.span(PosInfInterval!Date(Date(2012, 1, 7))) == PosInfInterval!Date(Date(2010, 7, 4)));
5068 assert(posInfInterval.span(PosInfInterval!Date(Date(2012, 1, 8))) == PosInfInterval!Date(Date(2010, 7, 4)));
5070 assert(PosInfInterval!Date(Date(2010, 7, 3)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 3)));
5071 assert(PosInfInterval!Date(Date(2010, 7, 4)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
5072 assert(PosInfInterval!Date(Date(2010, 7, 5)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
5073 assert(PosInfInterval!Date(Date(2012, 1, 6)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
5074 assert(PosInfInterval!Date(Date(2012, 1, 7)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
5075 assert(PosInfInterval!Date(Date(2012, 1, 8)).span(posInfInterval) == PosInfInterval!Date(Date(2010, 7, 4)));
5077 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2010, 7, 3)))));
5078 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2010, 7, 4)))));
5079 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2010, 7, 5)))));
5080 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2012, 1, 6)))));
5081 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2012, 1, 7)))));
5082 static assert(!__traits(compiles, posInfInterval.span(NegInfInterval!Date(Date(2012, 1, 8)))));
5084 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
5085 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
5086 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
5087 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5088 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5089 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
5090 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
5091 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
5121 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(Interval!Date(Date(500, 8, 9), Date(1602, 1, 31))) ==
5122 PosInfInterval!Date(Date(500, 8, 9)));
5123 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
5124 PosInfInterval!Date(Date(1990, 7, 6)));
5125 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))) ==
5126 PosInfInterval!Date(Date(1996, 1, 2)));
5128 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(PosInfInterval!Date(Date(1990, 7, 6))) ==
5129 PosInfInterval!Date(Date(1990, 7, 6)));
5130 assert(PosInfInterval!Date(Date(1996, 1, 2)).span(PosInfInterval!Date(Date(1999, 1, 12))) ==
5131 PosInfInterval!Date(Date(1996, 1, 2)));
5139 auto interval = PosInfInterval!Date(Date(2010, 7, 4));
5148 testInterval(interval, dur!"days"(22), PosInfInterval!Date(Date(2010, 7, 26)));
5149 testInterval(interval, dur!"days"(-22), PosInfInterval!Date(Date(2010, 6, 12)));
5151 const cInterval = PosInfInterval!Date(Date(2010, 7, 4));
5152 immutable iInterval = PosInfInterval!Date(Date(2010, 7, 4));
5157 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
5158 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
5161 assert(interval1 == PosInfInterval!Date(Date(1996, 2, 21)));
5164 assert(interval2 == PosInfInterval!Date(Date(1995, 11, 13)));
5173 auto interval = PosInfInterval!Date(Date(2010, 7, 4));
5182 testInterval(interval, 5, 0, AllowDayOverflow.yes, PosInfInterval!Date(Date(2015, 7, 4)));
5183 testInterval(interval, -5, 0, AllowDayOverflow.yes, PosInfInterval!Date(Date(2005, 7, 4)));
5185 auto interval2 = PosInfInterval!Date(Date(2000, 1, 29));
5187 testInterval(interval2, 1, 1, AllowDayOverflow.yes, PosInfInterval!Date(Date(2001, 3, 1)));
5188 testInterval(interval2, 1, -1, AllowDayOverflow.yes, PosInfInterval!Date(Date(2000, 12, 29)));
5189 testInterval(interval2, -1, -1, AllowDayOverflow.yes, PosInfInterval!Date(Date(1998, 12, 29)));
5190 testInterval(interval2, -1, 1, AllowDayOverflow.yes, PosInfInterval!Date(Date(1999, 3, 1)));
5192 testInterval(interval2, 1, 1, AllowDayOverflow.no, PosInfInterval!Date(Date(2001, 2, 28)));
5193 testInterval(interval2, 1, -1, AllowDayOverflow.no, PosInfInterval!Date(Date(2000, 12, 29)));
5194 testInterval(interval2, -1, -1, AllowDayOverflow.no, PosInfInterval!Date(Date(1998, 12, 29)));
5195 testInterval(interval2, -1, 1, AllowDayOverflow.no, PosInfInterval!Date(Date(1999, 2, 28)));
5198 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5199 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5204 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
5205 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
5208 assert(interval1 == PosInfInterval!Date(Date(1998, 1, 2)));
5211 assert(interval2 == PosInfInterval!Date(Date(1994, 1, 2)));
5219 auto interval = PosInfInterval!Date(Date(2000, 7, 4));
5228 testInterval(interval, dur!"days"(22), PosInfInterval!Date(Date(2000, 6, 12)));
5229 testInterval(interval, dur!"days"(-22), PosInfInterval!Date(Date(2000, 7, 26)));
5231 const cInterval = PosInfInterval!Date(Date(2010, 7, 4));
5232 immutable iInterval = PosInfInterval!Date(Date(2010, 7, 4));
5237 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
5238 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
5241 assert(interval1 == PosInfInterval!Date(Date(1995, 12, 31)));
5244 assert(interval2 == PosInfInterval!Date(Date(1996, 1, 4)));
5253 auto interval = PosInfInterval!Date(Date(2000, 7, 4));
5262 testInterval(interval, 5, 0, AllowDayOverflow.yes, PosInfInterval!Date(Date(1995, 7, 4)));
5263 testInterval(interval, -5, 0, AllowDayOverflow.yes, PosInfInterval!Date(Date(2005, 7, 4)));
5265 auto interval2 = PosInfInterval!Date(Date(2000, 1, 29));
5267 testInterval(interval2, 1, 1, AllowDayOverflow.yes, PosInfInterval!Date(Date(1998, 12, 29)));
5268 testInterval(interval2, 1, -1, AllowDayOverflow.yes, PosInfInterval!Date(Date(1999, 3, 1)));
5269 testInterval(interval2, -1, -1, AllowDayOverflow.yes, PosInfInterval!Date(Date(2001, 3, 1)));
5270 testInterval(interval2, -1, 1, AllowDayOverflow.yes, PosInfInterval!Date(Date(2000, 12, 29)));
5272 testInterval(interval2, 1, 1, AllowDayOverflow.no, PosInfInterval!Date(Date(1998, 12, 29)));
5273 testInterval(interval2, 1, -1, AllowDayOverflow.no, PosInfInterval!Date(Date(1999, 2, 28)));
5274 testInterval(interval2, -1, -1, AllowDayOverflow.no, PosInfInterval!Date(Date(2001, 2, 28)));
5275 testInterval(interval2, -1, 1, AllowDayOverflow.no, PosInfInterval!Date(Date(2000, 12, 29)));
5278 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5279 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5284 auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
5285 auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));
5288 assert(interval1 == PosInfInterval!Date(Date(1994, 1, 2)));
5291 assert(interval2 == PosInfInterval!Date(Date(1998, 1, 2)));
5299 auto posInfInterval = PosInfInterval!Date(Date(2010, 9, 19));
5301 static void testInterval(PosInfInterval!Date posInfInterval)
5303 posInfInterval.fwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).popFront();
5308 assert(PosInfInterval!Date(Date(2010, 9, 12)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).front ==
5309 Date(2010, 9, 12));
5311 assert(PosInfInterval!Date(Date(2010, 9, 12)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri), PopFirst.yes).front ==
5312 Date(2010, 9, 17));
5315 auto interval = PosInfInterval!Date(Date(2010, 9, 1));
5316 auto func = delegate (scope const Date date)
5324 assert(range.front == Date(2010, 9, 1)); //An odd day. Using PopFirst.yes would have made this Date(2010, 9, 2).
5327 assert(range.front == Date(2010, 9, 2));
5330 assert(range.front == Date(2010, 9, 4));
5333 assert(range.front == Date(2010, 9, 6));
5336 assert(range.front == Date(2010, 9, 8));
5341 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5342 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5343 assert(!cPosInfInterval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
5344 assert(!iPosInfInterval.fwdRange(everyDayOfWeek!Date(DayOfWeek.fri)).empty);
5351 assert(PosInfInterval!Date(Date(2010, 7, 4)).toString() == "[2010-Jul-04 - ���)");
5353 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5354 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
5379 auto interval = PosInfInterval!Date(Date(1996, 1, 2));
5415 assert(NegInfInterval!Date(Date(2012, 3, 1)).end == Date(2012, 3, 1));
5441 assert(!NegInfInterval!Date(Date(1996, 1, 2)).empty);
5455 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(1994, 12, 24)));
5456 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(2000, 1, 5)));
5457 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(2012, 3, 1)));
5478 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(
5479 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
5481 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(
5482 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
5484 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(
5485 Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
5506 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(
5507 PosInfInterval!Date(Date(1999, 5, 4))));
5524 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(
5525 NegInfInterval!Date(Date(1996, 5, 4))));
5527 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(
5528 NegInfInterval!Date(Date(2013, 7, 9))));
5546 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(1994, 12, 24)));
5547 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(2000, 1, 5)));
5548 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(2012, 3, 1)));
5570 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5571 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
5573 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5574 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
5576 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5577 Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
5596 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5597 PosInfInterval!Date(Date(1999, 5, 4))));
5599 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5600 PosInfInterval!Date(Date(2012, 3, 1))));
5622 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5623 NegInfInterval!Date(Date(1996, 5, 4))));
5625 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(
5626 NegInfInterval!Date(Date(2013, 7, 9))));
5647 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(1994, 12, 24)));
5648 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(2000, 1, 5)));
5649 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(2012, 3, 1)));
5675 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5676 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
5678 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5679 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
5681 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5682 Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
5704 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5705 PosInfInterval!Date(Date(1999, 5, 4))));
5707 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5708 PosInfInterval!Date(Date(2012, 3, 1))));
5729 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5730 NegInfInterval!Date(Date(1996, 5, 4))));
5732 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(
5733 NegInfInterval!Date(Date(2013, 7, 9))));
5754 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5755 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
5757 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5758 Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
5760 assert(!NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5761 Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
5780 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5781 PosInfInterval!Date(Date(1999, 5, 4))));
5783 assert(!NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5784 PosInfInterval!Date(Date(2012, 3, 1))));
5804 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5805 NegInfInterval!Date(Date(1996, 5, 4))));
5807 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(
5808 NegInfInterval!Date(Date(2013, 7, 9))));
5829 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5830 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
5831 Interval!Date(Date(1990, 7 , 6), Date(2000, 8, 2)));
5833 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5834 Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
5835 Interval!Date(Date(1999, 1 , 12), Date(2012, 3, 1)));
5863 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5864 PosInfInterval!Date(Date(1990, 7, 6))) ==
5865 Interval!Date(Date(1990, 7 , 6), Date(2012, 3, 1)));
5867 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5868 PosInfInterval!Date(Date(1999, 1, 12))) ==
5869 Interval!Date(Date(1999, 1 , 12), Date(2012, 3, 1)));
5891 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5892 NegInfInterval!Date(Date(1999, 7, 6))) ==
5893 NegInfInterval!Date(Date(1999, 7 , 6)));
5895 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(
5896 NegInfInterval!Date(Date(2013, 1, 12))) ==
5897 NegInfInterval!Date(Date(2012, 3 , 1)));
5919 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5920 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
5922 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5923 Interval!Date(Date(1999, 1, 12), Date(2012, 3, 1))));
5925 assert(NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5926 Interval!Date(Date(2012, 3, 1), Date(2019, 2, 2))));
5928 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5929 Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
5948 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5949 PosInfInterval!Date(Date(1999, 5, 4))));
5951 assert(NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5952 PosInfInterval!Date(Date(2012, 3, 1))));
5973 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5974 NegInfInterval!Date(Date(1996, 5, 4))));
5976 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(
5977 NegInfInterval!Date(Date(2012, 3, 1))));
6004 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(
6005 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
6006 NegInfInterval!Date(Date(2012, 3 , 1)));
6008 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(
6009 Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
6010 NegInfInterval!Date(Date(2015, 9 , 2)));
6038 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(
6039 NegInfInterval!Date(Date(1999, 7, 6))) ==
6040 NegInfInterval!Date(Date(2012, 3 , 1)));
6042 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(
6043 NegInfInterval!Date(Date(2013, 1, 12))) ==
6044 NegInfInterval!Date(Date(2013, 1 , 12)));
6074 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(
6075 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
6076 NegInfInterval!Date(Date(2012, 3 , 1)));
6078 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(
6079 Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
6080 NegInfInterval!Date(Date(2015, 9 , 2)));
6082 assert(NegInfInterval!Date(Date(1600, 1, 7)).span(
6083 Interval!Date(Date(2012, 3, 11), Date(2017, 7, 1))) ==
6084 NegInfInterval!Date(Date(2017, 7 , 1)));
6111 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(
6112 NegInfInterval!Date(Date(1999, 7, 6))) ==
6113 NegInfInterval!Date(Date(2012, 3 , 1)));
6115 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(
6116 NegInfInterval!Date(Date(2013, 1, 12))) ==
6117 NegInfInterval!Date(Date(2013, 1 , 12)));
6137 auto interval1 = NegInfInterval!Date(Date(2012, 4, 5));
6138 auto interval2 = NegInfInterval!Date(Date(2012, 4, 5));
6141 assert(interval1 == NegInfInterval!Date(Date(2012, 5, 25)));
6144 assert(interval2 == NegInfInterval!Date( Date(2012, 2, 15)));
6177 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
6178 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
6181 assert(interval1 == NegInfInterval!Date(Date(2014, 3, 1)));
6184 assert(interval2 == NegInfInterval!Date(Date(2010, 3, 1)));
6209 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
6210 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
6213 assert(interval1 == NegInfInterval!Date(Date(2012, 3, 3)));
6216 assert(interval2 == NegInfInterval!Date(Date(2012, 2, 28)));
6245 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
6246 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
6249 assert(interval1 == NegInfInterval!Date(Date(2014, 3, 1)));
6252 assert(interval2 == NegInfInterval!Date(Date(2010, 3, 1)));
6318 auto interval = NegInfInterval!Date(Date(2010, 9, 9));
6319 auto func = delegate (scope const Date date) //For iterating over even-numbered days.
6328 assert(range.front == Date(2010, 9, 9)); //An odd day. Using PopFirst.yes would have made this Date(2010, 9, 8).
6331 assert(range.front == Date(2010, 9, 8));
6334 assert(range.front == Date(2010, 9, 6));
6337 assert(range.front == Date(2010, 9, 4));
6340 assert(range.front == Date(2010, 9, 2));
6405 NegInfInterval!Date(Date.init);
6416 assert(NegInfInterval!Date(Date(2010, 1, 1)).end == Date(2010, 1, 1));
6417 assert(NegInfInterval!Date(Date(2010, 1, 1)).end == Date(2010, 1, 1));
6418 assert(NegInfInterval!Date(Date(1998, 1, 1)).end == Date(1998, 1, 1));
6420 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6421 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6422 assert(cNegInfInterval.end != Date.init);
6423 assert(iNegInfInterval.end != Date.init);
6426 assert(NegInfInterval!Date(Date(2012, 3, 1)).end == Date(2012, 3, 1));
6435 assert(!NegInfInterval!Date(Date(2010, 1, 1)).empty);
6440 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6441 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6446 assert(!NegInfInterval!Date(Date(1996, 1, 2)).empty);
6454 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6456 assert(negInfInterval.contains(Date(2009, 7, 4)));
6457 assert(negInfInterval.contains(Date(2010, 7, 3)));
6458 assert(negInfInterval.contains(Date(2010, 7, 4)));
6459 assert(negInfInterval.contains(Date(2010, 7, 5)));
6460 assert(negInfInterval.contains(Date(2011, 7, 1)));
6461 assert(negInfInterval.contains(Date(2012, 1, 6)));
6462 assert(!negInfInterval.contains(Date(2012, 1, 7)));
6463 assert(!negInfInterval.contains(Date(2012, 1, 8)));
6464 assert(!negInfInterval.contains(Date(2013, 1, 7)));
6466 const cdate = Date(2010, 7, 6);
6467 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6468 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6474 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(1994, 12, 24)));
6475 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(2000, 1, 5)));
6476 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(Date(2012, 3, 1)));
6484 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6486 static void testInterval(scope const NegInfInterval!Date negInfInterval, scope const Interval!Date interval)
6491 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
6494 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
6495 assert(!negInfInterval.contains(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
6496 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
6497 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
6498 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
6499 assert(!negInfInterval.contains(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
6500 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
6501 assert(negInfInterval.contains(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
6502 assert(negInfInterval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
6503 assert(!negInfInterval.contains(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
6504 assert(!negInfInterval.contains(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
6505 assert(!negInfInterval.contains(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
6507 assert(negInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 3))));
6508 assert(negInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 4))));
6509 assert(negInfInterval.contains(NegInfInterval!Date(Date(2010, 7, 5))));
6510 assert(negInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 6))));
6511 assert(negInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 7))));
6512 assert(!negInfInterval.contains(NegInfInterval!Date(Date(2012, 1, 8))));
6514 assert(!NegInfInterval!Date(Date(2010, 7, 3)).contains(negInfInterval));
6515 assert(!NegInfInterval!Date(Date(2010, 7, 4)).contains(negInfInterval));
6516 assert(!NegInfInterval!Date(Date(2010, 7, 5)).contains(negInfInterval));
6517 assert(!NegInfInterval!Date(Date(2012, 1, 6)).contains(negInfInterval));
6518 assert(NegInfInterval!Date(Date(2012, 1, 7)).contains(negInfInterval));
6519 assert(NegInfInterval!Date(Date(2012, 1, 8)).contains(negInfInterval));
6521 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 3))));
6522 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 4))));
6523 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2010, 7, 5))));
6524 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 6))));
6525 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 7))));
6526 assert(!negInfInterval.contains(PosInfInterval!Date(Date(2012, 1, 8))));
6528 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6529 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6530 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6531 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6532 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6533 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6534 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6535 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6565 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
6566 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
6567 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(Interval!Date(Date(1998, 2, 28), Date(2013, 5, 1))));
6569 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(PosInfInterval!Date(Date(1999, 5, 4))));
6571 assert(NegInfInterval!Date(Date(2012, 3, 1)).contains(NegInfInterval!Date(Date(1996, 5, 4))));
6572 assert(!NegInfInterval!Date(Date(2012, 3, 1)).contains(NegInfInterval!Date(Date(2013, 7, 9))));
6580 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6582 assert(!negInfInterval.isBefore(Date(2009, 7, 4)));
6583 assert(!negInfInterval.isBefore(Date(2010, 7, 3)));
6584 assert(!negInfInterval.isBefore(Date(2010, 7, 4)));
6585 assert(!negInfInterval.isBefore(Date(2010, 7, 5)));
6586 assert(!negInfInterval.isBefore(Date(2011, 7, 1)));
6587 assert(!negInfInterval.isBefore(Date(2012, 1, 6)));
6588 assert(negInfInterval.isBefore(Date(2012, 1, 7)));
6589 assert(negInfInterval.isBefore(Date(2012, 1, 8)));
6590 assert(negInfInterval.isBefore(Date(2013, 1, 7)));
6592 const cdate = Date(2010, 7, 6);
6593 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6594 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6600 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(1994, 12, 24)));
6601 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(2000, 1, 5)));
6602 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Date(2012, 3, 1)));
6610 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6612 static void testInterval(scope const NegInfInterval!Date negInfInterval, scope const Interval!Date interval)
6617 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
6620 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
6621 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
6622 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
6623 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
6624 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
6625 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
6626 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
6627 assert(!negInfInterval.isBefore(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
6628 assert(!negInfInterval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
6629 assert(!negInfInterval.isBefore(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
6630 assert(negInfInterval.isBefore(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
6631 assert(negInfInterval.isBefore(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
6633 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 3))));
6634 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 4))));
6635 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2010, 7, 5))));
6636 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 6))));
6637 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 7))));
6638 assert(!negInfInterval.isBefore(NegInfInterval!Date(Date(2012, 1, 8))));
6640 assert(!NegInfInterval!Date(Date(2010, 7, 3)).isBefore(negInfInterval));
6641 assert(!NegInfInterval!Date(Date(2010, 7, 4)).isBefore(negInfInterval));
6642 assert(!NegInfInterval!Date(Date(2010, 7, 5)).isBefore(negInfInterval));
6643 assert(!NegInfInterval!Date(Date(2012, 1, 6)).isBefore(negInfInterval));
6644 assert(!NegInfInterval!Date(Date(2012, 1, 7)).isBefore(negInfInterval));
6645 assert(!NegInfInterval!Date(Date(2012, 1, 8)).isBefore(negInfInterval));
6647 assert(!negInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 3))));
6648 assert(!negInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 4))));
6649 assert(!negInfInterval.isBefore(PosInfInterval!Date(Date(2010, 7, 5))));
6650 assert(!negInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 6))));
6651 assert(negInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 7))));
6652 assert(negInfInterval.isBefore(PosInfInterval!Date(Date(2012, 1, 8))));
6654 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6655 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6656 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6657 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6658 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6659 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6660 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6661 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6691 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
6692 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
6693 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
6695 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(PosInfInterval!Date(Date(1999, 5, 4))));
6696 assert(NegInfInterval!Date(Date(2012, 3, 1)).isBefore(PosInfInterval!Date(Date(2012, 3, 1))));
6698 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(NegInfInterval!Date(Date(1996, 5, 4))));
6699 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isBefore(NegInfInterval!Date(Date(2013, 7, 9))));
6707 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6709 assert(!negInfInterval.isAfter(Date(2009, 7, 4)));
6710 assert(!negInfInterval.isAfter(Date(2010, 7, 3)));
6711 assert(!negInfInterval.isAfter(Date(2010, 7, 4)));
6712 assert(!negInfInterval.isAfter(Date(2010, 7, 5)));
6713 assert(!negInfInterval.isAfter(Date(2011, 7, 1)));
6714 assert(!negInfInterval.isAfter(Date(2012, 1, 6)));
6715 assert(!negInfInterval.isAfter(Date(2012, 1, 7)));
6716 assert(!negInfInterval.isAfter(Date(2012, 1, 8)));
6717 assert(!negInfInterval.isAfter(Date(2013, 1, 7)));
6719 const cdate = Date(2010, 7, 6);
6720 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6721 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6732 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6734 static void testInterval(scope const NegInfInterval!Date negInfInterval, scope const Interval!Date interval)
6739 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
6742 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
6743 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
6744 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
6745 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
6746 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
6747 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
6748 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
6749 assert(!negInfInterval.isAfter(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
6750 assert(!negInfInterval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
6751 assert(!negInfInterval.isAfter(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
6752 assert(!negInfInterval.isAfter(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
6753 assert(!negInfInterval.isAfter(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
6755 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 3))));
6756 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 4))));
6757 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2010, 7, 5))));
6758 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 6))));
6759 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 7))));
6760 assert(!negInfInterval.isAfter(NegInfInterval!Date(Date(2012, 1, 8))));
6762 assert(!NegInfInterval!Date(Date(2010, 7, 3)).isAfter(negInfInterval));
6763 assert(!NegInfInterval!Date(Date(2010, 7, 4)).isAfter(negInfInterval));
6764 assert(!NegInfInterval!Date(Date(2010, 7, 5)).isAfter(negInfInterval));
6765 assert(!NegInfInterval!Date(Date(2012, 1, 6)).isAfter(negInfInterval));
6766 assert(!NegInfInterval!Date(Date(2012, 1, 7)).isAfter(negInfInterval));
6767 assert(!NegInfInterval!Date(Date(2012, 1, 8)).isAfter(negInfInterval));
6769 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 3))));
6770 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 4))));
6771 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2010, 7, 5))));
6772 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 6))));
6773 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 7))));
6774 assert(!negInfInterval.isAfter(PosInfInterval!Date(Date(2012, 1, 8))));
6776 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6777 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6778 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6779 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6780 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6781 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6782 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6783 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6813 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(1994, 12, 24)));
6814 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(2000, 1, 5)));
6815 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Date(2012, 3, 1)));
6817 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
6818 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
6819 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
6821 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(PosInfInterval!Date(Date(1999, 5, 4))));
6822 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(PosInfInterval!Date(Date(2012, 3, 1))));
6824 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(NegInfInterval!Date(Date(1996, 5, 4))));
6825 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAfter(NegInfInterval!Date(Date(2013, 7, 9))));
6833 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6835 static void testInterval(scope const NegInfInterval!Date negInfInterval, scope const Interval!Date interval)
6840 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
6843 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
6844 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
6845 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
6846 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
6847 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
6848 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
6849 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
6850 assert(negInfInterval.intersects(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
6851 assert(negInfInterval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
6852 assert(negInfInterval.intersects(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
6853 assert(!negInfInterval.intersects(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
6854 assert(!negInfInterval.intersects(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
6856 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 3))));
6857 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 4))));
6858 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2010, 7, 5))));
6859 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 6))));
6860 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 7))));
6861 assert(negInfInterval.intersects(NegInfInterval!Date(Date(2012, 1, 8))));
6863 assert(NegInfInterval!Date(Date(2010, 7, 3)).intersects(negInfInterval));
6864 assert(NegInfInterval!Date(Date(2010, 7, 4)).intersects(negInfInterval));
6865 assert(NegInfInterval!Date(Date(2010, 7, 5)).intersects(negInfInterval));
6866 assert(NegInfInterval!Date(Date(2012, 1, 6)).intersects(negInfInterval));
6867 assert(NegInfInterval!Date(Date(2012, 1, 7)).intersects(negInfInterval));
6868 assert(NegInfInterval!Date(Date(2012, 1, 8)).intersects(negInfInterval));
6870 assert(negInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 3))));
6871 assert(negInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 4))));
6872 assert(negInfInterval.intersects(PosInfInterval!Date(Date(2010, 7, 5))));
6873 assert(negInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 6))));
6874 assert(!negInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 7))));
6875 assert(!negInfInterval.intersects(PosInfInterval!Date(Date(2012, 1, 8))));
6877 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6878 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6879 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6880 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6881 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6882 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6883 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6884 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6914 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
6915 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(Interval!Date(Date(1999, 1, 12), Date(2011, 9, 17))));
6916 assert(!NegInfInterval!Date(Date(2012, 3, 1)).intersects(Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
6918 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(PosInfInterval!Date(Date(1999, 5, 4))));
6919 assert(!NegInfInterval!Date(Date(2012, 3, 1)).intersects(PosInfInterval!Date(Date(2012, 3, 1))));
6921 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(NegInfInterval!Date(Date(1996, 5, 4))));
6922 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersects(NegInfInterval!Date(Date(2013, 7, 9))));
6930 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6937 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
6939 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
6940 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
6942 assertThrown!DateTimeException(testInterval(negInfInterval, PosInfInterval!Date(Date(2012, 1, 7))));
6943 assertThrown!DateTimeException(testInterval(negInfInterval, PosInfInterval!Date(Date(2012, 1, 8))));
6946 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))) ==
6947 Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3)));
6948 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
6949 Interval!Date(Date(2010, 7, 1), Date(2012, 1, 7)));
6950 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
6951 Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4)));
6952 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
6953 Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5)));
6954 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
6955 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
6956 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
6957 Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7)));
6958 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
6959 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6)));
6960 assert(negInfInterval.intersection(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
6961 Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7)));
6962 assert(negInfInterval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
6963 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
6964 assert(negInfInterval.intersection(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
6965 Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7)));
6967 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2010, 7, 3))) == NegInfInterval!Date(Date(2010, 7, 3)));
6968 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2010, 7, 4))) == NegInfInterval!Date(Date(2010, 7, 4)));
6969 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2010, 7, 5))) == NegInfInterval!Date(Date(2010, 7, 5)));
6970 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 6))) == NegInfInterval!Date(Date(2012, 1, 6)));
6971 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 7))) == NegInfInterval!Date(Date(2012, 1, 7)));
6972 assert(negInfInterval.intersection(NegInfInterval!Date(Date(2012, 1, 8))) == NegInfInterval!Date(Date(2012, 1, 7)));
6974 assert(NegInfInterval!Date(Date(2010, 7, 3)).intersection(negInfInterval) == NegInfInterval!Date(Date(2010, 7, 3)));
6975 assert(NegInfInterval!Date(Date(2010, 7, 4)).intersection(negInfInterval) == NegInfInterval!Date(Date(2010, 7, 4)));
6976 assert(NegInfInterval!Date(Date(2010, 7, 5)).intersection(negInfInterval) == NegInfInterval!Date(Date(2010, 7, 5)));
6977 assert(NegInfInterval!Date(Date(2012, 1, 6)).intersection(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 6)));
6978 assert(NegInfInterval!Date(Date(2012, 1, 7)).intersection(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
6979 assert(NegInfInterval!Date(Date(2012, 1, 8)).intersection(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
6981 assert(negInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 3))) ==
6982 Interval!Date(Date(2010, 7, 3), Date(2012, 1 ,7)));
6983 assert(negInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 4))) ==
6984 Interval!Date(Date(2010, 7, 4), Date(2012, 1 ,7)));
6985 assert(negInfInterval.intersection(PosInfInterval!Date(Date(2010, 7, 5))) ==
6986 Interval!Date(Date(2010, 7, 5), Date(2012, 1 ,7)));
6987 assert(negInfInterval.intersection(PosInfInterval!Date(Date(2012, 1, 6))) ==
6988 Interval!Date(Date(2012, 1, 6), Date(2012, 1 ,7)));
6990 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6991 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6992 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
6993 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6994 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6995 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
6996 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
6997 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7027 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
7028 Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2)));
7029 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
7030 Interval!Date(Date(1999, 1, 12), Date(2012, 3, 1)));
7032 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(PosInfInterval!Date(Date(1990, 7, 6))) ==
7033 Interval!Date(Date(1990, 7, 6), Date(2012, 3, 1)));
7034 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(PosInfInterval!Date(Date(1999, 1, 12))) ==
7035 Interval!Date(Date(1999, 1, 12), Date(2012, 3, 1)));
7037 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(NegInfInterval!Date(Date(1999, 7, 6))) ==
7038 NegInfInterval!Date(Date(1999, 7, 6)));
7039 assert(NegInfInterval!Date(Date(2012, 3, 1)).intersection(NegInfInterval!Date(Date(2013, 1, 12))) ==
7040 NegInfInterval!Date(Date(2012, 3, 1)));
7048 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7050 static void testInterval(scope const NegInfInterval!Date negInfInterval, scope const Interval!Date interval)
7055 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
7058 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))));
7059 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))));
7060 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))));
7061 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))));
7062 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))));
7063 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))));
7064 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))));
7065 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))));
7066 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))));
7067 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))));
7068 assert(negInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))));
7069 assert(!negInfInterval.isAdjacent(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
7071 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 3))));
7072 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 4))));
7073 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2010, 7, 5))));
7074 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 6))));
7075 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 7))));
7076 assert(!negInfInterval.isAdjacent(NegInfInterval!Date(Date(2012, 1, 8))));
7078 assert(!NegInfInterval!Date(Date(2010, 7, 3)).isAdjacent(negInfInterval));
7079 assert(!NegInfInterval!Date(Date(2010, 7, 4)).isAdjacent(negInfInterval));
7080 assert(!NegInfInterval!Date(Date(2010, 7, 5)).isAdjacent(negInfInterval));
7081 assert(!NegInfInterval!Date(Date(2012, 1, 6)).isAdjacent(negInfInterval));
7082 assert(!NegInfInterval!Date(Date(2012, 1, 7)).isAdjacent(negInfInterval));
7083 assert(!NegInfInterval!Date(Date(2012, 1, 8)).isAdjacent(negInfInterval));
7085 assert(!negInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 3))));
7086 assert(!negInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 4))));
7087 assert(!negInfInterval.isAdjacent(PosInfInterval!Date(Date(2010, 7, 5))));
7088 assert(!negInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 6))));
7089 assert(negInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 7))));
7090 assert(!negInfInterval.isAdjacent(PosInfInterval!Date(Date(2012, 1, 8))));
7092 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7093 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7094 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7095 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7096 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7097 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7098 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7099 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7129 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))));
7130 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(Interval!Date(Date(1999, 1, 12), Date(2012, 3, 1))));
7131 assert(NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(Interval!Date(Date(2012, 3, 1), Date(2019, 2, 2))));
7132 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(Interval!Date(Date(2022, 10, 19), Date(2027, 6, 3))));
7134 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(PosInfInterval!Date(Date(1999, 5, 4))));
7135 assert(NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(PosInfInterval!Date(Date(2012, 3, 1))));
7137 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(NegInfInterval!Date(Date(1996, 5, 4))));
7138 assert(!NegInfInterval!Date(Date(2012, 3, 1)).isAdjacent(NegInfInterval!Date(Date(2012, 3, 1))));
7146 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7153 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
7155 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))));
7158 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))) ==
7159 NegInfInterval!Date(Date(2012, 1, 7)));
7160 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
7161 NegInfInterval!Date(Date(2013, 7, 3)));
7162 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
7163 NegInfInterval!Date(Date(2012, 1, 7)));
7164 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
7165 NegInfInterval!Date(Date(2012, 1, 7)));
7166 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
7167 NegInfInterval!Date(Date(2012, 1, 7)));
7168 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
7169 NegInfInterval!Date(Date(2012, 1, 8)));
7170 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
7171 NegInfInterval!Date(Date(2012, 1, 7)));
7172 assert(negInfInterval.merge(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
7173 NegInfInterval!Date(Date(2012, 1, 7)));
7174 assert(negInfInterval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
7175 NegInfInterval!Date(Date(2012, 1, 7)));
7176 assert(negInfInterval.merge(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
7177 NegInfInterval!Date(Date(2012, 1, 8)));
7178 assert(negInfInterval.merge(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
7179 NegInfInterval!Date(Date(2012, 1, 8)));
7181 assert(negInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 3))) == NegInfInterval!Date(Date(2012, 1, 7)));
7182 assert(negInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 4))) == NegInfInterval!Date(Date(2012, 1, 7)));
7183 assert(negInfInterval.merge(NegInfInterval!Date(Date(2010, 7, 5))) == NegInfInterval!Date(Date(2012, 1, 7)));
7184 assert(negInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 6))) == NegInfInterval!Date(Date(2012, 1, 7)));
7185 assert(negInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 7))) == NegInfInterval!Date(Date(2012, 1, 7)));
7186 assert(negInfInterval.merge(NegInfInterval!Date(Date(2012, 1, 8))) == NegInfInterval!Date(Date(2012, 1, 8)));
7188 assert(NegInfInterval!Date(Date(2010, 7, 3)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7189 assert(NegInfInterval!Date(Date(2010, 7, 4)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7190 assert(NegInfInterval!Date(Date(2010, 7, 5)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7191 assert(NegInfInterval!Date(Date(2012, 1, 6)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7192 assert(NegInfInterval!Date(Date(2012, 1, 7)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7193 assert(NegInfInterval!Date(Date(2012, 1, 8)).merge(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 8)));
7195 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 3)))));
7196 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 4)))));
7197 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2010, 7, 5)))));
7198 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 6)))));
7199 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 7)))));
7200 static assert(!__traits(compiles, negInfInterval.merge(PosInfInterval!Date(Date(2012, 1, 8)))));
7202 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7203 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7204 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7205 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7206 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7207 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7208 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7209 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7239 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
7240 NegInfInterval!Date(Date(2012, 3, 1)));
7241 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
7242 NegInfInterval!Date(Date(2015, 9, 2)));
7244 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(NegInfInterval!Date(Date(1999, 7, 6))) ==
7245 NegInfInterval!Date(Date(2012, 3, 1)));
7246 assert(NegInfInterval!Date(Date(2012, 3, 1)).merge(NegInfInterval!Date(Date(2013, 1, 12))) ==
7247 NegInfInterval!Date(Date(2013, 1, 12)));
7255 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7262 assertThrown!DateTimeException(testInterval(negInfInterval, Interval!Date(Date(2010, 7, 4), dur!"days"(0))));
7265 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 1), Date(2010, 7, 3))) ==
7266 NegInfInterval!Date(Date(2012, 1, 7)));
7267 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 1), Date(2013, 7, 3))) ==
7268 NegInfInterval!Date(Date(2013, 7, 3)));
7269 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 4))) ==
7270 NegInfInterval!Date(Date(2012, 1, 7)));
7271 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2010, 7, 5))) ==
7272 NegInfInterval!Date(Date(2012, 1, 7)));
7273 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 7))) ==
7274 NegInfInterval!Date(Date(2012, 1, 7)));
7275 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 3), Date(2012, 1, 8))) ==
7276 NegInfInterval!Date(Date(2012, 1, 8)));
7277 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 6))) ==
7278 NegInfInterval!Date(Date(2012, 1, 7)));
7279 assert(negInfInterval.span(Interval!Date(Date(2010, 7, 5), Date(2012, 1, 7))) ==
7280 NegInfInterval!Date(Date(2012, 1, 7)));
7281 assert(negInfInterval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 7))) ==
7282 NegInfInterval!Date(Date(2012, 1, 7)));
7283 assert(negInfInterval.span(Interval!Date(Date(2012, 1, 6), Date(2012, 1, 8))) ==
7284 NegInfInterval!Date(Date(2012, 1, 8)));
7285 assert(negInfInterval.span(Interval!Date(Date(2012, 1, 7), Date(2012, 1, 8))) ==
7286 NegInfInterval!Date(Date(2012, 1, 8)));
7287 assert(negInfInterval.span(Interval!Date(Date(2012, 1, 8), Date(2012, 1, 9))) ==
7288 NegInfInterval!Date(Date(2012, 1, 9)));
7290 assert(negInfInterval.span(NegInfInterval!Date(Date(2010, 7, 3))) == NegInfInterval!Date(Date(2012, 1, 7)));
7291 assert(negInfInterval.span(NegInfInterval!Date(Date(2010, 7, 4))) == NegInfInterval!Date(Date(2012, 1, 7)));
7292 assert(negInfInterval.span(NegInfInterval!Date(Date(2010, 7, 5))) == NegInfInterval!Date(Date(2012, 1, 7)));
7293 assert(negInfInterval.span(NegInfInterval!Date(Date(2012, 1, 6))) == NegInfInterval!Date(Date(2012, 1, 7)));
7294 assert(negInfInterval.span(NegInfInterval!Date(Date(2012, 1, 7))) == NegInfInterval!Date(Date(2012, 1, 7)));
7295 assert(negInfInterval.span(NegInfInterval!Date(Date(2012, 1, 8))) == NegInfInterval!Date(Date(2012, 1, 8)));
7297 assert(NegInfInterval!Date(Date(2010, 7, 3)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7298 assert(NegInfInterval!Date(Date(2010, 7, 4)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7299 assert(NegInfInterval!Date(Date(2010, 7, 5)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7300 assert(NegInfInterval!Date(Date(2012, 1, 6)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7301 assert(NegInfInterval!Date(Date(2012, 1, 7)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 7)));
7302 assert(NegInfInterval!Date(Date(2012, 1, 8)).span(negInfInterval) == NegInfInterval!Date(Date(2012, 1, 8)));
7304 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2010, 7, 3)))));
7305 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2010, 7, 4)))));
7306 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2010, 7, 5)))));
7307 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2012, 1, 6)))));
7308 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2012, 1, 7)))));
7309 static assert(!__traits(compiles, negInfInterval.span(PosInfInterval!Date(Date(2012, 1, 8)))));
7311 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7312 const cInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7313 immutable iInterval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
7314 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7315 const cPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7316 immutable iPosInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
7317 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7318 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7348 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(Interval!Date(Date(1990, 7, 6), Date(2000, 8, 2))) ==
7349 NegInfInterval!Date(Date(2012, 3, 1)));
7350 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(Interval!Date(Date(1999, 1, 12), Date(2015, 9, 2))) ==
7351 NegInfInterval!Date(Date(2015, 9, 2)));
7352 assert(NegInfInterval!Date(Date(1600, 1, 7)).span(Interval!Date(Date(2012, 3, 11), Date(2017, 7, 1))) ==
7353 NegInfInterval!Date(Date(2017, 7, 1)));
7355 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(NegInfInterval!Date(Date(1999, 7, 6))) ==
7356 NegInfInterval!Date(Date(2012, 3, 1)));
7357 assert(NegInfInterval!Date(Date(2012, 3, 1)).span(NegInfInterval!Date(Date(2013, 1, 12))) ==
7358 NegInfInterval!Date(Date(2013, 1, 12)));
7366 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
7375 testInterval(interval, dur!"days"(22), NegInfInterval!Date(Date(2012, 1, 29)));
7376 testInterval(interval, dur!"days"(-22), NegInfInterval!Date(Date(2011, 12, 16)));
7378 const cInterval = NegInfInterval!Date(Date(2012, 1, 7));
7379 immutable iInterval = NegInfInterval!Date(Date(2012, 1, 7));
7384 auto interval1 = NegInfInterval!Date(Date(2012, 4, 5));
7385 auto interval2 = NegInfInterval!Date(Date(2012, 4, 5));
7388 assert(interval1 == NegInfInterval!Date(Date(2012, 5, 25)));
7391 assert(interval2 == NegInfInterval!Date( Date(2012, 2, 15)));
7400 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
7414 testInterval(interval, 5, 0, AllowDayOverflow.yes, NegInfInterval!Date(Date(2017, 1, 7)));
7415 testInterval(interval, -5, 0, AllowDayOverflow.yes, NegInfInterval!Date(Date(2007, 1, 7)));
7417 auto interval2 = NegInfInterval!Date(Date(2010, 5, 31));
7419 testInterval(interval2, 1, 1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2011, 7, 1)));
7420 testInterval(interval2, 1, -1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2011, 5, 1)));
7421 testInterval(interval2, -1, -1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2009, 5, 1)));
7422 testInterval(interval2, -1, 1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2009, 7, 1)));
7424 testInterval(interval2, 1, 1, AllowDayOverflow.no, NegInfInterval!Date(Date(2011, 6, 30)));
7425 testInterval(interval2, 1, -1, AllowDayOverflow.no, NegInfInterval!Date(Date(2011, 4, 30)));
7426 testInterval(interval2, -1, -1, AllowDayOverflow.no, NegInfInterval!Date(Date(2009, 4, 30)));
7427 testInterval(interval2, -1, 1, AllowDayOverflow.no, NegInfInterval!Date(Date(2009, 6, 30)));
7430 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7431 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7436 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
7437 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
7440 assert(interval1 == NegInfInterval!Date(Date(2014, 3, 1)));
7443 assert(interval2 == NegInfInterval!Date(Date(2010, 3, 1)));
7451 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
7460 testInterval(interval, dur!"days"(22), NegInfInterval!Date(Date(2012, 1, 29)));
7461 testInterval(interval, dur!"days"(-22), NegInfInterval!Date(Date(2011, 12, 16)));
7463 const cInterval = NegInfInterval!Date(Date(2012, 1, 7));
7464 immutable iInterval = NegInfInterval!Date(Date(2012, 1, 7));
7469 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
7470 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
7473 assert(interval1 == NegInfInterval!Date(Date(2012, 3, 3)));
7476 assert(interval2 == NegInfInterval!Date(Date(2012, 2, 28)));
7485 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
7494 testInterval(interval, 5, 0, AllowDayOverflow.yes, NegInfInterval!Date(Date(2017, 1, 7)));
7495 testInterval(interval, -5, 0, AllowDayOverflow.yes, NegInfInterval!Date(Date(2007, 1, 7)));
7497 auto interval2 = NegInfInterval!Date(Date(2010, 5, 31));
7499 testInterval(interval2, 1, 1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2011, 7, 1)));
7500 testInterval(interval2, 1, -1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2011, 5, 1)));
7501 testInterval(interval2, -1, -1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2009, 5, 1)));
7502 testInterval(interval2, -1, 1, AllowDayOverflow.yes, NegInfInterval!Date(Date(2009, 7, 1)));
7504 testInterval(interval2, 1, 1, AllowDayOverflow.no, NegInfInterval!Date(Date(2011, 6, 30)));
7505 testInterval(interval2, 1, -1, AllowDayOverflow.no, NegInfInterval!Date(Date(2011, 4, 30)));
7506 testInterval(interval2, -1, -1, AllowDayOverflow.no, NegInfInterval!Date(Date(2009, 4, 30)));
7507 testInterval(interval2, -1, 1, AllowDayOverflow.no, NegInfInterval!Date( Date(2009, 6, 30)));
7510 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7511 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7516 auto interval1 = NegInfInterval!Date(Date(2012, 3, 1));
7517 auto interval2 = NegInfInterval!Date(Date(2012, 3, 1));
7520 assert(interval1 == NegInfInterval!Date(Date(2014, 3, 1)));
7523 assert(interval2 == NegInfInterval!Date(Date(2010, 3, 1)));
7531 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7533 static void testInterval(NegInfInterval!Date negInfInterval)
7535 negInfInterval.bwdRange(everyDayOfWeek!(Date, Direction.fwd)(DayOfWeek.fri)).popFront();
7540 assert(NegInfInterval!Date(Date(2010, 10, 1)).bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).front ==
7541 Date(2010, 10, 1));
7543 assert(NegInfInterval!Date(Date(2010, 10, 1)).bwdRange(
7544 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri), PopFirst.yes).front == Date(2010, 9, 24));
7547 auto interval = NegInfInterval!Date(Date(2010, 9, 9));
7548 auto func = delegate (scope const Date date)
7556 //An odd day. Using PopFirst.yes would have made this Date(2010, 9, 8).
7557 assert(range.front == Date(2010, 9, 9));
7560 assert(range.front == Date(2010, 9, 8));
7563 assert(range.front == Date(2010, 9, 6));
7566 assert(range.front == Date(2010, 9, 4));
7569 assert(range.front == Date(2010, 9, 2));
7574 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7575 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7576 assert(!cNegInfInterval.bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).empty);
7577 assert(!iNegInfInterval.bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri)).empty);
7585 assert(NegInfInterval!Date(Date(2012, 1, 7)).toString() == "[-��� - 2012-Jan-07)");
7587 const cNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7588 immutable iNegInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
7637 import std.datetime.date : Date, DayOfWeek;
7639 auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27));
7640 auto func = everyDayOfWeek!Date(DayOfWeek.mon);
7643 // A Thursday. Using PopFirst.yes would have made this Date(2010, 9, 6).
7644 assert(range.front == Date(2010, 9, 2));
7647 assert(range.front == Date(2010, 9, 6));
7650 assert(range.front == Date(2010, 9, 13));
7653 assert(range.front == Date(2010, 9, 20));
7664 auto funcFwd = everyDayOfWeek!Date(DayOfWeek.mon);
7665 auto funcBwd = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.mon);
7667 assert(funcFwd(Date(2010, 8, 28)) == Date(2010, 8, 30));
7668 assert(funcFwd(Date(2010, 8, 29)) == Date(2010, 8, 30));
7669 assert(funcFwd(Date(2010, 8, 30)) == Date(2010, 9, 6));
7670 assert(funcFwd(Date(2010, 8, 31)) == Date(2010, 9, 6));
7671 assert(funcFwd(Date(2010, 9, 1)) == Date(2010, 9, 6));
7672 assert(funcFwd(Date(2010, 9, 2)) == Date(2010, 9, 6));
7673 assert(funcFwd(Date(2010, 9, 3)) == Date(2010, 9, 6));
7674 assert(funcFwd(Date(2010, 9, 4)) == Date(2010, 9, 6));
7675 assert(funcFwd(Date(2010, 9, 5)) == Date(2010, 9, 6));
7676 assert(funcFwd(Date(2010, 9, 6)) == Date(2010, 9, 13));
7677 assert(funcFwd(Date(2010, 9, 7)) == Date(2010, 9, 13));
7679 assert(funcBwd(Date(2010, 8, 28)) == Date(2010, 8, 23));
7680 assert(funcBwd(Date(2010, 8, 29)) == Date(2010, 8, 23));
7681 assert(funcBwd(Date(2010, 8, 30)) == Date(2010, 8, 23));
7682 assert(funcBwd(Date(2010, 8, 31)) == Date(2010, 8, 30));
7683 assert(funcBwd(Date(2010, 9, 1)) == Date(2010, 8, 30));
7684 assert(funcBwd(Date(2010, 9, 2)) == Date(2010, 8, 30));
7685 assert(funcBwd(Date(2010, 9, 3)) == Date(2010, 8, 30));
7686 assert(funcBwd(Date(2010, 9, 4)) == Date(2010, 8, 30));
7687 assert(funcBwd(Date(2010, 9, 5)) == Date(2010, 8, 30));
7688 assert(funcBwd(Date(2010, 9, 6)) == Date(2010, 8, 30));
7689 assert(funcBwd(Date(2010, 9, 7)) == Date(2010, 9, 6));
7759 import std.datetime.date : Date, Month;
7761 auto interval = Interval!Date(Date(2000, 1, 30), Date(2004, 8, 5));
7762 auto func = everyMonth!Date(Month.feb);
7765 // Using PopFirst.yes would have made this Date(2010, 2, 29).
7766 assert(range.front == Date(2000, 1, 30));
7769 assert(range.front == Date(2000, 2, 29));
7772 assert(range.front == Date(2001, 2, 28));
7775 assert(range.front == Date(2002, 2, 28));
7778 assert(range.front == Date(2003, 2, 28));
7781 assert(range.front == Date(2004, 2, 28));
7792 auto funcFwd = everyMonth!Date(Month.jun);
7793 auto funcBwd = everyMonth!(Date, Direction.bwd)(Month.jun);
7795 assert(funcFwd(Date(2010, 5, 31)) == Date(2010, 6, 30));
7796 assert(funcFwd(Date(2010, 6, 30)) == Date(2011, 6, 30));
7797 assert(funcFwd(Date(2010, 7, 31)) == Date(2011, 6, 30));
7798 assert(funcFwd(Date(2010, 8, 31)) == Date(2011, 6, 30));
7799 assert(funcFwd(Date(2010, 9, 30)) == Date(2011, 6, 30));
7800 assert(funcFwd(Date(2010, 10, 31)) == Date(2011, 6, 30));
7801 assert(funcFwd(Date(2010, 11, 30)) == Date(2011, 6, 30));
7802 assert(funcFwd(Date(2010, 12, 31)) == Date(2011, 6, 30));
7803 assert(funcFwd(Date(2011, 1, 31)) == Date(2011, 6, 30));
7804 assert(funcFwd(Date(2011, 2, 28)) == Date(2011, 6, 28));
7805 assert(funcFwd(Date(2011, 3, 31)) == Date(2011, 6, 30));
7806 assert(funcFwd(Date(2011, 4, 30)) == Date(2011, 6, 30));
7807 assert(funcFwd(Date(2011, 5, 31)) == Date(2011, 6, 30));
7808 assert(funcFwd(Date(2011, 6, 30)) == Date(2012, 6, 30));
7809 assert(funcFwd(Date(2011, 7, 31)) == Date(2012, 6, 30));
7811 assert(funcBwd(Date(2010, 5, 31)) == Date(2009, 6, 30));
7812 assert(funcBwd(Date(2010, 6, 30)) == Date(2009, 6, 30));
7813 assert(funcBwd(Date(2010, 7, 31)) == Date(2010, 6, 30));
7814 assert(funcBwd(Date(2010, 8, 31)) == Date(2010, 6, 30));
7815 assert(funcBwd(Date(2010, 9, 30)) == Date(2010, 6, 30));
7816 assert(funcBwd(Date(2010, 10, 31)) == Date(2010, 6, 30));
7817 assert(funcBwd(Date(2010, 11, 30)) == Date(2010, 6, 30));
7818 assert(funcBwd(Date(2010, 12, 31)) == Date(2010, 6, 30));
7819 assert(funcBwd(Date(2011, 1, 31)) == Date(2010, 6, 30));
7820 assert(funcBwd(Date(2011, 2, 28)) == Date(2010, 6, 28));
7821 assert(funcBwd(Date(2011, 3, 31)) == Date(2010, 6, 30));
7822 assert(funcBwd(Date(2011, 4, 30)) == Date(2010, 6, 30));
7823 assert(funcBwd(Date(2011, 5, 31)) == Date(2010, 6, 30));
7824 assert(funcBwd(Date(2011, 6, 30)) == Date(2010, 6, 30));
7825 assert(funcBwd(Date(2011, 7, 30)) == Date(2011, 6, 30));
7871 import std.datetime.date : Date;
7873 auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27));
7874 auto func = everyDuration!Date(dur!"days"(8));
7877 // Using PopFirst.yes would have made this Date(2010, 9, 10).
7878 assert(range.front == Date(2010, 9, 2));
7881 assert(range.front == Date(2010, 9, 10));
7884 assert(range.front == Date(2010, 9, 18));
7887 assert(range.front == Date(2010, 9, 26));
7898 auto funcFwd = everyDuration!Date(dur!"days"(27));
7899 auto funcBwd = everyDuration!(Date, Direction.bwd)(dur!"days"(27));
7901 assert(funcFwd(Date(2009, 12, 25)) == Date(2010, 1, 21));
7902 assert(funcFwd(Date(2009, 12, 26)) == Date(2010, 1, 22));
7903 assert(funcFwd(Date(2009, 12, 27)) == Date(2010, 1, 23));
7904 assert(funcFwd(Date(2009, 12, 28)) == Date(2010, 1, 24));
7906 assert(funcBwd(Date(2010, 1, 21)) == Date(2009, 12, 25));
7907 assert(funcBwd(Date(2010, 1, 22)) == Date(2009, 12, 26));
7908 assert(funcBwd(Date(2010, 1, 23)) == Date(2009, 12, 27));
7909 assert(funcBwd(Date(2010, 1, 24)) == Date(2009, 12, 28));
7911 assert(everyDuration!Date(dur!"hnsecs"(1)) !is null);
7996 import std.datetime.date : AllowDayOverflow, Date;
7998 auto interval = Interval!Date(Date(2010, 9, 2), Date(2025, 9, 27));
7999 auto func = everyDuration!Date(4, 1, AllowDayOverflow.yes, dur!"days"(2));
8002 // Using PopFirst.yes would have made this Date(2014, 10, 12).
8003 assert(range.front == Date(2010, 9, 2));
8006 assert(range.front == Date(2014, 10, 4));
8009 assert(range.front == Date(2018, 11, 6));
8012 assert(range.front == Date(2022, 12, 8));
8024 auto funcFwd = everyDuration!Date(1, 2, AllowDayOverflow.yes, dur!"days"(3));
8025 auto funcBwd = everyDuration!(Date, Direction.bwd)(1, 2, AllowDayOverflow.yes, dur!"days"(3));
8027 assert(funcFwd(Date(2009, 12, 25)) == Date(2011, 2, 28));
8028 assert(funcFwd(Date(2009, 12, 26)) == Date(2011, 3, 1));
8029 assert(funcFwd(Date(2009, 12, 27)) == Date(2011, 3, 2));
8030 assert(funcFwd(Date(2009, 12, 28)) == Date(2011, 3, 3));
8031 assert(funcFwd(Date(2009, 12, 29)) == Date(2011, 3, 4));
8033 assert(funcBwd(Date(2011, 2, 28)) == Date(2009, 12, 25));
8034 assert(funcBwd(Date(2011, 3, 1)) == Date(2009, 12, 26));
8035 assert(funcBwd(Date(2011, 3, 2)) == Date(2009, 12, 27));
8036 assert(funcBwd(Date(2011, 3, 3)) == Date(2009, 12, 28));
8037 assert(funcBwd(Date(2011, 3, 4)) == Date(2010, 1, 1));
8041 auto funcFwd = everyDuration!Date(1, 2, AllowDayOverflow.no, dur!"days"(3));
8042 auto funcBwd = everyDuration!(Date, Direction.bwd)(1, 2, AllowDayOverflow.yes, dur!"days"(3));
8044 assert(funcFwd(Date(2009, 12, 25)) == Date(2011, 2, 28));
8045 assert(funcFwd(Date(2009, 12, 26)) == Date(2011, 3, 1));
8046 assert(funcFwd(Date(2009, 12, 27)) == Date(2011, 3, 2));
8047 assert(funcFwd(Date(2009, 12, 28)) == Date(2011, 3, 3));
8048 assert(funcFwd(Date(2009, 12, 29)) == Date(2011, 3, 3));
8050 assert(funcBwd(Date(2011, 2, 28)) == Date(2009, 12, 25));
8051 assert(funcBwd(Date(2011, 3, 1)) == Date(2009, 12, 26));
8052 assert(funcBwd(Date(2011, 3, 2)) == Date(2009, 12, 27));
8053 assert(funcBwd(Date(2011, 3, 3)) == Date(2009, 12, 28));
8054 assert(funcBwd(Date(2011, 3, 4)) == Date(2010, 1, 1));
8057 assert(everyDuration!Date(1, 2, AllowDayOverflow.yes, dur!"hnsecs"(1)) !is null);
8072 the interval `Interval!Date`, pass a function to $(LREF Interval)'s
8073 `fwdRange` where that function took a $(REF Date,std,datetime,date) and
8074 returned a $(REF Date,std,datetime,date) which was one day later. That
8076 over the $(REF Date,std,datetime,date)s in the interval.
8307 static assert(isInputRange!(IntervalRange!(Date, Direction.fwd)));
8308 static assert(isForwardRange!(IntervalRange!(Date, Direction.fwd)));
8311 // static assert(!isOutputRange!(IntervalRange!(Date, Direction.fwd), Date));
8313 static assert(!isBidirectionalRange!(IntervalRange!(Date, Direction.fwd)));
8314 static assert(!isRandomAccessRange!(IntervalRange!(Date, Direction.fwd)));
8315 static assert(!hasSwappableElements!(IntervalRange!(Date, Direction.fwd)));
8316 static assert(!hasAssignableElements!(IntervalRange!(Date, Direction.fwd)));
8317 static assert(!hasLength!(IntervalRange!(Date, Direction.fwd)));
8318 static assert(!isInfinite!(IntervalRange!(Date, Direction.fwd)));
8319 static assert(!hasSlicing!(IntervalRange!(Date, Direction.fwd)));
8321 static assert(is(ElementType!(IntervalRange!(Date, Direction.fwd)) == Date));
8334 Date dateFunc(scope const Date date) { return date; }
8335 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8336 auto ir = IntervalRange!(Date, Direction.fwd)(interval, &dateFunc);
8366 auto range = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 21)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8372 const cRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8375 //Apparently, creating an immutable IntervalRange!Date doesn't work, so we can't test if
8381 auto range = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 21)).bwdRange(
8382 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
8388 const cRange = Interval!Date( Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8389 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
8392 //Apparently, creating an immutable IntervalRange!Date doesn't work, so we can't test if
8404 auto emptyRange = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 20)).fwdRange(
8405 everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8407 (scope const IntervalRange!(Date, Direction.fwd) range){range.front;}(emptyRange));
8409 auto range = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(everyDayOfWeek!Date(DayOfWeek.wed));
8410 assert(range.front == Date(2010, 7, 4));
8412 auto poppedRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(
8413 everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8414 assert(poppedRange.front == Date(2010, 7, 7));
8416 const cRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8417 assert(cRange.front != Date.init);
8422 auto emptyRange = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 20)).bwdRange(
8423 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
8425 (scope const IntervalRange!(Date, Direction.bwd) range){range.front;}(emptyRange));
8427 auto range = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8428 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed));
8429 assert(range.front == Date(2012, 1, 7));
8431 auto poppedRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8432 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
8433 assert(poppedRange.front == Date(2012, 1, 4));
8435 const cRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8436 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
8437 assert(cRange.front != Date.init);
8449 auto emptyRange = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 20)).fwdRange(
8450 everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8451 assertThrown!DateTimeException((IntervalRange!(Date, Direction.fwd) range){range.popFront();}(emptyRange));
8453 auto range = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(
8454 everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8465 const cRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8466 assert(cRange.front != Date.init);
8471 auto emptyRange = Interval!Date(Date(2010, 9, 19), Date(2010, 9, 20)).bwdRange(
8472 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
8473 assertThrown!DateTimeException((IntervalRange!(Date, Direction.bwd) range){range.popFront();}(emptyRange));
8475 auto range = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8476 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
8487 const cRange = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7)).bwdRange(
8488 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
8500 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8501 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8509 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8510 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
8524 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8525 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8536 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8537 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
8554 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8555 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8563 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8564 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
8578 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8579 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8590 auto interval = Interval!Date(Date(2010, 7, 4), Date(2012, 1, 7));
8591 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
8610 over all of the days in the interval `PosInfInterval!Date`, pass a
8612 $(REF Date,std,datetime,date) and returned a $(REF Date,std,datetime,date)
8615 $(REF Date,std,datetime,date)s in the interval - though obviously, since the
8753 static assert(isInputRange!(PosInfIntervalRange!Date));
8754 static assert(isForwardRange!(PosInfIntervalRange!Date));
8755 static assert(isInfinite!(PosInfIntervalRange!Date));
8758 // static assert(!isOutputRange!(PosInfIntervalRange!Date, Date));
8759 static assert(!isBidirectionalRange!(PosInfIntervalRange!Date));
8760 static assert(!isRandomAccessRange!(PosInfIntervalRange!Date));
8761 static assert(!hasSwappableElements!(PosInfIntervalRange!Date));
8762 static assert(!hasAssignableElements!(PosInfIntervalRange!Date));
8763 static assert(!hasLength!(PosInfIntervalRange!Date));
8764 static assert(!hasSlicing!(PosInfIntervalRange!Date));
8766 static assert(is(ElementType!(PosInfIntervalRange!Date) == Date));
8779 Date dateFunc(scope const Date date) { return date; }
8780 auto posInfInterval = PosInfInterval!Date(Date(2010, 7, 4));
8781 auto ir = PosInfIntervalRange!Date(posInfInterval, &dateFunc);
8808 auto range = PosInfInterval!Date(Date(2010, 7, 4)).fwdRange(everyDayOfWeek!Date(DayOfWeek.wed));
8809 assert(range.front == Date(2010, 7, 4));
8811 auto poppedRange = PosInfInterval!Date(Date(2010, 7, 4)).fwdRange(everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8812 assert(poppedRange.front == Date(2010, 7, 7));
8814 const cRange = PosInfInterval!Date(Date(2010, 7, 4)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8815 assert(cRange.front != Date.init);
8824 auto range = PosInfInterval!Date(Date(2010, 7, 4)).fwdRange(everyDayOfWeek!Date(DayOfWeek.wed), PopFirst.yes);
8833 const cRange = PosInfInterval!Date(Date(2010, 7, 4)).fwdRange(everyDayOfWeek!Date(DayOfWeek.fri));
8842 auto interval = PosInfInterval!Date(Date(2010, 7, 4));
8843 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8854 auto interval = PosInfInterval!Date(Date(2010, 7, 4));
8855 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8869 auto interval = PosInfInterval!Date(Date(2010, 7, 4));
8870 auto func = everyDayOfWeek!Date(DayOfWeek.fri);
8885 `NegInfInterval!Date`, pass a function to `NegInfInterval`'s
8886 `bwdRange` where that function took a $(REF Date,std,datetime,date) and
8887 returned a $(REF Date,std,datetime,date) which was one day earlier. That
8889 iterate over the $(REF Date,std,datetime,date)s in the interval - though
9036 static assert(isInputRange!(NegInfIntervalRange!Date));
9037 static assert(isForwardRange!(NegInfIntervalRange!Date));
9038 static assert(isInfinite!(NegInfIntervalRange!Date));
9041 // static assert(!isOutputRange!(NegInfIntervalRange!Date, Date));
9042 static assert(!isBidirectionalRange!(NegInfIntervalRange!Date));
9043 static assert(!isRandomAccessRange!(NegInfIntervalRange!Date));
9044 static assert(!hasSwappableElements!(NegInfIntervalRange!Date));
9045 static assert(!hasAssignableElements!(NegInfIntervalRange!Date));
9046 static assert(!hasLength!(NegInfIntervalRange!Date));
9047 static assert(!hasSlicing!(NegInfIntervalRange!Date));
9049 static assert(is(ElementType!(NegInfIntervalRange!Date) == Date));
9061 Date dateFunc(scope const Date date) { return date; }
9062 auto negInfInterval = NegInfInterval!Date(Date(2012, 1, 7));
9063 auto ir = NegInfIntervalRange!Date(negInfInterval, &dateFunc);
9090 auto range = NegInfInterval!Date(Date(2012, 1, 7)).bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed));
9091 assert(range.front == Date(2012, 1, 7));
9093 auto poppedRange = NegInfInterval!Date(Date(2012, 1, 7)).bwdRange(
9094 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
9095 assert(poppedRange.front == Date(2012, 1, 4));
9097 const cRange = NegInfInterval!Date(Date(2012, 1, 7)).bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
9098 assert(cRange.front != Date.init);
9107 auto range = NegInfInterval!Date(Date(2012, 1, 7)).bwdRange(
9108 everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.wed), PopFirst.yes);
9117 const cRange = NegInfInterval!Date(Date(2012, 1, 7)).bwdRange(everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri));
9126 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
9127 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
9138 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
9139 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);
9153 auto interval = NegInfInterval!Date(Date(2012, 1, 7));
9154 auto func = everyDayOfWeek!(Date, Direction.bwd)(DayOfWeek.fri);