Home | History | Annotate | Download | only in harmony
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --allow-natives-syntax
      6 
      7 assertEquals(1, %ToNumber(1));
      8 assertEquals(1, %_ToNumber(1));
      9 
     10 assertEquals(.5, %ToNumber(.5));
     11 assertEquals(.5, %_ToNumber(.5));
     12 
     13 assertEquals(0, %ToNumber(null));
     14 assertEquals(0, %_ToNumber(null));
     15 
     16 assertEquals(1, %ToNumber(true));
     17 assertEquals(1, %_ToNumber(true));
     18 
     19 assertEquals(0, %ToNumber(false));
     20 assertEquals(0, %_ToNumber(false));
     21 
     22 assertEquals(NaN, %ToNumber(undefined));
     23 assertEquals(NaN, %_ToNumber(undefined));
     24 
     25 assertEquals(-1, %ToNumber("-1"));
     26 assertEquals(-1, %_ToNumber("-1"));
     27 assertEquals(123, %ToNumber("123"));
     28 assertEquals(123, %_ToNumber("123"));
     29 assertEquals(NaN, %ToNumber("random text"));
     30 assertEquals(NaN, %_ToNumber("random text"));
     31 
     32 assertThrows(function() { %ToNumber(Symbol.toPrimitive) }, TypeError);
     33 assertThrows(function() { %_ToNumber(Symbol.toPrimitive) }, TypeError);
     34 
     35 var a = { toString: function() { return 54321 }};
     36 assertEquals(54321, %ToNumber(a));
     37 assertEquals(54321, %_ToNumber(a));
     38 
     39 var b = { valueOf: function() { return 42 }};
     40 assertEquals(42, %ToNumber(b));
     41 assertEquals(42, %_ToNumber(b));
     42 
     43 var c = {
     44   toString: function() { return "x"},
     45   valueOf: function() { return 123 }
     46 };
     47 assertEquals(123, %ToNumber(c));
     48 assertEquals(123, %_ToNumber(c));
     49 
     50 var d = {
     51   [Symbol.toPrimitive]: function(hint) {
     52     assertEquals("number", hint);
     53     return 987654321;
     54   }
     55 };
     56 assertEquals(987654321, %ToNumber(d));
     57 assertEquals(987654321, %_ToNumber(d));
     58 
     59 var e = new Date(0);
     60 assertEquals(0, %ToNumber(e));
     61 assertEquals(0, %_ToNumber(e));
     62