The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Currency;
use Test::Exception;
use Test::More tests => 11;

{
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = Data::Currency->new( 1.2, 'USD' );
    my $result = $value1 / $value2;
    is $result->code,     'USD',  'symbol';
    is $result->as_float, '1.00', 'value';
}

{
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = Data::Currency->new( -1,  'USD' );
    my $result = $value1 / $value2;
    is $result->code,     'USD',   'symbol';
    is $result->as_float, '-1.20', 'value';
}

{
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = -10;
    my $result = $value1 / $value2;
    is $result->code,     'USD',   'symbol';
    is $result->as_float, '-0.12', 'value';
}

{
    my $value1 = 10;
    my $value2 = Data::Currency->new( 1.2, 'USD' );
    my $result = $value1 / $value2;
    is $result->code,     'USD',  'symbol';
    is $result->as_float, '8.33', 'value';
}

{
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = Data::Currency->new( 1.2, 'EUR' );
    dies_ok sub { $value1 / $value2 }, 'Different symbols';
}

{
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = Data::Currency->new(0);
    dies_ok sub { $value1 / $value2 }, 'Division by zero';
}

{
    local $SIG{__WARN__} = sub { die "Warnings" };
    my $value1 = Data::Currency->new( 1.2, 'USD' );
    my $value2 = undef;
    throws_ok sub { $value1 / $value2 },
      qr/division by zero/, 'Division by zero';
}