]> git.kaiwu.me - njs.git/commitdiff
Fixed Date.prototype.setTime().
authorArtem S. Povalyukhin <artem.povaluhin@gmail.com>
Fri, 11 Oct 2019 03:50:33 +0000 (06:50 +0300)
committerArtem S. Povalyukhin <artem.povaluhin@gmail.com>
Fri, 11 Oct 2019 03:50:33 +0000 (06:50 +0300)
This closes #236 issue on Github.

src/njs_date.c
src/test/njs_unit_test.c

index 4eacbe26866cc4c506c1ad681de00fabefd2bd77..f697f08cc35e398fa55fe0b1f3fcc8686098749a 100644 (file)
@@ -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;
index 441f97bd77d8dee4af5935f60d82ffd4ac3cbe8d..9d83dca1d9ec878649ca28e1f43f6ee991729311 100644 (file)
@@ -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") },