%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Class-XSAccessor-1.19/t/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Class-XSAccessor-1.19/t/09hash_use_hash.t |
#!/usr/bin/perl # This is a copy of 01hash_basic.t, but using use module { ... } use strict; use warnings; use Test::More tests => 35; BEGIN { use_ok('Class::XSAccessor') }; package Foo; use Class::XSAccessor { getters => { get_foo => 'foo', get_bar => 'bar', }, }; package main; BEGIN {pass();} package Foo; use Class::XSAccessor { replace => 1, getters => { get_foo => 'foo', get_bar => 'bar', }, }; package main; BEGIN {pass();} ok( Foo->can('get_foo') ); ok( Foo->can('get_bar') ); my $foo = bless {foo => 'a', bar => 'b'} => 'Foo'; ok($foo->get_foo() eq 'a'); ok($foo->get_bar() eq 'b'); package Foo; use Class::XSAccessor { setters => { set_foo => 'foo', set_bar => 'bar', }, }; package main; BEGIN{pass()} ok( Foo->can('set_foo') ); ok( Foo->can('set_bar') ); $foo->set_foo('1'); pass(); $foo->set_bar('2'); pass(); ok($foo->get_foo() eq '1'); ok($foo->get_bar() eq '2'); # Make sure scalars are copied and not stored by reference (RT 38573) my $x = 1; $foo->set_foo($x); $x++; is( $foo->get_foo(), 1, 'scalar copied properly' ); # test that multiple methods can point to the same attr. package Foo; use Class::XSAccessor { getters => { get_FOO => 'foo', }, setters => { set_FOO => 'foo', }, }; # test shorthand syntax package Foo; use Class::XSAccessor { getters => 'barfle', setters => {set_barfle => 'barfle'}, }; use Class::XSAccessor { getters => [qw/a b/], setters => 'c', }; package main; BEGIN{pass()} ok( Foo->can('get_foo') ); ok( Foo->can('get_bar') ); my $FOO = bless { foo => 'a', bar => 'c', barfle => 'works', a => 'a1', b => 'b1', c => 'c1', } => 'Foo'; ok( $FOO->can('get_FOO') ); ok( $FOO->can('set_FOO') ); ok($FOO->get_FOO() eq 'a'); ok($FOO->get_foo() eq 'a'); $FOO->set_FOO('b'); ok($FOO->get_FOO() eq 'b'); ok($FOO->get_foo() eq 'b'); # tests for shorthand foreach my $name (qw(barfle a b c)) { ok($FOO->can($name)); } is($FOO->a(), 'a1'); is($FOO->b(), 'b1'); $FOO->c("1c"); is($FOO->{c}, '1c'); $FOO->{a} = '1a'; $FOO->{b} = '1b'; is($FOO->a(), '1a'); is($FOO->b(), '1b'); is($FOO->barfle(), 'works'); $FOO->set_barfle("elfrab"); is($FOO->barfle(), "elfrab");