The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/pugs

use v6;
use Test;

plan 8;
force_todo 1..3, 5, 7;

=pod

Very basic class tests from L<S12/"Classes">

=cut

# L<S12/"Classes">

class Foo {};

my $foo = Foo.new();
ok($foo ~~ Foo, '... smartmatch our $foo to the Foo class');

my $foo_clone = $foo.clone();
ok($foo_clone ~~ Foo, '... smartmatch our $foo_clone to the Foo class');

class Foo::Bar {};

my $foo_bar = Foo::Bar.new();
ok($foo_bar ~~ Foo::Bar, '... smartmatch our $foo_bar to the Foo::Bar class');

# L<S12/"Classes" /An \"isa\" is just a trait that happens to be another class\:/>

class Bar is Foo {};

ok(Bar ~~ Foo, '... smartmatch our Bar to the Foo class');

my $bar = Bar.new();
ok($bar ~~ Bar, '... smartmatch our $bar to the Bar class');
ok($bar ~~ Foo, '... smartmatch our $bar to the Foo class', :todo<feature>);

my $bar_clone = $bar.clone();
ok($bar_clone ~~ Bar, '... smartmatch our $bar_clone to the Bar class');
ok($bar_clone ~~ Foo, '... smartmatch our $bar_clone to the Foo class', :todo<feature>);