public void test_smart_date_differences() {
    Date d1 = Dates.newDate(2010, 1, 1, 10, 30, 0);
    Date d2 = Dates.newDate(2010, 1, 3, 11, 30, 0);
    assertEquals("2 days from now", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 9, 29, 58);
    assertEquals("one hour ago", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 12, 30, 5);
    assertEquals("2 hours from now", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 10, 0, 0);
    assertEquals("30 minutes ago", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 10, 29, 0);
    assertEquals("one minute ago", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 10, 30, 0);
    assertEquals("now", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 10, 29, 1);
    assertEquals("now", Dates.differenceSmart(d1, d2));

    d2 = Dates.newDate(2010, 1, 1, 10, 30, 5);
    assertEquals("now", Dates.differenceSmart(d1, d2));
  }