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

129         );

130         assertEquals(5, mondayBefore.getDayOfMonth());

131     }

132

133     /**

134      * Понедельник, следующий за 9 ноября 2001, - должно быть 12 ноября.

135      */

136     public void testMondayFollowingFriday9Nov2001() {

137         SerialDate mondayAfter = SerialDate.getFollowingDayOfWeek(

138             SerialDate.MONDAY, this.nov9Y2001

139         );

140         assertEquals(12, mondayAfter.getDayOfMonth());

141     }

142

143     /**

144      * Понедельник, ближайший к 9 ноября 2001, - должно быть 12 ноября.

145      */

146     public void testMondayNearestFriday9Nov2001() {

147         SerialDate mondayNearest = SerialDate.getNearestDayOfWeek(

148             SerialDate.MONDAY, this.nov9Y2001

149         );

150         assertEquals(12, mondayNearest.getDayOfMonth());


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

151     }

152

153     /**

154      * Понедельник, ближайший к 22 января 1970, - должно быть 19-е января.

155      */

156     public void testMondayNearest22Jan1970() {

157         SerialDate jan22Y1970 = SerialDate.createInstance(22, MonthConstants.JANUARY,

             1970);

158         SerialDate mondayNearest=SerialDate.getNearestDayOfWeek(SerialDate.MONDAY,

             jan22Y1970);

159         assertEquals(19, mondayNearest.getDayOfMonth());

160     }

161

162     /**

163      * Проверяет преобразование дней в строки. На самом деле результат

164      * зависит от локального контекста, так что тест следует изменить.

165      */

166     public void testWeekdayCodeToString() {

167

168         final String test = SerialDate.weekdayCodeToString(SerialDate.SATURDAY);

169         assertEquals("Saturday", test);

170

171     }

172

173     /**

174      * Проверяет преобразование строки в день недели. Если в локальном контексте

175      * не используются английские названия дней недели, тест не пройдет (улучшить)!

176      */

177     public void testStringToWeekday() {

178

179         int weekday = SerialDate.stringToWeekdayCode("Wednesday");

180         assertEquals(SerialDate.WEDNESDAY, weekday);

181

182         weekday = SerialDate.stringToWeekdayCode(" Wednesday ");

183         assertEquals(SerialDate.WEDNESDAY, weekday);

184

185         weekday = SerialDate.stringToWeekdayCode("Wed");

186         assertEquals(SerialDate.WEDNESDAY, weekday);

187

188     }

189

190     /**

191      * Проверяет преобразование строки в месяц. Если в локальном контексте

192      * не используются английские названия месяцев, тест не пройдет (улучшить)!

193      */

194     public void testStringToMonthCode() {

195

196         int m = SerialDate.stringToMonthCode("January");

197         assertEquals(MonthConstants.JANUARY, m);

198

199         m = SerialDate.stringToMonthCode(" January ");

200         assertEquals(MonthConstants.JANUARY, m);

201

202         m = SerialDate.stringToMonthCode("Jan");

203         assertEquals(MonthConstants.JANUARY, m);

204

205     }

206

207     /**

208      * Проверяет преобразование кода месяца в строку.

209      */

210     public void testMonthCodeToStringCode() {

211

212         final String test = SerialDate.monthCodeToString(MonthConstants.DECEMBER);

213         assertEquals("December", test);

214

215     }

216

217     /**

218      * Год 1900 не является високосным.

219      */

220     public void testIsNotLeapYear1900() {

221         assertTrue(!SerialDate.isLeapYear(1900));

222     }

223

224     /**

225      * Год 2000 - високосный.

226      */

227     public void testIsLeapYear2000() {

228         assertTrue(SerialDate.isLeapYear(2000));

229     }

230

231     /**

232      * Количество високосных годов с 1900 до 1899 включительно равно 0.

233      */

234     public void testLeapYearCount1899() {

235         assertEquals(SerialDate.leapYearCount(1899), 0);

236     }

237

238     /**

239      * Количество високосных годов с 1900 до 1903 включительно равно 0.

240      */

241     public void testLeapYearCount1903() {

242         assertEquals(SerialDate.leapYearCount(1903), 0);

243     }

244

245     /**

246      * Количество високосных годов с 1900 до 1904 включительно равно 1.

247      */

248     public void testLeapYearCount1904() {

249         assertEquals(SerialDate.leapYearCount(1904), 1);

250     }

251

252     /**


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

253      * Количество високосных годов с 1900 до 1999 включительно равно 24.

254      */

255     public void testLeapYearCount1999() {

256         assertEquals(SerialDate.leapYearCount(1999), 24);

257     }

258

259     /**

260      * Количество високосных годов с 1900 до 2000 включительно равно 25.