File: 06_Object-Accessor-alias.t

package info (click to toggle)
perl 5.14.2-21%2Bdeb7u3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 89,728 kB
  • sloc: perl: 421,086; ansic: 195,186; sh: 37,852; pascal: 8,746; cpp: 3,893; makefile: 2,346; xml: 1,972; yacc: 1,602
file content (56 lines) | stat: -rw-r--r-- 1,698 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
BEGIN { chdir 't' if -d 't' };

use strict;
use lib '../lib';
use Test::More 'no_plan';
use Data::Dumper;

my $Class = 'Object::Accessor';

use_ok($Class);

my $Object  = $Class->new;
my $Acc     = 'foo';
my $Alias   = 'bar';

ok( $Object,                "Object created" );
isa_ok( $Object, $Class,    "   Object" );

### add an accessor
{   my $rv = $Object->mk_accessors( $Acc );
    ok( $rv,                "Created accessor '$Acc'" );
    ok( $Object->$Acc( $$ ),"   Set value" );
    is( $Object->$Acc, $$,  "   Retrieved value" );
}

### add an alias
{   my $rv = $Object->mk_aliases( $Alias => $Acc );
    ok( $rv,                "Created alias '$Alias'" );
    ok( $Object->can( $Alias ),
                            "   Alias '$Alias' exists" );
    is( $Object->$Alias, $Object->$Acc,
                            "   Alias & original return the same value" );

    ok( $Object->$Alias( $$.$$ ),
                            "   Changed value using alias" );
    is( $Object->$Alias, $Object->$Acc,
                            "   Alias & original return the same value" );
}

### test if cloning works
{   my $clone = $Object->mk_clone;
    ok( $clone,             "Cloned object" );

    is_deeply( [sort $clone->ls_accessors], [sort $Object->ls_accessors],
                            "   All accessors cloned" );

    ok( $clone->$Acc( $$ ), "   Set value" );
    is( $clone->$Alias, $clone->$Acc,
                            "   Alias & original return the same value" );

    ok( $clone->$Alias( $$.$$ ),
                            "   Changed value using alias" );
    is( $clone->$Alias, $clone->$Acc,
                            "   Alias & original return the same value" );
}