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