From 86a61dc374e8abe351df03a1aa6665013cc39345 Mon Sep 17 00:00:00 2001 From: tsepez Date: Fri, 25 Mar 2016 10:00:11 -0700 Subject: util.printd() replaces specified date with current date. Added test case. Several bugs going on here: JS_LocalTime() ignoring argument and returning current time and not factoring in the time zone adjustment. Use of FXSYS_floor() silently casts result to float, losing precision required to extract minutes and seconds. Pre-existing wcsftime escapes not stripped. BUG=pdfium:413 Review URL: https://codereview.chromium.org/1833053002 --- testing/resources/javascript/util_printd.in | 104 +++++++++++++++++++++ .../resources/javascript/util_printd_expected.txt | 40 ++++++++ 2 files changed, 144 insertions(+) create mode 100644 testing/resources/javascript/util_printd.in create mode 100644 testing/resources/javascript/util_printd_expected.txt (limited to 'testing/resources/javascript') diff --git a/testing/resources/javascript/util_printd.in b/testing/resources/javascript/util_printd.in new file mode 100644 index 0000000000..f098187cf0 --- /dev/null +++ b/testing/resources/javascript/util_printd.in @@ -0,0 +1,104 @@ +{{header}} +{{object 1 0}} << + /Type /Catalog + /Pages 2 0 R + /OpenAction 10 0 R +>> +endobj +{{object 2 0}} << + /Type /Pages + /Count 1 + /Kids [ + 3 0 R + ] +>> +endobj +% Page number 0. +{{object 3 0}} << + /Type /Page + /Parent 2 0 R + /Resources << + /Font <> + >> + /Contents [21 0 R] + /MediaBox [0 0 612 792] +>> +% OpenAction action +{{object 10 0}} << + /Type /Action + /S /JavaScript + /JS 11 0 R +>> +endobj +% JS program to exexute +{{object 11 0}} << +>> +stream +function TestOneFormat(str, d) { + try { + app.alert(str + ": " + util.printd(str, d)); + } + catch (e) { + app.alert(str + ": Caught error: " + e); + } +} +function TestOneXFAFormat(str, d, flag) { + try { + app.alert(str + ": " + util.printd(str, d, flag)); + } + catch (e) { + app.alert(str + ": Caught error: " + e); + } +} +// July 4th, 2014 11:59:59 AM local time. +var d1 = new Date(2014, 06, 04, 15, 59, 58); +TestOneFormat("mm/dd/yyyy HH:MM:ss", d1); +TestOneFormat(0, d1); +TestOneFormat(1, d1); +TestOneFormat(2, d1); +TestOneFormat(3, d1); +TestOneFormat("mmmm", d1); +TestOneFormat("mmm", d1); +TestOneFormat("mm", d1); +TestOneFormat("m", d1); +TestOneFormat("dddd", d1); +TestOneFormat("ddd", d1); +TestOneFormat("dd", d1); +TestOneFormat("d", d1); +TestOneFormat("yyyy", d1); +TestOneFormat("yy", d1); +TestOneFormat("HH", d1); +TestOneFormat("H", d1); +TestOneFormat("hh", d1); +// "h" is inconsitent between platforms: " 3" vs. "3" +TestOneFormat("MM", d1); +TestOneFormat("M", d1); +TestOneFormat("ss", d1); +TestOneFormat("s", d1); +// "tt" is inconsitent between platforms: "PM" vs, "pm" vs. "P" +TestOneFormat("t", d1); +TestOneFormat("abc.efg.i.kl.nopqr..uvwxyzABC.EFG.I.KL.NOPQR..UVWXYZ0123456780", d1); +TestOneFormat("!@#$^&*()-_<>[];:~", d1); +TestOneFormat("%z %d %%z %%d %%%z %%%d %%% hh:MM", d1); +TestOneFormat("", d1); +TestOneFormat("mm/dd/yyyy", d1); +TestOneFormat("mm/dd/yyyy", new Date(1850, 0, 1)); +TestOneFormat("mm/dd/yyyy", new Date(2525, 11, 31)); +TestOneFormat("mm/dd/yyyy"); +TestOneFormat(); +TestOneFormat("mm/dd/yyyy", 42); +TestOneFormat("mm/dd/yyyy", "clams"); +TestOneFormat("mm/dd/yyyy", {"clams": 3}); +TestOneFormat("mm/dd/yyyy", ["clams", 3]); +TestOneFormat({"clams": 3}, d1); +TestOneFormat(["clams", 3], d1); +TestOneXFAFormat("mm", d1, false); +TestOneXFAFormat("mm", d1, true); +endstream +endobj +{{xref}} +trailer << + /Root 1 0 R +>> +{{startxref}} +%%EOF diff --git a/testing/resources/javascript/util_printd_expected.txt b/testing/resources/javascript/util_printd_expected.txt new file mode 100644 index 0000000000..47abb2fd42 --- /dev/null +++ b/testing/resources/javascript/util_printd_expected.txt @@ -0,0 +1,40 @@ +Alert: mm/dd/yyyy HH:MM:ss: 07/04/2014 15:59:58 +Alert: 0: D:20140704155958 +Alert: 1: 2014.07.04 15:59:58 +Alert: 2: 2014/07/04 15:59:58 +Alert: 3: Caught error: util.printd: Incorrect parameter value. +Alert: mmmm: July +Alert: mmm: Jul +Alert: mm: 07 +Alert: m: 7 +Alert: dddd: Sunday +Alert: ddd: Sun +Alert: dd: 04 +Alert: d: 4 +Alert: yyyy: 2014 +Alert: yy: 14 +Alert: HH: 15 +Alert: H: 15 +Alert: hh: 03 +Alert: MM: 59 +Alert: M: 59 +Alert: ss: 58 +Alert: s: 58 +Alert: t: t +Alert: abc.efg.i.kl.nopqr..uvwxyzABC.EFG.I.KL.NOPQR..UVWXYZ0123456780: abc.efg.i.kl.nopqr..uvwxyzABC.EFG.I.KL.NOPQR..UVWXYZ0123456780 +Alert: !@#$^&*()-_<>[];:~: !@#$^&*()-_<>[];:~ +Alert: %z %d %%z %%d %%%z %%%d %%% hh:MM: z 4 z 4 z 4 03:59 +Alert: : +Alert: mm/dd/yyyy: 07/04/2014 +Alert: mm/dd/yyyy: 01/01/1850 +Alert: mm/dd/yyyy: 12/31/2525 +Alert: mm/dd/yyyy: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: undefined: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: mm/dd/yyyy: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: mm/dd/yyyy: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: mm/dd/yyyy: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: mm/dd/yyyy: Caught error: util.printd: The second parameter can't be converted to a Date. +Alert: [object Object]: Caught error: util.printd: Incorrect parameter type. +Alert: clams,3: Caught error: util.printd: Incorrect parameter type. +Alert: mm: 07 +Alert: mm: Caught error: util.printd: Operation not supported. -- cgit v1.2.3