7 package Lexical::Types::Test::Str;
10 my ($class, $buf) = @_;
11 $class = ref($class) || $class;
12 unless (defined $buf) {
14 } elsif ($buf->isa($class)) {
15 $buf = $buf->{buffer};
17 bless { buffer => $buf }, $class;
20 sub FETCH { shift->{buffer} }
23 my ($self, $val) = @_;
24 $self->{buffer} = (ref($val) && $val->isa(ref($self))) ? $val->{buffer}
28 sub TYPEDSCALAR { tie $_[1], __PACKAGE__; () }
33 use Test::More tests => 2 * 6;
35 use Lexical::Types as => 'Lexical::Types::Test';
40 is ref(tied($x)), 'Lexical::Types::Test::Str', '$x';
41 is "$x", 'abc', '$x contains the right thing';
44 is ref(tied($x)), 'Lexical::Types::Test::Str', '$x . "foo"';
45 is "$x", 'abcfoo', '$x . "foo" contains the right thing';
47 my Str $y = "bar" . $x;
49 is ref(tied($y)), 'Lexical::Types::Test::Str', '$y';
50 is "$y", 'barabcfoo', '$y contains the right thing';