1#!/usr/bin/perl -w
2use strict;
3use Test::More;
4use Finance::Quote;
5
6if ( not $ENV{ONLINE_TEST} ) {
7    plan skip_all => 'Set $ENV{ONLINE_TEST} to run this test';
8}
9
10plan tests => 46;
11
12# Test GoldMoney functions.
13my $q = Finance::Quote->new("GoldMoney");
14
15foreach my $currency ( 'EUR', 'USD' ) {
16    $q->set_currency($currency);
17    my %quotes =
18        $q->fetch( "goldmoney", "gold", "silver", "platinum", "BOGUS" );
19    ok(%quotes);
20
21    # Check that sound information is returned for gold, silver and platinum.
22    ok( $quotes{ "gold", "success" }, 'gold price lookup' );
23    ok( $quotes{ "gold", "last" } > 0,
24        "Gold is quoted at " . $quotes{ "gold", "last" } );
25    ok( $quotes{ "gold", "currency" } eq $currency, "currency is $currency" );
26    ok( length( $quotes{ "gold", "date" } ) > 0 );
27    ok( length( $quotes{ "gold", "time" } ) > 0 );
28
29    ok( $quotes{ "silver", "success" },               'silver price lookup' );
30    ok( $quotes{ "silver", "last" } > 0 );
31    ok( $quotes{ "silver", "currency" } eq $currency, "currency is $currency" );
32    ok( length( $quotes{ "silver", "date" } ) > 0 );
33    ok( length( $quotes{ "silver", "time" } ) > 0 );
34
35    ok( $quotes{ "platinum", "success" }, 'platinum price lookup' );
36    ok( $quotes{ "platinum", "last" } > 0 );
37    ok( $quotes{ "platinum", "currency" } eq $currency,
38        "currency is $currency" );
39    ok( length( $quotes{ "platinum", "date" } ) > 0 );
40    ok( length( $quotes{ "platinum", "time" } ) > 0 );
41
42    my $year = ( localtime() )[5] + 1900;
43    ok( ( substr( $quotes{ "gold",     "isodate" }, 0, 4 ) == $year ) );
44    ok( ( substr( $quotes{ "gold",     "date" },    6, 4 ) == $year ) );
45    ok( ( substr( $quotes{ "silver",   "isodate" }, 0, 4 ) == $year ) );
46    ok( ( substr( $quotes{ "silver",   "date" },    6, 4 ) == $year ) );
47    ok( ( substr( $quotes{ "platinum", "isodate" }, 0, 4 ) == $year ) );
48    ok( ( substr( $quotes{ "platinum", "date" },    6, 4 ) == $year ) );
49
50    # Check that a bogus symbol returns no-success.
51    ok( !$quotes{ "BOGUS", "success" } );
52}
53