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

#!/usr/bin/ruby
# Tests for the with/orwith/else construct with comments in between
assert_eq(do {
# with branch
with ('foo') { |x|
x
}
# orwith 1 branch
orwith ('bar') {|x|
x
}
# orwith 2 branch
orwith ('baz') {|x|
x
}
# Else branch
else {
'else'
}
}, 'foo')
assert_eq(do {
# with branch
with (nil) { |x|
x
}
# orwith 1 branch
orwith ('bar') {|x|
x
}
# orwith 2 branch
orwith ('baz') {|x|
x
}
# Else branch
else {
'else'
}
}, 'bar')
assert_eq(do {
# with branch
with (nil) { |x|
x
}
# orwith 1 branch
orwith (nil) {|x|
x
}
# orwith 2 branch
orwith ('baz') {|x|
x
}
# Else branch
else {
'else'
}
}, 'baz')
assert_eq(do {
# with branch
with (nil) { |x|
x
}
# orwith 1 branch
orwith (nil) {|x|
x
}
# orwith 2 branch
orwith ('baz') {|x|
x
}
# Else branch
else {
'else'
}
}, 'baz')
assert_eq(do {
# with branch
with (nil) { |x|
x
}
# orwith 1 branch
orwith (nil) {|x|
x
}
# orwith 2 branch
orwith (nil) {|x|
x
}
# Else branch
else {
'else'
}
}, 'else')
assert_eq(do {
# with branch
with ('foo') { |x|
x
}
# Else branch
else {
'else'
}
}, 'foo')
assert_eq(do {
# with branch
with (nil) { |x|
x
}
# Else branch
else {
'else'
}
}, 'else')
do {
var str = 'foo'
with ('bar') {|x|
str += x
}
if (false) {
str += 'error'
}
assert_eq(str, 'foobar')
}
do {
var str = 'foo'
with ('bar') {|x|
str += x
}
if (false) {
str += 'error'
}
assert_eq(str, 'foobar')
}
do {
var str = 'foo'
with ('bar') {|x|
str += x
}
# Foo bar
# -------
if (false) {
str += 'error'
}
assert_eq(str, 'foobar')
}
do {
var str = 'foo'
with ('bar') {|x|
str += x
}
# Foo bar
# -------
if (false) {
str += 'error'
}
assert_eq(str, 'foobar')
}
assert_eq(__LINE__, 202)
say "** Test passed!"