tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

format.js (4556B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Intl'))
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 // Tests the format function with a diverse set of locales and options.
      7 
      8 var rtf;
      9 
     10 {
     11  // Numeric format
     12  rtf = new Intl.RelativeTimeFormat("en-US");
     13  assertEq(rtf.format(0, "second"), "in 0 seconds");
     14  assertEq(rtf.format(-0, "second"), "0 seconds ago");
     15  assertEq(rtf.format(-1, "second"), "1 second ago");
     16  assertEq(rtf.format(1, "second"), "in 1 second");
     17 
     18  assertEq(rtf.format(0, "minute"), "in 0 minutes");
     19  assertEq(rtf.format(-0, "minute"), "0 minutes ago");
     20  assertEq(rtf.format(-1, "minute"), "1 minute ago");
     21  assertEq(rtf.format(1, "minute"), "in 1 minute");
     22 
     23  assertEq(rtf.format(0, "hour"), "in 0 hours");
     24  assertEq(rtf.format(-0, "hour"), "0 hours ago");
     25  assertEq(rtf.format(-1, "hour"), "1 hour ago");
     26  assertEq(rtf.format(1, "hour"), "in 1 hour");
     27 
     28  assertEq(rtf.format(0, "day"), "in 0 days");
     29  assertEq(rtf.format(-0, "day"), "0 days ago");
     30  assertEq(rtf.format(-1, "day"), "1 day ago");
     31  assertEq(rtf.format(1, "day"), "in 1 day");
     32 
     33  assertEq(rtf.format(0, "week"), "in 0 weeks");
     34  assertEq(rtf.format(-0, "week"), "0 weeks ago");
     35  assertEq(rtf.format(-1, "week"), "1 week ago");
     36  assertEq(rtf.format(1, "week"), "in 1 week");
     37 
     38  assertEq(rtf.format(0, "month"), "in 0 months");
     39  assertEq(rtf.format(-0, "month"), "0 months ago");
     40  assertEq(rtf.format(-1, "month"), "1 month ago");
     41  assertEq(rtf.format(1, "month"), "in 1 month");
     42 
     43  assertEq(rtf.format(0, "year"), "in 0 years");
     44  assertEq(rtf.format(-0, "year"), "0 years ago");
     45  assertEq(rtf.format(-1, "year"), "1 year ago");
     46  assertEq(rtf.format(1, "year"), "in 1 year");
     47 }
     48 
     49 {
     50  // Text format
     51  rtf = new Intl.RelativeTimeFormat("en-US", {
     52    numeric: "auto"
     53  });
     54  assertEq(rtf.format(0, "second"), "now");
     55  assertEq(rtf.format(-0, "second"), "now");
     56  assertEq(rtf.format(-1, "second"), "1 second ago");
     57  assertEq(rtf.format(1, "second"), "in 1 second");
     58 
     59  assertEq(rtf.format(0, "minute"), "this minute");
     60  assertEq(rtf.format(-0, "minute"), "this minute");
     61  assertEq(rtf.format(-1, "minute"), "1 minute ago");
     62  assertEq(rtf.format(1, "minute"), "in 1 minute");
     63 
     64  assertEq(rtf.format(0, "hour"), "this hour");
     65  assertEq(rtf.format(-0, "hour"), "this hour");
     66  assertEq(rtf.format(-1, "hour"), "1 hour ago");
     67  assertEq(rtf.format(1, "hour"), "in 1 hour");
     68 
     69  assertEq(rtf.format(0, "day"), "today");
     70  assertEq(rtf.format(-0, "day"), "today");
     71  assertEq(rtf.format(-1, "day"), "yesterday");
     72  assertEq(rtf.format(1, "day"), "tomorrow");
     73 
     74  assertEq(rtf.format(0, "week"), "this week");
     75  assertEq(rtf.format(-0, "week"), "this week");
     76  assertEq(rtf.format(-1, "week"), "last week");
     77  assertEq(rtf.format(1, "week"), "next week");
     78 
     79  assertEq(rtf.format(0, "month"), "this month");
     80  assertEq(rtf.format(-0, "month"), "this month");
     81  assertEq(rtf.format(-1, "month"), "last month");
     82  assertEq(rtf.format(1, "month"), "next month");
     83 
     84  assertEq(rtf.format(0, "year"), "this year");
     85  assertEq(rtf.format(-0, "year"), "this year");
     86  assertEq(rtf.format(-1, "year"), "last year");
     87  assertEq(rtf.format(1, "year"), "next year");
     88 }
     89 
     90 {
     91  // Plural specifier
     92  rtf = new Intl.RelativeTimeFormat("en-US");
     93  assertEq(rtf.format(1, "seconds"), "in 1 second");
     94  assertEq(rtf.format(1, "minutes"), "in 1 minute");
     95  assertEq(rtf.format(1, "hours"), "in 1 hour");
     96  assertEq(rtf.format(1, "days"), "in 1 day");
     97  assertEq(rtf.format(1, "weeks"), "in 1 week");
     98  assertEq(rtf.format(1, "months"), "in 1 month");
     99  assertEq(rtf.format(1, "years"), "in 1 year");
    100 }
    101 
    102 rtf = new Intl.RelativeTimeFormat("de", {numeric: "auto"});
    103 assertEq(rtf.format(-1, "day"), "gestern");
    104 assertEq(rtf.format(1, "day"), "morgen");
    105 
    106 rtf = new Intl.RelativeTimeFormat("ar", {numeric: "auto"});
    107 assertEq(rtf.format(-1, "day"), "أمس");
    108 assertEq(rtf.format(1, "day"), "غدًا");
    109 
    110 
    111 rtf = new Intl.RelativeTimeFormat("en-US");
    112 
    113 var weirdValueCases = [
    114  Infinity,
    115  -Infinity,
    116  NaN,
    117  "word",
    118  [0,2],
    119  {},
    120 ];
    121 
    122 for (let c of weirdValueCases) {
    123  assertThrowsInstanceOf(() => rtf.format(c, "year"), RangeError);
    124 };
    125 
    126 var weirdUnitCases = [
    127  "test",
    128  "SECOND",
    129  "sEcOnD",
    130  1,
    131  NaN,
    132  undefined,
    133  null,
    134  {},
    135 ];
    136 
    137 for (let u of weirdUnitCases) {
    138  assertThrowsInstanceOf(function() {
    139    var rtf = new Intl.RelativeTimeFormat("en-US");
    140    rtf.format(1, u);
    141  }, RangeError);
    142 };
    143 
    144 
    145 reportCompare(0, 0, 'ok');