The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use Test::More;
use Finance::Quote;

if (not $ENV{ONLINE_TEST}) {
    plan skip_all => 'Set $ENV{ONLINE_TEST} to run this test';
}

plan tests => 11;

# Test currency conversion, both explicit requests and automatic
# conversion.

my $q      = Finance::Quote->new();

# Explicit conversion...
ok($q->currency("USD","AUD"));			# Test 1
ok($q->currency("EUR","JPY"));			# Test 2
ok(! defined($q->currency("XXX","YYY")));	# Test 3

# test for thousands : GBP -> IQD. This should be > 1000
ok($q->currency("GBP","IQD")>1000) ;            # Test 4

# Test 5
ok(($q->currency("10 AUD","AUD")) == (10 * ($q->currency("AUD","AUD"))));

# Euros into French Francs are fixed at a conversion rate of
# 1:6.559576 .  We can use this knowledge to test that a stock is
# converting correctly.

# Test 6
my %baseinfo = $q->fetch("yahoo_europe","UG.PA");
ok($baseinfo{"UG.PA","success"});

$q->set_currency("AUD");	# All new requests in Aussie Dollars.

my %info = $q->fetch("yahoo_europe","UG.PA");
ok($info{"UG.PA","success"});		# Test 7
ok($info{"UG.PA","currency"} eq "AUD");	# Test 8
ok($info{"UG.PA","price"} > 0);		# Test 9

# Check if inverse is working ok
ok(check_inverse("EUR","RUB"),"Inverse is calculated correctly: multiplication should be 1");
ok(check_inverse("CZK","USD"),"Inverse is calculated correctly: multiplication should be 1");

sub check_inverse {
    my ($cur1,$cur2)=@_;
    my $a = $q->currency($cur1,$cur2);
    my $b = $q->currency($cur2,$cur1);
    return $a*$b;
}