#!/usr/bin/perl use warnings; use strict; use Test::More tests => 10; use Locale::Object::Currency; my $usd = Locale::Object::Currency->new( country_code => 'us' ); #1 isa_ok( $usd, 'Locale::Object::Currency' ); #2 is( $usd->name, 'dollar', 'it has the right name' ); #3 is( $usd->code, 'USD', 'it has the right code' ); #4 is( $usd->code_numeric, '840', 'it has the right numeric code' ); #5 is( $usd->symbol, '$', 'it has the right symbol' ); #6 is( $usd->subunit, 'cents', 'it has the right subunit' ); #7 is( $usd->subunit_amount, '100', 'it has the right subunit amount' ); my @countries = @{$usd->countries}; my $count = scalar @countries; #8 is( $count, 12, 'the number of countries sharing it is correct' ); # The code/name mapping of objects in %countries should be consistent with this. my %names = ( as => "American Samoa", gu => "Guam", pw => "Palau", pr => "Puerto Rico", tc => "Turks and Caicos Islands", us => "United States", vi => "Virgin Islands, U.S.", vg => "Virgin Islands, British" ); my @places = keys %names; my $where = $places[rand @places]; my $copy = Locale::Object::Currency->new( country_code => 'us' ); #9 ok( $copy eq $usd, 'the object is a singleton' ); my ($wrong, $wrong_defined); { # We can hide the warning, this is only a test. local $SIG{__WARN__} = sub {}; eval { $wrong = Locale::Object::Currency->new( code => 'xyz' ); }; } defined $wrong ? $wrong_defined = 1 : $wrong_defined = 0; #10 is( $wrong_defined, 0, 'an object was not made for an incorrect code' ); # Remove __END__ to get a dump of the data structures created by this test. __END__ print "\n==========================\n"; print "| DATA STRUCTURE FOLLOWS |\n"; print "==========================\n\n"; use Data::Dumper; print Dumper $usd;