tor-browser

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

testIsISOStyleDate.cpp (1864B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
      2 * vim: set ts=8 sts=2 et sw=2 tw=80:
      3 */
      4 /* This Source Code Form is subject to the terms of the Mozilla Public
      5 * License, v. 2.0. If a copy of the MPL was not distributed with this
      6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      7 
      8 #include "js/Date.h"
      9 #include "jsapi-tests/tests.h"
     10 
     11 const char* VALID_DATES[] = {
     12    "2009",
     13    "2009-05",
     14    "2009-05-19",
     15    "2022-02-29",
     16    "2009T15:00",
     17    "2009-05T15:00",
     18    "2022-06-31T15:00",
     19    "2009-05-19T15:00",
     20    "2009-05-19T15:00:15",
     21    "2009-05-19T15:00-00:00",
     22    "2009-05-19T15:00:15.452",
     23    "2009-05-19T15:00:15.452Z",
     24    "2009-05-19T15:00:15.452+02:00",
     25    "2009-05-19T15:00:15.452-02:00",
     26    "-271821-04-20T00:00:00Z",
     27    "+000000-01-01T00:00:00Z",
     28 };
     29 
     30 const char* INVALID_DATES[] = {
     31    "10",
     32    "20009",
     33    "+20009",
     34    "2009-",
     35    "2009-0",
     36    "2009-15",
     37    "2009-02-1",
     38    "2009-02-50",
     39    "15:00",
     40    "T15:00",
     41    "9-05-19T15:00",
     42    "2009-5-19T15:00",
     43    "2009-05-1T15:00",
     44    "2009-02-10T15",
     45    "2009-05-19T15:",
     46    "2009-05-19T1:00",
     47    "2009-05-19T10:1",
     48    "2009-05-19T60:00",
     49    "2009-05-19T15:70",
     50    "2009-05-19T15:00.25",
     51    "2009-05-19+10:00",
     52    "2009-05-19Z",
     53    "2009-05-19 15:00",
     54    "2009-05-19t15:00Z",
     55    "2009-05-19T15:00z",
     56    "2009-05-19T15:00+01",
     57    "2009-05-19T10:10+1:00",
     58    "2009-05-19T10:10+01:1",
     59    "2009-05-19T15:00+75:00",
     60    "2009-05-19T15:00+02:80",
     61    "02009-05-19T15:00",
     62 };
     63 
     64 BEGIN_TEST(testIsISOStyleDate_success) {
     65  for (const char* date : VALID_DATES) {
     66    CHECK(ValidDate(date));
     67  }
     68  for (const char* date : INVALID_DATES) {
     69    CHECK(!ValidDate(date));
     70  }
     71 
     72  return true;
     73 }
     74 
     75 bool ValidDate(const char* str) {
     76  return JS::IsISOStyleDate(cx, JS::Latin1Chars(str, strlen(str)));
     77 }
     78 
     79 END_TEST(testIsISOStyleDate_success)