1d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Copyright 2013 the V8 project authors. All rights reserved.
2d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org//
4d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Redistribution and use in source and binary forms, with or without
5d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// modification, are permitted provided that the following conditions
6d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// are met:
7d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 1.  Redistributions of source code must retain the above copyright
8d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org//     notice, this list of conditions and the following disclaimer.
9d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 2.  Redistributions in binary form must reproduce the above copyright
10d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org//     notice, this list of conditions and the following disclaimer in the
11d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org//     documentation and/or other materials provided with the distribution.
12d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org//
13d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
24d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgdescription("KDE JS Test");
25d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction testSwitch(v) {
26d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  var result = "";
27d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  switch (v) {
28d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 0:
29d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'a';
30d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 1:
31d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'b';
32d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 1:
33d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'c';
34d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 2:
35d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'd';
36d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
37d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  }
38d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  return result;
39d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org}
40d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
41d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch(0)", "'abcd'");
42d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch(1)", "'bcd'"); // IE agrees, NS disagrees
43d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch(2)", "'d'");
44d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch(false)", "''");
45d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
46d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction testSwitch2(v) {
47d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  var result = "";
48d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  switch (v) {
49d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 1:
50d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'a';
51d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
52d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 2:
53d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'b';
54d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
55d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     default:
56d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'c';
57d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 3:
58d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'd';
59d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
60d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  }
61d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  return result;
62d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org}
63d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
64d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch2(1)", "'a'");
65d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch2(2)", "'b'");
66d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch2(3)", "'d'");
67d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch2(-1)", "'cd'");
68d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch2('x')", "'cd'");
69d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
70d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction testSwitch3(v) {
71d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  var result = "";
72d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  switch (v) {
73d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     default:
74d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'c';
75d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 3:
76d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'd';
77d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 4:
78d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'e';
79d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
80d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  }
81d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  return result;
82d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org};
83d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
84d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch3(0)", "'cde'");
85d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch3(3)", "'de'");
86d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgshouldBe("testSwitch3(4)", "'e'");
87d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
88d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction testSwitch4(v) {
89d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  var result = "";
90d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  switch (v) {
91d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org     case 0:
92d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'a';
93d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        result += 'b';
94d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org        break;
95d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  }
96d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org  return result;
97d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org};
98d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org
99f9841897146bc10dbb3c45f0632bb79254602c75machenbach@chromium.orgshouldBe("testSwitch4(0)", "'ab'");
100