File: role.t

package info (click to toggle)
libmoosex-abstractmethod-perl 0.004-2
  • links: PTS
  • area: main
  • in suites: sid, trixie
  • size: 208 kB
  • sloc: perl: 334; makefile: 2
file content (57 lines) | stat: -rw-r--r-- 1,212 bytes parent folder | download
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
57
#!/usr/bin/env perl
#
# This file is part of MooseX-AbstractMethod
#
# This software is Copyright (c) 2011 by Chris Weyl.
#
# This is free software, licensed under:
#
#   The GNU Lesser General Public License, Version 2.1, February 1999
#

# make sure we don't mess with Moose::Role's require, and simply pass off
# our abstract requirement

use Test::More 0.82;
use Test::Moose;
use Moose::Util 'does_role';
use Test::Fatal;

{
    package TestClass::Role;
    use Moose::Role;
    use namespace::autoclean;
    use MooseX::AbstractMethod;

    requires 'one';
    #abstract 'two';
}
{
    package TestClass;
    use Moose;

    with 'MooseX::Traits';
    #with 'TestClass::Role';
}
#{
#    package TestClass::Role2;
#    use Moose::Role;

meta_ok('TestClass');
meta_ok 'TestClass::Role';

my $dies = exception { TestClass->with_traits('TestClass::Role') };

like
    $dies,
    qr/'TestClass::Role' requires the method 'one' to be implemented/,
    'TestClass + role correctly requires one()',
    ;

is_deeply
    [ TestClass::Role->meta->get_required_method_list ],
    [ 'one'                                           ],
    'TestClass::Role correctly passes to Moose::Role::require',
    ;

done_testing;