The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!./perl
BEGIN {
chdir 't' if -d 't';
require './test.pl';
set_up_inc('../lib');
require Config;
}
use v5.36;
use utf8;
use feature 'class';
no warnings 'experimental::class';
# A bunch of test cases with non-ASCII, non-Latin1. Esperanto is good for that
# as the accented characters are not in Latin1.
STDOUT->binmode( ":encoding(UTF-8)" );
my $manĝis;
class Sandviĉon {
method manĝu { $manĝis++ }
field $tranĉaĵoj :param :reader = undef;
}
# class name
{
my $s = Sandviĉon->new;
isa_ok( $s, "Sandviĉon", '$s' );
}
# methods
{
my $s = Sandviĉon->new;
$s->manĝu;
ok( $manĝis, 'UTF-8 method name works' );
}
# field params + accessors default names
{
my $s = Sandviĉon->new( tranĉaĵoj => 3 );
is( $s->tranĉaĵoj, 3, 'Can obtain value from field via accessor' );
}
class Sandwich {
field $slices :param(tranĉaĵoj) :reader(tranĉaĵoj) = undef;
}
{
my $s = Sandwich->new( tranĉaĵoj => 5 );
is( $s->tranĉaĵoj, 5, 'Can obtain value from field via accessor with overridden name' );
}
done_testing;