#!/usr/bin/ruby -w
#
# $Id: tc_currency,v 1.2 2004/07/08 08:38:44 ianmacd Exp $

$: << File.dirname(__FILE__) + "/../lib"

require 'test/unit'
require 'finance/currency'
require 'finance/quote'

include Finance

class TC_CurrencyTest < Test::Unit::TestCase

  def test_raw_conversion
    assert( Currency::convert( 'AUD', 'USD' ) > 0 )
    assert( Currency::convert( 'JPY', 'EUR' ) > 0 )
    
    # Test that incorrect currencies raise an exception.
    assert_raises( Currency::RateError ) do
      Currency::convert( 'YYY', 'XXX' )
    end
    
    # Test that amounts are being properly processed.
    assert_equal( Currency::convert( 'AUD', 'AUD', 10 ),
		  10 * ( Currency::convert( 'AUD', 'AUD' ) ) )
  end

  def test_stock_conversion
    q = Quote.new

    qd = q.fetch( 'europe', '12150.PA' )
    assert( qd['12150.PA'][:success] )

    # Switch to Aussie dollars.
    q.currency = 'AUD'

    qd = q.fetch( 'europe', '12150.PA' )
    assert( qd['12150.PA'][:success] )
    assert_equal( 'AUD', qd['12150.PA'][:currency] )
    assert( qd['12150.PA'][:price].to_f > 0 )
  end

end
