function testSwitch(v) {
  var result = "";
  switch (v) {
     case 0:
        result += 'a';
     case 1:
	result += 'b';
     case 1:
        result += 'c';
     case 2:
        result += 'd';
        break;
  }
  return result;
}

shouldBe("testSwitch(0)", "'abcd'");
shouldBe("testSwitch(1)", "'bcd'"); // IE agrees, NS disagrees
shouldBe("testSwitch(2)", "'d'");
shouldBe("testSwitch(false)", "''");

function testSwitch2(v) {
  var result = "";
  switch (v) {
     case 1:
        result += 'a';
        break;
     case 2:
	result += 'b';
        break;
     default:
        result += 'c';
     case 3:
        result += 'd';
        break;
  }
  return result;
}

shouldBe("testSwitch2(1)", "'a'");
shouldBe("testSwitch2(2)", "'b'");
shouldBe("testSwitch2(3)", "'d'");
shouldBe("testSwitch2(-1)", "'cd'");
shouldBe("testSwitch2('x')", "'cd'");

function testSwitch3(v) {
  var result = "";
  switch (v) {
     default:
        result += 'c';
     case 3:
        result += 'd';
     case 4:
        result += 'e';
        break;
  }
  return result;
};

shouldBe("testSwitch3(0)", "'cde'");
shouldBe("testSwitch3(3)", "'de'");
shouldBe("testSwitch3(4)", "'e'");

function testSwitch4(v) {
  var result = "";
  switch (v) {
     case 0:
        result += 'a';
        result += 'b';
        break;
  }
  return result;
};

shouldBe("testSwitch4(0)", "'ab'");

