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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#============================================================= -*-perl-*-
#
# t/core/hub.t
#
# Test the Badger::Hub.pm module. Run with -d option for debugging.
#
# Copyright (C) 2006 Andy Wardley. All Rights Reserved.
#
# This is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
#========================================================================
use strict;
use warnings;
use lib qw( core/lib t/core/lib ./lib ../lib ../../lib );
use Badger::Hub;
use Badger::Test
tests => 6,
debug => 'Badger::Hub',
args => \@ARGV;
my $pkg = 'Badger::Hub';
#------------------------------------------------------------------------
# test class methods
#------------------------------------------------------------------------
my $p1 = $pkg->prototype();
my $p2 = $pkg->prototype();
is( $p1, $p2, 'Hub prototype is a singleton' );
is( $p1, $Badger::Hub::PROTOTYPE, 'Hub prototype is cache in package' );
$pkg->destroy();
ok( ! defined $Badger::Hub::PROTOTYPE, 'Hub prototype destroyed' );
#-----------------------------------------------------------------------
# check we get methods failing
#-----------------------------------------------------------------------
eval { $pkg->nothing };
like( $@, qr/Invalid method 'nothing'/, 'invalid method' );
#-----------------------------------------------------------------------
# subclass to define some components
#-----------------------------------------------------------------------
package My::Hub;
use base 'Badger::Hub';
our $COMPONENTS = {
widget => 'My::Widget',
};
package main;
my $hub = My::Hub->new;
my $widget = $hub->widget;
ok( $widget, 'got widget' );
is( ref $widget, 'My::Widget', 'got My::Widget' );
__END__
# Local Variables:
# mode: perl
# perl-indent-level: 4
# indent-tabs-mode: nil
# End:
#
# vim: expandtab shiftwidth=4:
|