From 191da7441108288a4211126cc8f2cac2310b3874 Mon Sep 17 00:00:00 2001 From: "Artem S. Povalyukhin" Date: Fri, 11 Oct 2019 06:50:33 +0300 Subject: [PATCH] Fixed Date.prototype.setTime(). This closes #236 issue on Github. --- src/njs_date.c | 13 ++++--------- src/test/njs_unit_test.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/njs_date.c b/src/njs_date.c index 4eacbe26..f697f08c 100644 --- a/src/njs_date.c +++ b/src/njs_date.c @@ -1520,16 +1520,11 @@ njs_date_prototype_set_time(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, { double time; - time = njs_date(&args[0])->time; - - if (njs_fast_path(!isnan(time))) { - - if (nargs > 1) { - time = njs_number(&args[1]); + if (nargs > 1) { + time = njs_timeclip(njs_number(&args[1])); - } else { - time = NAN; - } + } else { + time = NAN; } njs_date(&args[0])->time = time; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 441f97bd..9d83dca1 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -11878,6 +11878,21 @@ static njs_unit_test_t njs_test[] = { njs_str("var d = new Date(); d.setTime(1308895200000); d.getTime()"), njs_str("1308895200000") }, + { njs_str("var d = new Date(); d.setTime(); d.getTime()"), + njs_str("NaN") }, + + { njs_str("var d = new Date(); d.setTime(Infinity); d.getTime()"), + njs_str("NaN") }, + + { njs_str("var d = new Date(); d.setTime(8.64e15 +1); d.getTime()"), + njs_str("NaN") }, + + { njs_str("var d = new Date(NaN); d.setTime(0); d.getTime()"), + njs_str("0") }, + + { njs_str("var d = new Date(); d.setTime(8.64e15); d.getTime()"), + njs_str("8640000000000000") }, + { njs_str("var d = new Date(1308895201625); d.setMilliseconds(5003);" "d.getTime()"), njs_str("1308895206003") }, -- 2.47.3