1 # 2 # %i% 3 # 4 5 # The test cases in this file assume the first day of week is Sunday 6 # and the minimal days in the first week is 1. 7 8 locale ja JP JP 9 new instance jcal 10 11 timezone Asia/Tokyo 12 new instance tokyocal 13 14 set non-lenient 15 16 test add ERA 17 use jcal 18 clear all 19 set date NewEra 17 Mar 8 20 add era 10 21 # as of NewEra 17 March 8 22 check era NewEra 23 add era -100 24 check era BeforeMeiji 25 26 test add HOUR_OF_DAY 27 use jcal 28 clear all 29 set era Heisei 30 set datetime 1 Jan 8 23 59 59 31 add hour_of_day 1 32 check datetime 1 Jan 9 0 59 59 33 check ampm AM 34 check hour 0 35 add hour_of_day -1 36 check datetime 1 Jan 8 23 59 59 37 add hour_of_day 24 38 check datetime 1 Jan 9 23 59 59 39 add hour_of_day -24 40 check datetime 1 Jan 8 23 59 59 41 42 test add HOUR 43 use jcal 44 clear all 45 set era Showa 46 set datetime 64 Jan 7 11 59 59 47 check era Showa 48 check hour 11 49 check ampm AM 50 add hour 1 51 check hour 0 52 check ampm PM 53 check datetime 64 Jan 7 12 59 59 54 add hour -1 55 check datetime 64 Jan 7 11 59 59 56 add hour 240 57 check era Heisei 58 check datetime 1 Jan 17 11 59 59 59 add hour -240 60 check era Showa 61 check datetime 64 Jan 7 11 59 59 62 63 clear all 64 set era Showa 65 set datetime 64 Jan 7 23 59 59 66 check era Showa 67 check hour 11 68 check ampm PM 69 add hour 1 70 check hour 0 71 check ampm AM 72 check era Heisei 73 check datetime 1 Jan 8 0 59 59 74 add hour -1 75 check datetime 64 Jan 7 23 59 59 76 add hour 240 77 check era Heisei 78 check datetime 1 Jan 17 23 59 59 79 add hour -240 80 check era Showa 81 check datetime 64 Jan 7 23 59 59 82 83 clear all 84 set era Heisei 85 set datetime 1 Jan 8 23 59 59 86 check date Heisei 1 Jan 8 87 check hour 11 88 check ampm PM 89 add hour 1 90 check hour 0 91 check ampm AM 92 check era Heisei 93 check datetime 1 Jan 9 0 59 59 94 add hour -1 95 check datetime 1 Jan 8 23 59 59 96 add hour 240 97 check datetime 1 Jan 18 23 59 59 98 add hour -240 99 check datetime 1 Jan 8 23 59 59 100 101 test add YEAR 102 use jcal 103 clear all 104 # check if pinDayOfMonth works correctly. 105 # Heisei 12 (Y2K) is a leap year. 106 set date Heisei 12 Feb 29 107 add year 5 108 check date Heisei 17 Feb 28 109 add year -5 110 check date Heisei 12 Feb 28 # not 29! 111 112 clear all 113 set date BeforeMeiji 1867 Jan 1 114 add year 1 115 check date Meiji 1 Jan 1 116 add year -1 117 check date BeforeMeiji 1867 Jan 1 118 119 clear all 120 set date Meiji 45 Jul 29 121 add year 1 122 check date Taisho 2 Jul 29 123 add year -1 124 check date Meiji 45 Jul 29 125 126 clear all 127 set date Meiji 44 Jul 30 128 add year 1 129 check date Taisho 1 Jul 30 130 add year -1 131 check date Meiji 44 Jul 30 132 133 clear all 134 set date Taisho 15 Aug 1 135 add year 1 136 check date Showa 2 Aug 1 137 add year -1 138 check date Taisho 15 Aug 1 139 140 clear all 141 set date Taisho 14 Dec 31 142 add year 1 143 check date Showa 1 Dec 31 144 add year -1 145 check date Taisho 14 Dec 31 146 147 clear all 148 set date Showa 63 Feb 1 149 add year 1 150 check date Heisei 1 Feb 1 151 add year -1 152 check date Showa 63 Feb 1 153 154 set date Showa 63 Dec 30 155 add year 1 156 check date Heisei 1 Dec 30 157 add year -1 158 check date Showa 63 Dec 30 159 160 set date Showa 64 Jan 7 161 add year 1 162 check date Heisei 2 Jan 7 163 add year -1 164 check date Showa 64 Jan 7 165 166 set date Heisei 2 Jan 7 167 add year -1 168 check date Showa 64 Jan 7 169 add year 1 170 check date Heisei 2 Jan 7 171 172 test add MONTH 173 clear all 174 # Check pinDayOfMonth works correctly. 175 # Heisei 12 is a leap year. 176 set date Heisei 12 Jan 31 177 add month 1 178 check date Heisei 12 Feb 29 179 add month -1 180 check date Heisei 12 Jan 29 181 182 # Another leap year 183 set date Showa 63 Jan 31 184 add month 1 185 check date Showa 63 Feb 29 186 add month -1 187 check date Showa 63 Jan 29 188 189 # Non leap year 190 set date Heisei 15 Jan 31 191 add month 1 192 check date Heisei 15 Feb 28 193 add month -1 194 check date Heisei 15 Jan 28 195 196 set date Heisei 15 Mar 31 197 add month 1 198 check date Heisei 15 Apr 30 199 add month -1 200 check date Heisei 15 Mar 30 201 202 set date Heisei 15 May 31 203 add month 1 204 check date Heisei 15 Jun 30 205 add month -1 206 check date Heisei 15 May 30 207 208 set date Heisei 15 Aug 31 209 add month 1 210 check date Heisei 15 Sep 30 211 add month -1 212 check date Heisei 15 Aug 30 213 214 set date Heisei 15 Oct 31 215 add month 1 216 check date Heisei 15 Nov 30 217 add month -1 218 check date Heisei 15 Oct 30 219 220 set date Heisei 15 Dec 31 221 add month -1 222 check date Heisei 15 Nov 30 223 add month 1 224 check date Heisei 15 Dec 30 225 226 set date Heisei 15 Dec 31 227 add month 2 228 check date Heisei 16 Feb 29 229 add month -1 230 check date Heisei 16 Jan 29 231 232 # end of pinDayOfMonth tests 233 234 set date BeforeMeiji 1867 Dec 1 235 add month 1 236 check date Meiji 1 Jan 1 237 add month -1 238 check date BeforeMeiji 1867 Dec 1 239 add month 14 240 check date Meiji 2 Feb 1 241 add month -14 242 check date BeforeMeiji 1867 Dec 1 243 244 set date Meiji 1 Dec 1 245 add month 1 246 check date Meiji 2 Jan 1 247 add month -1 248 check date Meiji 1 Dec 1 249 add month 13 250 check date Meiji 3 Jan 1 251 add month -13 252 check date Meiji 1 Dec 1 253 254 set date Meiji 45 Jun 30 255 add month 1 256 check date Taisho 1 Jul 30 257 add month -1 258 check date Meiji 45 Jun 30 259 260 set date Meiji 45 Jun 30 261 add month 14 262 check date Taisho 2 Aug 30 263 add month -14 264 check date Meiji 45 Jun 30 265 266 # Taisho Gan-nen (year 1) has only 6 months. 267 set date Taisho 1 Jul 30 268 add month -1 269 check date Meiji 45 Jun 30 270 add month 1 271 check date Taisho 1 Jul 30 272 add month -18 273 check date Meiji 44 Jan 30 274 add month 18 275 check date Taisho 1 Jul 30 276 277 set date Taisho 15 Jan 20 278 add month 11 279 check date Taisho 15 Dec 20 280 281 set date Taisho 15 Jan 25 282 add month 11 283 check date Showa 1 Dec 25 284 285 set date Showa 1 Dec 25 286 add month 1 287 check date Showa 2 Jan 25 288 add month -1 289 check date Showa 1 Dec 25 290 add month 17 291 check date Showa 3 May 25 292 add month -17 293 check date Showa 1 Dec 25 294 295 set date Showa 64 Jan 7 296 add month 1 297 check date Heisei 1 Feb 7 298 299 set date Heisei 1 Feb 1 300 add month -1 301 # Heisei starts from Jan 8. 302 check date Showa 64 Jan 1 303 add month 1 304 check date Heisei 1 Feb 1 305 306 set date Heisei 1 Feb 8 307 add month -1 308 check date Heisei 1 Jan 8 309 310 set date Heisei 1 Dec 1 311 add month 1 312 check date Heisei 2 Jan 1 313 add month -1 314 check date Heisei 1 Dec 1 315 316 set date Heisei 1 Dec 8 317 add month 1 318 check date Heisei 2 Jan 8 319 add month -1 320 check date Heisei 1 Dec 8 321 322 # time zone dependent tests 323 use tokyocal 324 clear all 325 326 set date BeforeMeiji 1 Jan 1 327 get min year 328 assign $result $minyear 329 # actual min date: -292275055.05.17T01:47:04.192+0900 330 331 set date BeforeMeiji $minyear Dec 17 332 set timeofday 1 47 4 192 333 add month -7 334 check date BeforeMeiji $minyear May 17 335 check timeofday 1 47 4 192 336 add month 7 337 check date BeforeMeiji $minyear Dec 17 338 check timeofday 1 47 4 192 339 set date BeforeMeiji $minyear Dec 17 340 set timeofday 1 47 4 191 341 add month -7 342 check date BeforeMeiji $minyear May 18 343 check timeofday 1 47 4 191 344 345 set date NewEra 17 Jan 1 346 get max year 347 assign $result $max 348 set date NewEra $max Jul 17 349 add month 1 350 check date NewEra $max Aug 17 351 # set date Heisei $max Jul 28 352 # set timeofday 23 59 59 999 353 # add month 1 354 # check date Heisei $max Aug 16 355 # check timeofday 23 59 59 999 356 357 test add WEEK_OF_YEAR 358 use jcal 359 clear all 360 # 1867 Dec 23 is Monday. 361 set date BeforeMeiji 1867 Dec 23 362 add week_of_year 2 363 check day_of_week Mon 364 check date Meiji 1 Jan 6 365 add week_of_year -2 366 check day_of_week Mon 367 check date BeforeMeiji 1867 Dec 23 368 369 # 1867 Dec 23 is Wednesday. 370 set date Meiji 1 Dec 23 371 add week_of_year 2 372 check day_of_week Wed 373 check date Meiji 2 Jan 6 374 add week_of_year -2 375 check day_of_week Wed 376 check date Meiji 1 Dec 23 377 378 # Meiji 45 July 23 is Tuesday. 379 set date Meiji 45 Jul 23 380 add week_of_year 1 381 check day_of_week Tue 382 check date Taisho 1 Jul 30 383 add week_of_year -1 384 check day_of_week Tue 385 check date Meiji 45 Jul 23 386 387 # Taisho 15 December 23 is Thursday. 388 set date Taisho 15 Dec 23 389 add week_of_year 1 390 check day_of_week Thu 391 check date Showa 1 Dec 30 392 add week_of_year -1 393 check day_of_week Thu 394 check date Taisho 15 Dec 23 395 396 # Showa Gan-nen December 30 is Thursday. Showa Gan-nen has 397 # only one week. Rolling any number of weeks brings to the 398 # same date. 399 set date Showa 1 Dec 30 400 add week_of_year 1 401 check day_of_week Thu 402 check date Showa 2 Jan 6 403 add week_of_year -1 404 check day_of_week Thu 405 check date Showa 1 Dec 30 406 407 # Showa 64 January 7 is Saturday. The year has only one week. 408 set date Showa 64 Jan 7 409 add week_of_year 1 410 check day_of_week Sat 411 check date Heisei 1 Jan 14 412 add week_of_year -1 413 check day_of_week Sat 414 check date Showa 64 Jan 7 415 416 use tokyocal 417 clear all 418 419 set date BeforeMeiji $minyear Dec 25 420 check day_of_week Sat 421 eval $minyear + 1 422 assign $result $minyear_plus_1 423 add week_of_year 1 424 check day_of_week Sat 425 check date BeforeMeiji $minyear_plus_1 Jan 1 426 add week_of_year -1 427 check day_of_week Sat 428 check date BeforeMeiji $minyear Dec 25 429 430 test WEEK_OF_MONTH 431 use jcal 432 clear all 433 434 test DAY_OF_MONTH 435 use jcal 436 clear all 437 438 test DAY_OF_YEAR 439 use jcal 440 clear all 441 442 # 1867 is a regular Gregorian year. 443 set date BeforeMeiji 1867 Dec 31 444 add day_of_year 1 445 check date Meiji 1 Jan 1 446 add day_of_year -1 447 check date BeforeMeiji 1867 Dec 31 448 add day_of_year 26 449 check date Meiji 1 Jan 26 450 add day_of_year -26 451 check date BeforeMeiji 1867 Dec 31 452 453 # Meiji 1 starts from Jan 1. It's a regular year as well. 454 set date Meiji 1 Dec 31 455 add day_of_year 1 456 check date Meiji 2 Jan 1 457 add day_of_year -1 458 check date Meiji 1 Dec 31 459 add day_of_year 26 460 check date Meiji 2 Jan 26 461 add day_of_year -26 462 check date Meiji 1 Dec 31 463 464 # The last year of Meiji (45) has an irregularity. Meiji 45 465 # July 30 is actually Taisho 1 July 30. 466 set date Meiji 45 Jul 29 467 add day_of_year 1 468 check date Taisho 1 Jul 30 469 add day_of_year -1 470 check date Meiji 45 Jul 29 471 472 # The first day of Taisho, July 30. 473 set date Taisho 1 Jul 30 474 add day_of_year -1 475 check date Meiji 45 Jul 29 476 add day_of_year 1 477 check date Taisho 1 Jul 30 478 479 set date Taisho 15 Dec 24 480 add day_of_year 1 481 check date Showa 1 Dec 25 482 add day_of_year -1 483 check date Taisho 15 Dec 24 484 485 set date Showa 1 Dec 31 486 add day_of_year 1 487 check date Showa 2 Jan 1 488 add day_of_year -1 489 check date Showa 1 Dec 31 490 add day_of_year 25 491 check date Showa 2 Jan 25 492 add day_of_year -25 493 check date Showa 1 Dec 31 494 495 set date Showa 64 Jan 7 496 add day_of_year 1 497 check date Heisei 1 Jan 8 498 add day_of_year -1 499 check date Showa 64 Jan 7 500 501 set date Heisei 1 Dec 31 502 add day_of_year 5 503 check date Heisei 2 Jan 5 504 add day_of_year -5 505 check date Heisei 1 Dec 31 506 507 use tokyocal 508 clear all 509 510 set date BeforeMeiji $minyear Dec 31 511 set timeofday 1 47 4 192 512 add day_of_year 1 513 check date BeforeMeiji $minyear_plus_1 Jan 1 514 check timeofday 1 47 4 192 515 add day_of_year -1 516 check date BeforeMeiji $minyear Dec 31 517 check timeofday 1 47 4 192 518 519 test DAY_OF_WEEK_IN_MONTH 520 use jcal 521 clear all