The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#============================================================= -*-perl-*-
#
# t/misc/moose.t
#
# Tests to show Badger plays nicely with Moose.
#
# Written by Andy Wardley <abw@wardley.org>
#
# Copyright (C) 2008 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( ./lib ../lib ../../lib );
use Badger::Test
    debug => 'Badger',
    args  => \@ARGV;

BEGIN {
    eval "use Moose ()";
    skip_all("You don't have Moose installed, shame on you!") if $@;
    plan(6);
}

package Badger::Test::Moose::One;
use Moose;
use Badger::Class
    version   => 1.23,
    debug     => 0,
    accessors => 'bar',
    mutators  => 'baz',
    import    => 'class',
    words     => 'HELLO WORLD';

extends 'Badger::Base';
has foo => (is => 'rw');
our $BAZ = 3.14;

sub init {
    my ($self, $config) = @_;
    for (qw( foo bar baz )) {
        $self->{ $_ } = $config->{ $_ }
            || $self->class->any_var(uc $_);
    }
    return $self;
}
    
package main;

my $one = Badger::Test::Moose::One->new( foo => 10, bar => 20 );
ok( $one, 'created first object' );
is( $one->foo, 10, 'foo is 10' );
is( $one->bar, 20, 'bar is 10' );
is( $one->baz, 3.14, 'baz is 3.14' );
is( $one->baz(30), 30, 'set baz to 30' );
is( $one->baz, 30, 'baz is 30' );