#!/usr/bin/perl -w use strict; use Test::More tests => 12; use Finance::Quote; # Test overall currency lookup my $currencies = Finance::Quote::currency_lookup(); my %test_currencies = ( AUD => "Australian Dollar" , EUR => "Euro" , CAD => "Canadian Dollar" ); while ( my ($code, $name) = each %test_currencies ) { ok( exists $currencies->{$code}, "Expected currency code (${code}) exists" ); is( $currencies->{$code}->{name} , $name , "Expected currency name (${name}) for code (${code})" ); } # Test selective currency lookup $currencies = Finance::Quote::currency_lookup( name => qr/pound/i ); # Test multiple lookup parameters $currencies = Finance::Quote::currency_lookup( name => "Australia" , code => qr/AU/ ); ok( exists $currencies->{AUD} , "Expected currency code (AUD) exists for matching multiple params" ); cmp_ok( scalar keys %{$currencies}, '==', 1 , "Only one currency returned for matching multiple params" ); $currencies = Finance::Quote::currency_lookup( name => "Euro" , code => "AUD" ); cmp_ok( scalar keys %{$currencies}, '==', 0 , "Expected zero-response for non-matching multiple params" ); # Test non-matching currency lookup $currencies = Finance::Quote::currency_lookup( name => qr/rubbish_value/i ); is( ref $currencies , 'HASH' , 'Hash-ref returned for non-matching lookup' ); cmp_ok( scalar keys %{$currencies} , '==', 0 , "Empty hashref returned for non-matching lookup" ); # Test that an error returns undef $currencies = Finance::Quote::currency_lookup( invalid_param => 1 ); is( $currencies , undef , "Error results in undef response" );