Improve coverage of TypeRegistry
[gitmo/Mouse.git] / t / 023-builder.t
CommitLineData
b6e1128f 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use Test::More tests => 6;
5
6my $builder_called = 0;
7
8do {
9 package Class;
10 use Mouse;
11
12 has name => (
13 is => 'rw',
14 isa => 'Str',
15 builder => '_build_name',
16 );
17
18 sub default_name { "Frank" }
19 sub _build_name {
20 my $self = shift;
21 ++$builder_called;
22 return uc $self->default_name;
23 };
24};
25
26my $object = Class->new(name => "Bob");
27is($builder_called, 0, "builder not called in the constructor when we pass a value");
28is($object->name, "Bob", "builder doesn't matter when we just set the value in constructor");
29$object->name("Bill");
30is($object->name, "Bill", "builder doesn't matter when we just set the value in writer");
31is($builder_called, 0, "builder not called in the setter");
32$builder_called = 0;
33
34my $object2 = Class->new;
35is($object2->name, "FRANK", "builder called to provide the default value");
36is($builder_called, 1, "builder called ONCE to provide the default value");
37
38# XXX: test clearer, lazy