#!/usr/bin/perl # Simple tests for a simple module use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 12; # Define a class SCOPE: { eval " package Foo; use Object::Tiny qw{ foo bar }; "; ok( ! $@, 'Created package without error' ); } # Create a trivial object SCOPE: { my $empty = Foo->new; isa_ok( $empty, 'Foo' ); isa_ok( $empty, 'Object::Tiny' ); is( scalar( keys %$empty ), 0, 'Empty object is empty' ); } # Create a real object SCOPE: { my $object = Foo->new( foo => 1, bar => 2, baz => 3 ); isa_ok( $object, 'Foo' ); isa_ok( $object, 'Object::Tiny' ); is( scalar( keys %$object ), 3, 'Object contains expect elements' ); is( $object->foo, 1, '->foo ok' ); is( $object->bar, 2, '->bar ok' ); eval { $object->baz; }; ok( $@, '->bar returns an error' ); is( $object->{baz}, 3, '->{baz} does contain value' ); } # Trigger the constructor exception SCOPE: { eval "package Bar; use Object::Tiny 'bad thing';"; ok( $@ =~ /Invalid accessor name/, 'Got expected error' ); }