File: bourso.t

package info (click to toggle)
libfinance-quote-perl 1.35-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,432 kB
  • ctags: 394
  • sloc: perl: 8,716; makefile: 2
file content (87 lines) | stat: -rwxr-xr-x 2,808 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/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 => 65;

# Test Bourso functions.

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

# my stocks = stock, fund, warrant, bond, indice
my @stocks = ( "FR0000441677",    # Fund
               "AF",              # Stock, EUR, Nyse Euronext
               "MSFT",            # Stock, USD, NASDAQ
               "SOLB",            # Stock, EUR, BRUXELLES
               "CNP",             # Stock, EUR, Nyse Euronext
               "FR0010371401",    # Bond
               "FR0010707414",    # Warrant
               "FR0003500008",    # Index
);

# Bourso tests need to cover all the possible cases:
#
#    Name		What		Test Case
#
#    cours-action	Stock		AF
#    cours-obligation	Bond		FR0010371401
#    opcvm/opcvm	Fund		FR0000441677
#    cours-warrant	Warrant		FR0010707414
#    cours-indice	Index		FR0003500008

my $year     = ( localtime() )[5] + 1900;
my $lastyear = $year - 1;

my %quotes;

#my %quotes = $q->fetch("bourso", @stocks);
#ok(%quotes);

# Check that the name, last, currency and date are defined for all of the stocks.
foreach my $stock (@stocks) {
    eval {
        %quotes = $q->fetch( "bourso", $stock );
        ok( %quotes, "$stock \%quotes defined" );

        my $last = $quotes{ $stock, "last" };
        ok( $last > 0, "$stock last ($last) > 0" );
        ok( length( $quotes{ $stock, "name" } ),   "$stock name is defined" );
        ok( length( $quotes{ $stock, "symbol" } ), "$stock symbol is defined" );
        ok( $quotes{ $stock, "success" }, "$stock returned success" );
        ok(    # indexes are quoted in percents
            ( $stock eq "FR0003500008" )
                || (    ( $stock eq "MSFT" )
                     && ( $quotes{ $stock, "currency" } eq "USD" ) )
                || ( $quotes{ $stock, "currency" } eq "EUR" ),
            "Index is quoted in percents"
        );

    SKIP:
        {
            skip "date is not defined for warrants", 2
                if ( $stock eq "FR0010707414" );
            ok( substr( $quotes{ $stock, "isodate" }, 0, 4 ) == $year
                    || substr( $quotes{ $stock, "isodate" }, 0, 4 )
                    == $lastyear,
                "$stock isodate defined"
            );
            ok( substr( $quotes{ $stock, "date" }, 6, 4 ) == $year
                    || substr( $quotes{ $stock, "date" }, 6, 4 ) == $lastyear,
                "$stock date defined"
            );
        }
    };
    if ($@) {
        print STDERR "Error fetching stock ", $stock, "\n", $@;
        ok( !1 );
    }
}

# Check that a bogus stock returns no-success.
%quotes = $q->fetch( "bourso", "BOGUS" );
ok( !$quotes{ "BOGUS", "success" }, "BOGUS failed correctly" );