    01: import junit.framework.*;
    02:
    03: /**
    04:    A class to test the Day class with JUnit.
    05: */
    06: public class DayTest extends TestCase
    07: {
    08:    /**
    09:       This test tests the addDays method with positive
    10:       parameters.
    11:    */
    12:    public void testAdd()
    13:    {
    14:       for (int i = 1; i <= MAX_DAYS; i = i * INCREMENT)
    15:       {
    16:          Day d1 = new Day(1970, 1, 1);
    17:          Day d2 = d1.addDays(i);
    18:          assert d2.daysFrom(d1) == i;
    19:       }
    20:    }
    21:
    22:    /**
    23:       This test tests the addDays method with negative
    24:       parameters.
    25:    */
    26:    public void testAddNegative()
    27:    {
    28:       for (int i = 1; i <= MAX_DAYS; i = i * INCREMENT)
    29:       {
    30:          Day d1 = new Day(1970, 1, 1);
    31:          Day d2 = d1.addDays(-i);
    32:          assert d1.daysFrom(d2) == i;
    33:       }
    34:    }
    35:
    36:    /**
    37:       This test tests the daysFrom method.
    38:    */
    39:    public void testDaysFrom()
    40:    {
    41:       Day d1 = new Day(1970, 1, 1);
    42:       Day d2 = new Day(2001, 1, 1);
    43:       int n = d1.daysFrom(d2);
    44:       Day d3 = d2.addDays(n);
    45:       assert d1.getYear() == d3.getYear();
    46:       assert d1.getMonth() == d3.getMonth();
    47:       assert d1.getDate() == d3.getDate();
    48:    }
    49:
    50:    /**
    51:       This test tests arithmetic around the Gregorian
    52:       calendar change.
    53:    */
    54:    public void testGregorianBoundary()
    55:    {
    56:       Day d1 = new Day(1580, 1, 1);
    57:       Day d2 = d1.addDays(MAX_DAYS);
    58:       Day d3 = d2.addDays(-MAX_DAYS);
    59:       assert d3.daysFrom(d1) == 0;
    60:    }
    61:
    62:    private static final int MAX_DAYS = 10000;
    63:    private static final int INCREMENT = 10;
    64: }
    65: