Move is_valid_class_name into XS
[gitmo/Mouse.git] / t / 001_mouse / 008-default.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 36;
5 use Test::Mouse;
6
7 do {
8     package Class;
9     use Mouse;
10
11     has 'x' => (
12         is      => 'rw',
13         default => 10,
14     );
15
16     has 'y' => (
17         is      => 'rw',
18         default => sub{ 20 },
19     );
20
21     has 'z' => (
22         is => 'rw',
23     );
24 };
25
26 with_immutable(sub{
27     my $object = Class->new;
28     is($object->x, 10, "attribute has a default of 10");
29     is($object->y, 20, "attribute has a default of 20");
30     is($object->z, undef, "attribute has no default");
31
32     is($object->x(5), 5, "setting a new value");
33     is($object->y(25), 25, "setting a new value");
34     is($object->z(125), 125, "setting a new value");
35
36     is($object->x, 5, "setting a new value does not trigger default");
37     is($object->y, 25, "setting a new value does not trigger default");
38     is($object->z, 125, "setting a new value does not trigger default");
39
40     my $object2 = Class->new(x => 50);
41     is($object2->x, 50, "attribute was initialized to 50");
42     is($object2->y, 20, "attribute has a default of 20");
43     is($object2->z, undef, "attribute has no default");
44
45     is($object2->x(5), 5, "setting a new value");
46     is($object2->y(25), 25, "setting a new value");
47     is($object2->z(125), 125, "setting a new value");
48
49     is($object2->x, 5, "setting a new value does not trigger default");
50     is($object2->y, 25, "setting a new value does not trigger default");
51     is($object2->z, 125, "setting a new value does not trigger default");
52
53 }, qw(Class));