exhaustive.js (12885B)
1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally 2 // Copyright (C) 2023 Igalia, S.L. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 esid: sec-temporal.duration.compare 7 description: Tests for compare() with each possible outcome 8 features: [Temporal] 9 ---*/ 10 11 const plainDate = new Temporal.PlainDate(2000, 1, 1); 12 13 assert.sameValue( 14 Temporal.Duration.compare( 15 new Temporal.Duration(6), 16 new Temporal.Duration(5), 17 { relativeTo: plainDate } 18 ), 19 1, 20 "years >, relativeTo PlainDate" 21 ); 22 assert.sameValue( 23 Temporal.Duration.compare( 24 new Temporal.Duration(3), 25 new Temporal.Duration(4), 26 { relativeTo: plainDate } 27 ), 28 -1, 29 "years <, relativeTo PlainDate" 30 ); 31 assert.sameValue( 32 Temporal.Duration.compare( 33 new Temporal.Duration(2, 6), 34 new Temporal.Duration(2, 5), 35 { relativeTo: plainDate } 36 ), 37 1, 38 "months >, relativeTo PlainDate" 39 ); 40 assert.sameValue( 41 Temporal.Duration.compare( 42 new Temporal.Duration(4, 3), 43 new Temporal.Duration(4, 4), 44 { relativeTo: plainDate } 45 ), 46 -1, 47 "months <, relativeTo PlainDate" 48 ); 49 assert.sameValue( 50 Temporal.Duration.compare( 51 new Temporal.Duration(2, 1, 6), 52 new Temporal.Duration(2, 1, 5), 53 { relativeTo: plainDate } 54 ), 55 1, 56 "weeks >, relativeTo PlainDate" 57 ); 58 assert.sameValue( 59 Temporal.Duration.compare( 60 new Temporal.Duration(4, 7, 3), 61 new Temporal.Duration(4, 7, 4), 62 { relativeTo: plainDate } 63 ), 64 -1, 65 "weeks <, relativeTo PlainDate" 66 ); 67 assert.sameValue( 68 Temporal.Duration.compare( 69 new Temporal.Duration(2, 1, 3, 6), 70 new Temporal.Duration(2, 1, 3, 5), 71 { relativeTo: plainDate } 72 ), 73 1, 74 "days >, relativeTo PlainDate" 75 ); 76 assert.sameValue( 77 Temporal.Duration.compare( 78 new Temporal.Duration(4, 7, 2, 3), 79 new Temporal.Duration(4, 7, 2, 4), 80 { relativeTo: plainDate } 81 ), 82 -1, 83 "days <, relativeTo PlainDate" 84 ); 85 assert.sameValue( 86 Temporal.Duration.compare( 87 new Temporal.Duration(2, 1, 3, 12, 6), 88 new Temporal.Duration(2, 1, 3, 12, 5), 89 { relativeTo: plainDate } 90 ), 91 1, 92 "hours >, relativeTo PlainDate" 93 ); 94 assert.sameValue( 95 Temporal.Duration.compare( 96 new Temporal.Duration(4, 7, 2, 40, 3), 97 new Temporal.Duration(4, 7, 2, 40, 4), 98 { relativeTo: plainDate } 99 ), 100 -1, 101 "hours <, relativeTo PlainDate" 102 ); 103 assert.sameValue( 104 Temporal.Duration.compare( 105 new Temporal.Duration(2, 1, 3, 12, 6, 6), 106 new Temporal.Duration(2, 1, 3, 12, 6, 5), 107 { relativeTo: plainDate } 108 ), 109 1, 110 "minutes >, relativeTo PlainDate" 111 ); 112 assert.sameValue( 113 Temporal.Duration.compare( 114 new Temporal.Duration(4, 7, 2, 40, 12, 3), 115 new Temporal.Duration(4, 7, 2, 40, 12, 4), 116 { relativeTo: plainDate } 117 ), 118 -1, 119 "minutes <, relativeTo PlainDate" 120 ); 121 assert.sameValue( 122 Temporal.Duration.compare( 123 new Temporal.Duration(2, 1, 3, 12, 6, 30, 6), 124 new Temporal.Duration(2, 1, 3, 12, 6, 30, 5), 125 { relativeTo: plainDate } 126 ), 127 1, 128 "seconds >, relativeTo PlainDate" 129 ); 130 assert.sameValue( 131 Temporal.Duration.compare( 132 new Temporal.Duration(4, 7, 2, 40, 12, 15, 3), 133 new Temporal.Duration(4, 7, 2, 40, 12, 15, 4), 134 { relativeTo: plainDate } 135 ), 136 -1, 137 "seconds <, relativeTo PlainDate" 138 ); 139 assert.sameValue( 140 Temporal.Duration.compare( 141 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 6), 142 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 5), 143 { relativeTo: plainDate } 144 ), 145 1, 146 "milliseconds >, relativeTo PlainDate" 147 ); 148 assert.sameValue( 149 Temporal.Duration.compare( 150 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 3), 151 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 4), 152 { relativeTo: plainDate } 153 ), 154 -1, 155 "milliseconds <, relativeTo PlainDate" 156 ); 157 assert.sameValue( 158 Temporal.Duration.compare( 159 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 6), 160 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 5), 161 { relativeTo: plainDate } 162 ), 163 1, 164 "microseconds >, relativeTo PlainDate" 165 ); 166 assert.sameValue( 167 Temporal.Duration.compare( 168 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 3), 169 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 4), 170 { relativeTo: plainDate } 171 ), 172 -1, 173 "microseconds <, relativeTo PlainDate" 174 ); 175 assert.sameValue( 176 Temporal.Duration.compare( 177 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 6), 178 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 5), 179 { relativeTo: plainDate } 180 ), 181 1, 182 "nanoseconds >, relativeTo PlainDate" 183 ); 184 assert.sameValue( 185 Temporal.Duration.compare( 186 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 3), 187 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 4), 188 { relativeTo: plainDate } 189 ), 190 -1, 191 "nanoseconds <, relativeTo PlainDate" 192 ); 193 assert.sameValue( 194 Temporal.Duration.compare( 195 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), 196 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), 197 { relativeTo: plainDate } 198 ), 199 0, 200 "equal, relativeTo PlainDate" 201 ); 202 203 const zonedDateTime = new Temporal.ZonedDateTime(0n, "UTC"); 204 205 assert.sameValue( 206 Temporal.Duration.compare( 207 new Temporal.Duration(6), 208 new Temporal.Duration(5), 209 { relativeTo: zonedDateTime } 210 ), 211 1, 212 "years >, relativeTo ZonedDateTime" 213 ); 214 assert.sameValue( 215 Temporal.Duration.compare( 216 new Temporal.Duration(3), 217 new Temporal.Duration(4), 218 { relativeTo: zonedDateTime } 219 ), 220 -1, 221 "years <, relativeTo ZonedDateTime" 222 ); 223 assert.sameValue( 224 Temporal.Duration.compare( 225 new Temporal.Duration(2, 6), 226 new Temporal.Duration(2, 5), 227 { relativeTo: zonedDateTime } 228 ), 229 1, 230 "months >, relativeTo ZonedDateTime" 231 ); 232 assert.sameValue( 233 Temporal.Duration.compare( 234 new Temporal.Duration(4, 3), 235 new Temporal.Duration(4, 4), 236 { relativeTo: zonedDateTime } 237 ), 238 -1, 239 "months <, relativeTo ZonedDateTime" 240 ); 241 assert.sameValue( 242 Temporal.Duration.compare( 243 new Temporal.Duration(2, 1, 6), 244 new Temporal.Duration(2, 1, 5), 245 { relativeTo: zonedDateTime } 246 ), 247 1, 248 "weeks >, relativeTo ZonedDateTime" 249 ); 250 assert.sameValue( 251 Temporal.Duration.compare( 252 new Temporal.Duration(4, 7, 3), 253 new Temporal.Duration(4, 7, 4), 254 { relativeTo: zonedDateTime } 255 ), 256 -1, 257 "weeks <, relativeTo ZonedDateTime" 258 ); 259 assert.sameValue( 260 Temporal.Duration.compare( 261 new Temporal.Duration(2, 1, 3, 6), 262 new Temporal.Duration(2, 1, 3, 5), 263 { relativeTo: zonedDateTime } 264 ), 265 1, 266 "days >, relativeTo ZonedDateTime" 267 ); 268 assert.sameValue( 269 Temporal.Duration.compare( 270 new Temporal.Duration(4, 7, 2, 3), 271 new Temporal.Duration(4, 7, 2, 4), 272 { relativeTo: zonedDateTime } 273 ), 274 -1, 275 "days <, relativeTo ZonedDateTime" 276 ); 277 assert.sameValue( 278 Temporal.Duration.compare( 279 new Temporal.Duration(2, 1, 3, 12, 6), 280 new Temporal.Duration(2, 1, 3, 12, 5), 281 { relativeTo: zonedDateTime } 282 ), 283 1, 284 "hours >, relativeTo ZonedDateTime" 285 ); 286 assert.sameValue( 287 Temporal.Duration.compare( 288 new Temporal.Duration(4, 7, 2, 40, 3), 289 new Temporal.Duration(4, 7, 2, 40, 4), 290 { relativeTo: zonedDateTime } 291 ), 292 -1, 293 "hours <, relativeTo ZonedDateTime" 294 ); 295 assert.sameValue( 296 Temporal.Duration.compare( 297 new Temporal.Duration(2, 1, 3, 12, 6, 6), 298 new Temporal.Duration(2, 1, 3, 12, 6, 5), 299 { relativeTo: zonedDateTime } 300 ), 301 1, 302 "minutes >, relativeTo ZonedDateTime" 303 ); 304 assert.sameValue( 305 Temporal.Duration.compare( 306 new Temporal.Duration(4, 7, 2, 40, 12, 3), 307 new Temporal.Duration(4, 7, 2, 40, 12, 4), 308 { relativeTo: zonedDateTime } 309 ), 310 -1, 311 "minutes <, relativeTo ZonedDateTime" 312 ); 313 assert.sameValue( 314 Temporal.Duration.compare( 315 new Temporal.Duration(2, 1, 3, 12, 6, 30, 6), 316 new Temporal.Duration(2, 1, 3, 12, 6, 30, 5), 317 { relativeTo: zonedDateTime } 318 ), 319 1, 320 "seconds >, relativeTo ZonedDateTime" 321 ); 322 assert.sameValue( 323 Temporal.Duration.compare( 324 new Temporal.Duration(4, 7, 2, 40, 12, 15, 3), 325 new Temporal.Duration(4, 7, 2, 40, 12, 15, 4), 326 { relativeTo: zonedDateTime } 327 ), 328 -1, 329 "seconds <, relativeTo ZonedDateTime" 330 ); 331 assert.sameValue( 332 Temporal.Duration.compare( 333 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 6), 334 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 5), 335 { relativeTo: zonedDateTime } 336 ), 337 1, 338 "milliseconds >, relativeTo ZonedDateTime" 339 ); 340 assert.sameValue( 341 Temporal.Duration.compare( 342 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 3), 343 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 4), 344 { relativeTo: zonedDateTime } 345 ), 346 -1, 347 "milliseconds <, relativeTo ZonedDateTime" 348 ); 349 assert.sameValue( 350 Temporal.Duration.compare( 351 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 6), 352 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 5), 353 { relativeTo: zonedDateTime } 354 ), 355 1, 356 "microseconds >, relativeTo ZonedDateTime" 357 ); 358 assert.sameValue( 359 Temporal.Duration.compare( 360 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 3), 361 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 4), 362 { relativeTo: zonedDateTime } 363 ), 364 -1, 365 "microseconds <, relativeTo ZonedDateTime" 366 ); 367 assert.sameValue( 368 Temporal.Duration.compare( 369 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 6), 370 new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 5), 371 { relativeTo: zonedDateTime } 372 ), 373 1, 374 "nanoseconds >, relativeTo ZonedDateTime" 375 ); 376 assert.sameValue( 377 Temporal.Duration.compare( 378 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 3), 379 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 4), 380 { relativeTo: zonedDateTime } 381 ), 382 -1, 383 "nanoseconds <, relativeTo ZonedDateTime" 384 ); 385 assert.sameValue( 386 Temporal.Duration.compare( 387 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), 388 new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), 389 { relativeTo: zonedDateTime } 390 ), 391 0, 392 "equal, relativeTo ZonedDateTime" 393 ); 394 395 assert.sameValue( 396 Temporal.Duration.compare( 397 new Temporal.Duration(0, 0, 0, 6), 398 new Temporal.Duration(0, 0, 0, 5) 399 ), 400 1, 401 "days >, relativeTo nothing" 402 ); 403 assert.sameValue( 404 Temporal.Duration.compare( 405 new Temporal.Duration(0, 0, 0, 3), 406 new Temporal.Duration(0, 0, 0, 4) 407 ), 408 -1, 409 "days <, relativeTo nothing" 410 ); 411 assert.sameValue( 412 Temporal.Duration.compare( 413 new Temporal.Duration(0, 0, 0, 12, 6), 414 new Temporal.Duration(0, 0, 0, 12, 5) 415 ), 416 1, 417 "hours >, relativeTo nothing" 418 ); 419 assert.sameValue( 420 Temporal.Duration.compare( 421 new Temporal.Duration(0, 0, 0, 40, 3), 422 new Temporal.Duration(0, 0, 0, 40, 4) 423 ), 424 -1, 425 "hours <, relativeTo nothing" 426 ); 427 assert.sameValue( 428 Temporal.Duration.compare( 429 new Temporal.Duration(0, 0, 0, 12, 6, 6), 430 new Temporal.Duration(0, 0, 0, 12, 6, 5) 431 ), 432 1, 433 "minutes >, relativeTo nothing" 434 ); 435 assert.sameValue( 436 Temporal.Duration.compare( 437 new Temporal.Duration(0, 0, 0, 40, 12, 3), 438 new Temporal.Duration(0, 0, 0, 40, 12, 4) 439 ), 440 -1, 441 "minutes <, relativeTo nothing" 442 ); 443 assert.sameValue( 444 Temporal.Duration.compare( 445 new Temporal.Duration(0, 0, 0, 12, 6, 30, 6), 446 new Temporal.Duration(0, 0, 0, 12, 6, 30, 5) 447 ), 448 1, 449 "seconds >, relativeTo nothing" 450 ); 451 assert.sameValue( 452 Temporal.Duration.compare( 453 new Temporal.Duration(0, 0, 0, 40, 12, 15, 3), 454 new Temporal.Duration(0, 0, 0, 40, 12, 15, 4) 455 ), 456 -1, 457 "seconds <, relativeTo nothing" 458 ); 459 assert.sameValue( 460 Temporal.Duration.compare( 461 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 6), 462 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 5) 463 ), 464 1, 465 "milliseconds >, relativeTo nothing" 466 ); 467 assert.sameValue( 468 Temporal.Duration.compare( 469 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 3), 470 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 4) 471 ), 472 -1, 473 "milliseconds <, relativeTo nothing" 474 ); 475 assert.sameValue( 476 Temporal.Duration.compare( 477 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 6), 478 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 5) 479 ), 480 1, 481 "microseconds >, relativeTo nothing" 482 ); 483 assert.sameValue( 484 Temporal.Duration.compare( 485 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 3), 486 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 4) 487 ), 488 -1, 489 "microseconds <, relativeTo nothing" 490 ); 491 assert.sameValue( 492 Temporal.Duration.compare( 493 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 444, 6), 494 new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 444, 5) 495 ), 496 1, 497 "nanoseconds >, relativeTo nothing" 498 ); 499 assert.sameValue( 500 Temporal.Duration.compare( 501 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 3), 502 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 4) 503 ), 504 -1, 505 "nanoseconds <, relativeTo nothing" 506 ); 507 assert.sameValue( 508 Temporal.Duration.compare( 509 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 111), 510 new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 111) 511 ), 512 0, 513 "equal, relativeTo nothing" 514 ); 515 516 reportCompare(0, 0);