package TestCase::Switch {
sub switch_return : int () {
my $ret = switch_return_sub();
unless ($ret == 5) {
return 0;
}
return 1;
}
sub switch_return_sub : int () {
my $i = 2;
switch ($i) {
case 1: {
return 3;
}
case 2: {
return 5;
}
}
}
sub switch_no_default : int () {
my $i = 0;
switch ($i) {
case 1: {
1;
break;
}
}
my $p = 5;
unless ($p == 5) {
return 0;
}
return 1;
}
sub switch_constant_byte : int () {
{
my $char = (int)'[';
my $success = 0;
switch ($char) {
case 3: {
break;
}
case ']': {
break;
}
case '[': {
$success = 1;
break;
}
}
unless ($success) {
return 0;
}
}
return 1;
}
# Switch - nest
sub switch_nest : int () {
my $success1 : int;
switch (3) {
case 1: {
$success1 = 0;
break;
}
case 3: {
switch (5) {
case 2: {
$success1 = 0;
break;
}
case 5: {
$success1 = 1;
break;
}
case 6: {
$success1 = 0;
break;
}
default: {
$success1 = 0;
break;
}
}
break;
}
case 10000: {
$success1 = 0;
break;
}
default:
}
return $success1;
}
# Switch - lookup switch
sub switch_lookup_switch : int () {
my $success1 : int;
switch (1) {
case 1: {
$success1 = 1;
break;
}
case 3: {
$success1 = 0;
break;
}
case 10000: {
$success1 = 0;
break;
}
default:
}
my $success2 : int;
switch (3) {
case 1: {
$success2 = 0;
break;
}
case 3: {
$success2 = 1;
break;
}
case 10000: {
$success2 = 0;
break;
}
default:
}
my $success3 : int;
switch (10000) {
case 3: {
$success3 = 0;
break;
}
case 1: {
$success3 = 0;
break;
}
case 10000: {
$success3 = 1;
break;
}
default:
}
my $success4 : int;
switch (2) {
case 1: {
break;
}
case 3: {
break;
}
case 10000: {
break;
}
default: {
$success4 = 1;
}
}
if ($success1) {
if ($success2) {
if ($success3) {
if ($success4) {
return 1;
}
}
}
}
return 0;
}
# Switch - table switch
sub switch_table_switch : int () {
my $success1 : int;
switch(3) {
case 3: {
$success1 = 1;
break;
}
case 4: {
$success1 = 0;
break;
}
case 5: {
$success1 = 0;
break;
}
default:
}
my $success2 : int;
switch(4) {
case 3: {
$success2 = 0;
break;
}
case 4: {
$success2 = 1;
break;
}
case 5: {
$success2 = 0;
break;
}
default:
}
my $success3 : int;
switch(10) {
case 3: {
$success3 = 0;
break;
}
case 4: {
$success3 = 0;
break;
}
case 5: {
$success3 = 0;
break;
}
default: {
$success3 = 1;
}
}
if ($success1) {
if ($success2) {
if ($success3) {
return 1;
}
}
}
return 0;
}
}