tor-browser

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

formatToParts.js (2505B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 // Any copyright is dedicated to the Public Domain.
      3 // http://creativecommons.org/licenses/publicdomain/
      4 
      5 // Tests the format function with a diverse set of locales and options.
      6 // Always use UTC to avoid dependencies on test environment.
      7 
      8 const {
      9  Era, Year, Month, Weekday, Day, DayPeriod, Hour, Minute, Second, Literal
     10 } = DateTimeFormatParts
     11 
     12 var format;
     13 var date = Date.UTC(2012, 11, 17, 3, 0, 42);
     14 
     15 // Locale en-US; default options.
     16 format = new Intl.DateTimeFormat("en-us", {timeZone: "UTC"});
     17 assertParts(format, date, [
     18  Month("12"), Literal("/"), Day("17"), Literal("/"), Year("2012"),
     19 ]);
     20 
     21 // Just date
     22 format = new Intl.DateTimeFormat("en-us", {
     23  year: 'numeric',
     24  month: 'numeric',
     25  day: 'numeric',
     26  timeZone: "UTC"});
     27 assertParts(format, date, [
     28  Month("12"), Literal("/"), Day("17"), Literal("/"), Year("2012"),
     29 ]);
     30 
     31 // Just time in hour24
     32 format = new Intl.DateTimeFormat("en-us", {
     33  hour: 'numeric',
     34  minute: 'numeric',
     35  second: 'numeric',
     36  hour12: false,
     37  timeZone: "UTC"});
     38 assertParts(format, date, [
     39  Hour("03"), Literal(":"), Minute("00"), Literal(":"), Second("42"),
     40 ]);
     41 
     42 // Just time in hour12
     43 format = new Intl.DateTimeFormat("en-us", {
     44  hour: 'numeric',
     45  minute: 'numeric',
     46  second: 'numeric',
     47  hour12: true,
     48  timeZone: "UTC"});
     49 assertParts(format, date, [
     50  Hour("3"), Literal(":"), Minute("00"), Literal(":"), Second("42"), Literal(" "), DayPeriod("AM"),
     51 ]);
     52 
     53 // Just month.
     54 format = new Intl.DateTimeFormat("en-us", {
     55  month: "narrow",
     56  timeZone: "UTC"});
     57 assertParts(format, date, [
     58  Month("D"),
     59 ]);
     60 
     61 // Just weekday.
     62 format = new Intl.DateTimeFormat("en-us", {
     63  weekday: "narrow",
     64  timeZone: "UTC"});
     65 assertParts(format, date, [
     66  Weekday("M"),
     67 ]);
     68 
     69 // Year and era.
     70 format = new Intl.DateTimeFormat("en-us", {
     71  year: "numeric",
     72  era: "short",
     73  timeZone: "UTC"});
     74 assertParts(format, date, [
     75  Year("2012"), Literal(" "), Era("AD"),
     76 ]);
     77 
     78 // Time and date
     79 format = new Intl.DateTimeFormat("en-us", {
     80  weekday: 'long',
     81  year: 'numeric',
     82  month: 'numeric',
     83  day: 'numeric',
     84  hour: 'numeric',
     85  minute: 'numeric',
     86  second: 'numeric',
     87  hour12: true,
     88  timeZone: "UTC"});
     89 assertParts(format, date, [
     90  Weekday("Monday"), Literal(", "), Month("12"), Literal("/"), Day("17"), Literal("/"), Year("2012"),
     91  Literal(", "),
     92  Hour("3"), Literal(":"), Minute("00"), Literal(":"), Second("42"), Literal(" "), DayPeriod("AM"),
     93 ]);
     94 
     95 if (typeof reportCompare === "function")
     96    reportCompare(0, 0, 'ok');