regress-674753.js revision a7e24c173cf37484693b9abb38e494fa7bd7baeb
1// Copyright 2008 the V8 project authors. All rights reserved.
2// Redistribution and use in source and binary forms, with or without
3// modification, are permitted provided that the following conditions are
4// met:
5//
6//     * Redistributions of source code must retain the above copyright
7//       notice, this list of conditions and the following disclaimer.
8//     * Redistributions in binary form must reproduce the above
9//       copyright notice, this list of conditions and the following
10//       disclaimer in the documentation and/or other materials provided
11//       with the distribution.
12//     * Neither the name of Google Inc. nor the names of its
13//       contributors may be used to endorse or promote products derived
14//       from this software without specific prior written permission.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28// Number
29assertTrue(typeof 0 == 'number');
30assertTrue(typeof 0 === 'number');
31assertTrue(typeof 1.2 == 'number');
32assertTrue(typeof 1.2 === 'number');
33assertFalse(typeof 'x' == 'number');
34assertFalse(typeof 'x' === 'number');
35
36// String
37assertTrue(typeof 'x' == 'string');
38assertTrue(typeof 'x' === 'string');
39assertTrue(typeof ('x' + 'x') == 'string');
40assertTrue(typeof ('x' + 'x') === 'string');
41assertFalse(typeof 1 == 'string');
42assertFalse(typeof 1 === 'string');
43assertFalse(typeof Object() == 'string');
44assertFalse(typeof Object() === 'string');
45
46// Boolean
47assertTrue(typeof true == 'boolean');
48assertTrue(typeof true === 'boolean');
49assertTrue(typeof false == 'boolean');
50assertTrue(typeof false === 'boolean');
51assertFalse(typeof 1 == 'boolean');
52assertFalse(typeof 1 === 'boolean');
53assertFalse(typeof Object() == 'boolean');
54assertFalse(typeof Object() === 'boolean');
55
56// Undefined
57assertTrue(typeof void 0 == 'undefined');
58assertTrue(typeof void 0 === 'undefined');
59assertFalse(typeof 1 == 'undefined');
60assertFalse(typeof 1 === 'undefined');
61assertFalse(typeof Object() == 'undefined');
62assertFalse(typeof Object() === 'undefined');
63
64// Function
65assertTrue(typeof Object == 'function');
66assertTrue(typeof Object === 'function');
67assertFalse(typeof 1 == 'function');
68assertFalse(typeof 1 === 'function');
69assertFalse(typeof Object() == 'function');
70assertFalse(typeof Object() === 'function');
71
72// Object
73assertTrue(typeof Object() == 'object');
74assertTrue(typeof Object() === 'object');
75assertTrue(typeof new String('x') == 'object');
76assertTrue(typeof new String('x') === 'object');
77assertTrue(typeof ['x'] == 'object');
78assertTrue(typeof ['x'] === 'object');
79assertTrue(typeof null == 'object');
80assertTrue(typeof null === 'object');
81assertFalse(typeof 1 == 'object');
82assertFalse(typeof 1 === 'object');
83assertFalse(typeof 'x' == 'object');  // bug #674753
84assertFalse(typeof 'x' === 'object');
85assertFalse(typeof Object == 'object');
86assertFalse(typeof Object === 'object');
87
88