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

   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  * SerialDateTests.java

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

  30  * (C) Copyright 2001–2005, by Object Refinery Limited.

  31  *

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

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

  34  *

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

  36  *

  37  * Изменения

  38  * --------------------------

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

  40  * 25.06.2002  : Удаление лишнего импорта (DG);

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

  42  * 13.03.2003  : Добавление теста сериализации (DG);

  43  * 05.01.2005  : Добавление теста для ошибки по отчету 1096282 (DG);

  44  *

  45  */

  46

  47 package org.jfree.date.junit;

  48

  49 import java.io.ByteArrayInputStream;

  50 import java.io.ByteArrayOutputStream;


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

  51 import java.io.ObjectInput;

  52 import java.io.ObjectInputStream;

  53 import java.io.ObjectOutput;

  54 import java.io.ObjectOutputStream;

  55

  56 import junit.framework.Test;

  57 import junit.framework.TestCase;

  58 import junit.framework.TestSuite;

  59

  60 import org.jfree.date.MonthConstants;

  61 import org.jfree.date.SerialDate;

  62

  63 /**

  64  * Тесты JUnit для класса {@link SerialDate}.

  65  */

  66 public class SerialDateTests extends TestCase {

  67

  68     /** Дата, представляющая 9 ноября. */

  69     private SerialDate nov9Y2001;

  70

  71     /**

  72      * Создает новый тестовый сценарий.

  73      *

  74      * @param name  the name.

  75      */

  76     public SerialDateTests(final String name) {

  77         super(name);

  78     }

  79

  80     /**

  81      * Возвращает пакет тестов для системы запуска тестов JUnit.

  82      *

  83      * @return тестовый пакет.

  84      */

  85     public static Test suite() {

  86         return new TestSuite(SerialDateTests.class);

  87     }

  88

  89     /**

  90      * Подготовка задачи.

  91      */

  92     protected void setUp() {

  93       this.nov9Y2001 = SerialDate.createInstance(9, MonthConstants.NOVEMBER, 2001);

  94     }

  95

  96     /**

  97      * 9 ноября 2001 + 2 месяца = должно быть 9 января 2002.

  98      */

  99     public void testAddMonthsTo9Nov2001() {

100         final SerialDate jan9Y2002 = SerialDate.addMonths(2, this.nov9Y2001);

101         final SerialDate answer = SerialDate.createInstance(9, 1, 2002);

102         assertEquals(answer, jan9Y2002);

103     }

104

105     /**

106      * Тестовый сценарий для известной ошибки (исправлено).

107      */

108     public void testAddMonthsTo5Oct2003() {

109         final SerialDate d1 = SerialDate.createInstance(5, MonthConstants.OCTOBER,

             2003);

110         final SerialDate d2 = SerialDate.addMonths(2, d1);

111         assertEquals(d2, SerialDate.createInstance(5, MonthConstants.DECEMBER,

             2003));

112     }

113

114     /**

115      * Тестовый сценарий для известной ошибки (исправлено).

116      */

117     public void testAddMonthsTo1Jan2003() {

118         final SerialDate d1 = SerialDate.createInstance(1, MonthConstants.JANUARY,

             2003);

119         final SerialDate d2 = SerialDate.addMonths(0, d1);

120         assertEquals(d2, d1);

121     }

122

123     /**

124      * Понедельник, предшествующий 9 ноября 2001, - должно быть 5 ноября.

125      */

126     public void testMondayPrecedingFriday9Nov2001() {

127         SerialDate mondayBefore = SerialDate.getPreviousDayOfWeek(

128             SerialDate.MONDAY, this.nov9Y2001