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