From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/ruby
# Tests for the if/elsif/else construct with comments in between
assert_eq(do {
# If branch
if (true) {
'if'
}
# Elsif 1 branch
elsif (false) {
'elsif'
}
# Elsif 2 branch
elsif (true) {
'elsif2'
}
# Else branch
else {
'else'
}
}, 'if');
assert_eq(do {
# If branch
if (false) {
'if'
}
# Elsif 1 branch
elsif (true) {
'elsif #1'
}
# Elsif 2 branch
elsif (true) {
'elsif #2'
}
# Else branch
else {
'else'
}
}, 'elsif #1');
assert_eq(do {
# If branch
if (false) {
'if'
}
# Elsif 1 branch
# ...
elsif (false) {
'elsif #1'
}
# Elsif 2 branch
elsif (true) {
'elsif #2'
}
# Else branch
else {
'else'
}
}, 'elsif #2');
assert_eq(do {
# If branch
if (false) {
'if'
}
# Elsif 1 branch
elsif (false) {
'elsif #1'
}
# Elsif 2 branch
# ...
elsif (false) {
'elsif #2'
}
# Else branch
# ...
else {
'else'
}
}, 'else');
assert_eq(do {
# If branch
if (true) {
'if'
}
# Else branch
# ...
else {
'else'
}
}, 'if')
assert_eq(do {
# If branch
if (false) {
'if'
}
# Else branch
# ....
else {
'else'
}
}, 'else')
do {
var n = 1
if (true) {
n += 1
}# Foo bar
if (false) {
n += 42
}
assert_eq(n, 2)
}
do {
var n = 1
if (true) {
n += 1
}
# Foo bar
if (true) {
n += 42
}
assert_eq(n, 44)
}
do {
var n = 1
if (true) {
n += 1
}
# Foo bar
if (false) {
n += 42
}
assert_eq(n, 2)
}
do {
var n = 1
if (true) {
n += 1
}
# Foo bar
while (false) {
n += 42
}
assert_eq(n, 2)
}
if (true) {
assert_eq(__LINE__, 186)
}
## comment
## comment
if (true) {
assert_eq(__LINE__, 193)
}
assert_eq(__LINE__, 196)
say '** Test passed!'