#!/usr/bin/env perl # # This file is part of Reindeer # # 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 # use strict; use warnings; use Test::More; use Test::Moose; use Test::Requires { 'MooseX::AutoDestruct' => '0.009', }; # This is more of a "spot check" than an actual set of tests { package TestClass; use Reindeer; has one => (traits => [AutoDestruct], is => 'ro', ttl => 400); } BEGIN { pass 'TestClass compiled OK' } pass 'TestClass built OK'; { package TestClass::Role; use Reindeer::Role; has one => (traits => [AutoDestruct], is => 'ro', ttl => 400); } BEGIN { pass 'TestClass::Role compiled OK' } pass 'TestClass::Role built OK'; { package TestClass::Compose; use Reindeer; with 'TestClass::Role'; } BEGIN { pass 'TestClass::Compose compiled OK' } pass 'TestClass::Compose built OK'; for my $class (qw{ TestClass TestClass::Compose }) { with_immutable { meta_ok($class); has_attribute_ok($class, 'one'); my $attmeta = $class->meta->get_attribute('one'); does_ok($attmeta, 'MooseX::AutoDestruct::Trait::Attribute'); } $class; } done_testing;