Чистый код. Создание, анализ и рефакторинг — страница 83 из 94

401     assertEquals(d(31, JULY, 2006), d.getEndOfCurrentMonth(d(1, JULY, 2006)));

402     assertEquals(d(31, AUGUST, 2006), d.getEndOfCurrentMonth(d(1, AUGUST, 2006)));

403     assertEquals(d(30, SEPTEMBER, 2006), d.getEndOfCurrentMonth(d(1, SEPTEMBER, 2006)));

404     assertEquals(d(31, OCTOBER, 2006), d.getEndOfCurrentMonth(d(1, OCTOBER, 2006)));

405     assertEquals(d(30, NOVEMBER, 2006), d.getEndOfCurrentMonth(d(1, NOVEMBER, 2006)));

406     assertEquals(d(31, DECEMBER, 2006), d.getEndOfCurrentMonth(d(1, DECEMBER, 2006)));

407     assertEquals(d(29, FEBRUARY, 2008), d.getEndOfCurrentMonth(d(1, FEBRUARY, 2008)));

408   }

409

410   public void testWeekInMonthToString() throws Exception {

411     assertEquals("First",weekInMonthToString(FIRST_WEEK_IN_MONTH));

412     assertEquals("Second",weekInMonthToString(SECOND_WEEK_IN_MONTH));

413     assertEquals("Third",weekInMonthToString(THIRD_WEEK_IN_MONTH));

414     assertEquals("Fourth",weekInMonthToString(FOURTH_WEEK_IN_MONTH));

415     assertEquals("Last",weekInMonthToString(LAST_WEEK_IN_MONTH));

416

417 //todo    try {

418 //      weekInMonthToString(-1);

419 //      fail("Invalid week code should throw exception");

420 //    } catch (IllegalArgumentException e) {

421 //    }

422   }

423

424   public void testRelativeToString() throws Exception {

425     assertEquals("Preceding",relativeToString(PRECEDING));

426     assertEquals("Nearest",relativeToString(NEAREST));

427     assertEquals("Following",relativeToString(FOLLOWING));

428

429 //todo    try {

430 //      relativeToString(-1000);

431 //      fail("Invalid relative code should throw exception");

432 //    } catch (IllegalArgumentException e) {

433 //    }

434   }

435

436   public void testCreateInstanceFromDDMMYYY() throws Exception {

437     SerialDate date = createInstance(1, JANUARY, 1900);

438     assertEquals(1,date.getDayOfMonth());

439     assertEquals(JANUARY,date.getMonth());

440     assertEquals(1900,date.getYYYY());

441     assertEquals(2,date.toSerial());

442   }

443

444   public void testCreateInstanceFromSerial() throws Exception {

445     assertEquals(d(1, JANUARY, 1900),createInstance(2));


Листинг Б.4. (продолжение)

446     assertEquals(d(1, JANUARY, 1901), createInstance(367));

447   }

448

449   public void testCreateInstanceFromJavaDate() throws Exception {

450     assertEquals(d(1, JANUARY, 1900),

                      createInstance(new GregorianCalendar(1900,0,1).getTime()));

451     assertEquals(d(1, JANUARY, 2006),

                      createInstance(new GregorianCalendar(2006,0,1).getTime()));

452   }

453

454   public static void main(String[] args) {

455     junit.textui.TestRunner.run(BobsSerialDateTest.class);

456   }

457 }


Листинг Б.5. SpreadsheetDate.java

   1 /* ========================================================================

   2  * JCommon : библиотека классов общего назначения для платформы Java(tm)

   3  * ========================================================================

   4  *

   5  * (C) Copyright 2000–2005, by Object Refinery Limited and Contributors.

   6  *

   7  * Информация о проекте:  http://www.jfree.org/jcommon/index.html

   8  *

   9  * Библиотека распространяется бесплатно; вы можете свободно распространять

  10  * и/или изменять ее на условиях лицензии Lesser General Public License

  11  * в формулировке Free Software Foundation; либо версии 2.1 лицензии, либо

  12  * (на ваше усмотрение) любой последующей версии.

  13  *

  14  * Библиотека распространяется в надежде, что она будет полезна, но

  15  * БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, даже без подразумеваемой гарантии ПРИГОДНОСТИ

  16  * для КОНКРЕТНОЙ ЦЕЛИ. За подробностями обращайтесь к GNU Lesser General

  17  * Public License.

  18  *

  19  * Вы должны получить копию лицензии GNU Lesser General Public License

  20  * с этой библиотекой; если этого не произошло, обратитесь в Free Software

  21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,

  22  * USA.

  23  *

  24  * [Java является зарегистрированной торговой маркой Sun Microsystems, Inc.

  25  * в Соединенных Штатах и других странах].

  26  *

  27  * --------------------

  28  * SpreadsheetDate.java

  29  * --------------------

  30  * (C) Copyright 2000–2005, by Object Refinery Limited and Contributors.

  31  *

  32  * Автор:  Дэвид Гилберт (для Object Refinery Limited);

  33  * Участники:   -;

  34  *

  35  * $Id: SpreadsheetDate.java,v 1.8 2005/11/03 09:25:39 mungady Exp $

  36  *

  37  * Изменения

  38  * -------

  39  * 11.10.2001 : Версия 1 (DG);

  40  * 05.11.2001 : Добавлены методы getDescription() и setDescription() (DG);

  41  * 12.11.2001 : Переименование ExcelDate.java в SpreadsheetDate.java (DG);

  42  *               Исправлена ошибка в вычислении дня, месяца и года

  43  *               по порядковому номеру (DG);

  44  * 24.01.2002 : Исправлена ошибка в вычислении порядкового номера по дню,

  45  *               месяцу и году. Спасибо Тревору Хиллзу за сообщение(DG);

  46  * 29.05.2002 : Добавлен метод equals(Object) (SourceForge ID 558850) (DG);

  47  * 03.10.2002 : Исправлены ошибки по информации Checkstyle (DG);

  48  * 13.03.2003 : Реализован интерфейс Serializable (DG);

  49  * 04.09.2003 : Завершены методы isInRange() (DG);

  50  * 05.09.2003 : Реализован интерфейс Comparable (DG);

  51  * 21.10.2003 : Добавлен метод hashCode() (DG);

  52  *

  53  */

  54

  55 package org.jfree.date;

  56

  57 import java.util.Calendar;

  58 import java.util.Date;