blob: b805e5cffe08546274fa405803948326e99ad208 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// 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
7assertEquals(0, %ToLength(NaN));
8assertEquals(0, %_ToLength(NaN));
9
10assertEquals(0, %ToLength(-Infinity));
11assertEquals(0, %_ToLength(-Infinity));
12
13assertEquals(0, %ToLength(0));
14assertEquals(0, %_ToLength(0));
15
16assertEquals(0, %ToLength(.5));
17assertEquals(0, %_ToLength(.5));
18
19assertEquals(42, %ToLength(42.99999));
20assertEquals(42, %_ToLength(42.99999));
21
22assertEquals(9007199254740991, %ToLength(9007199254740991));
23assertEquals(9007199254740991, %_ToLength(9007199254740991));
24
25assertEquals(9007199254740991, %ToLength(Infinity));
26assertEquals(9007199254740991, %_ToLength(Infinity));
27
28assertEquals(0, %ToLength(null));
29assertEquals(0, %_ToLength(null));
30
31assertEquals(1, %ToLength(true));
32assertEquals(1, %_ToLength(true));
33
34assertEquals(0, %ToLength(false));
35assertEquals(0, %_ToLength(false));
36
37assertEquals(0, %ToLength(undefined));
38assertEquals(0, %_ToLength(undefined));
39
40assertEquals(0, %ToLength("-1"));
41assertEquals(0, %_ToLength("-1"));
42assertEquals(123, %ToLength("123"));
43assertEquals(123, %_ToLength("123"));
44assertEquals(0, %ToLength("random text"));
45assertEquals(0, %_ToLength("random text"));
46
47assertThrows(function() { %ToLength(Symbol.toPrimitive) }, TypeError);
48assertThrows(function() { %_ToLength(Symbol.toPrimitive) }, TypeError);
49
50var a = { toString: function() { return 54321 }};
51assertEquals(54321, %ToLength(a));
52assertEquals(54321, %_ToLength(a));
53
54var b = { valueOf: function() { return 42 }};
55assertEquals(42, %ToLength(b));
56assertEquals(42, %_ToLength(b));
57
58var c = {
59 toString: function() { return "x"},
60 valueOf: function() { return 123 }
61};
62assertEquals(123, %ToLength(c));
63assertEquals(123, %_ToLength(c));
64
65var d = {
66 [Symbol.toPrimitive]: function(hint) {
67 assertEquals("number", hint);
68 return 987654321;
69 }
70};
71assertEquals(987654321, %ToLength(d));
72assertEquals(987654321, %_ToLength(d));
73
74var e = new Date(0);
75assertEquals(0, %ToLength(e));
76assertEquals(0, %_ToLength(e));