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

261      */

262     public void testLeapYearCount2000() {

263         assertEquals(SerialDate.leapYearCount(2000), 25);

264     }

265

266     /**

267      * Сериализовать экземпляр, восстановить и проверить на равенство.

268      */

269     public void testSerialization() {

270

271         SerialDate d1 = SerialDate.createInstance(15, 4, 2000);

272         SerialDate d2 = null;

273

274         try {

275             ByteArrayOutputStream buffer = new ByteArrayOutputStream();

276             ObjectOutput out = new ObjectOutputStream(buffer);

277             out.writeObject(d1);

278             out.close();

279

280             ObjectInput in = new ObjectInputStream(

     new ByteArrayInputStream(buffer.toByteArray()));

281             d2 = (SerialDate) in.readObject();

282             in.close();

283         }

284         catch (Exception e) {

285             System.out.println(e.toString());

286         }

287         assertEquals(d1, d2);

288

289     }

290

291     /**

292      * Тест для ошибки по отчету 1096282 (исправлено).

293      */

294     public void test1096282() {

295         SerialDate d = SerialDate.createInstance(29, 2, 2004);

296         d = SerialDate.addYears(1, d);

297         SerialDate expected = SerialDate.createInstance(28, 2, 2005);

298         assertTrue(d.isOn(expected));

299     }

300

301     /**

302      * Различные тесты для метода addMonths().

303      */

304     public void testAddMonths() {

305         SerialDate d1 = SerialDate.createInstance(31, 5, 2004);

306

307         SerialDate d2 = SerialDate.addMonths(1, d1);

308         assertEquals(30, d2.getDayOfMonth());

309         assertEquals(6, d2.getMonth());

310         assertEquals(2004, d2.getYYYY());

311

312         SerialDate d3 = SerialDate.addMonths(2, d1);

313         assertEquals(31, d3.getDayOfMonth());

314         assertEquals(7, d3.getMonth());

315         assertEquals(2004, d3.getYYYY());

316

317         SerialDate d4 = SerialDate.addMonths(1, SerialDate.addMonths(1, d1));

318         assertEquals(30, d4.getDayOfMonth());

319         assertEquals(7, d4.getMonth());

320         assertEquals(2004, d4.getYYYY());

321     }

322 }


Листинг Б.3. MonthConstants.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  * MonthConstants.java


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

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

  30  * (C) Copyright 2002, 2003, by Object Refinery Limited.

  31  *

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

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

  34  *

  35  * $Id: MonthConstants.java,v 1.4 2005/11/16 15:58:40 taqua Exp $

  36  *

  37  * Изменения

  38  * -------

  39  * 29.05.2002 : Версия 1 (код перемещен из класса SerialDate) (DG);

  40  *

  41  */

  42

  43 package org.jfree.date;

  44

  45 /**

  46  * Константы месяцев. Обратите внимание: константы НЕ ЭКИВАЛЕНТНЫ определяемым

  47  * в java.util.Calendar (где JANUARY=0, а DECEMBER=11).

  48  * 

  49  * Используются классами SerialDate и RegularTimePeriod.

  50  *

  51  * @author Дэвид Гилберт

  52  */

  53 public interface MonthConstants {

  54

  55     /** Константа для января. */

  56     public static final int JANUARY = 1;

  57

  58     /** Константа для февраля. */

  59     public static final int FEBRUARY = 2;

  60

  61     /** Константа для мая. */

  62     public static final int MARCH = 3;

  63

  64     /** Константа для апреля. */