The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use v6-alpha;

use Test;

# Reference:
# Thread "How do I... create a value type" started by Ingo Blechschmidt
# L<"http://www.nntp.perl.org/group/perl.perl6.language/22217">

plan 5;

class MyValType is value {
  has $.data;

  method succ () { $.data + 1 }
}

{
  my MyValType $foo .= new(:data<42>);
  is $foo.data, 42,     "instantiating an own value type worked (1)";
  ok $foo ~~ MyValType, "instantiating an own value type worked (2)";

  my MyValType $bar = $foo;
  ok !($bar =:= $foo),  "assigning a value type gets you a copy (1)";
  $bar.data = 23;
  is $bar.data, 23,     "modifying a value type object worked";
  is $foo.data, 42,     "assigning a value type gets you a copy (2)", :todo<feature>;
}