#!/usr/bin/perl

use strict;
use warnings;

#use Test::More 'no_plan';
use Test::More tests => 5;
use Test::Differences;

use FindBin qw($Bin);
use lib "$Bin/lib";

BEGIN {
    use_ok ( 'Chart::OFC2::Extremes' ) or exit;
}

exit main();

sub main {
    my $extremes = Chart::OFC2::Extremes->new();
    
    eq_or_diff(
        $extremes->TO_JSON,
        {
            'x_axis_max' => undef,
            'x_axis_min' => undef, 
            'y_axis_max' => undef,
            'y_axis_min' => undef,
            'other'      => undef,
        },
        'all undef in the beginning'
    );
    
    $extremes->reset('x' => [ 1, 2, 3, 4, 5, ]);
    $extremes->reset('y' => [ 3, ]);
    
    eq_or_diff(
        $extremes->TO_JSON,
        {
            'x_axis_max' => 5,
            'x_axis_min' => 1, 
            'y_axis_max' => 3,
            'y_axis_min' => 3,
            'other'      => undef,
        },
        'x/y now set'
    );

    $extremes->reset('x' => [ undef,undef,6,3,0, ]);
    $extremes->reset('y' => [ undef,undef,100,100.5, ]);

    eq_or_diff(
        $extremes->TO_JSON,
        {
            'x_axis_max' => 6,
            'x_axis_min' => 0, 
            'y_axis_max' => 100.5,
            'y_axis_min' => 100,
            'other'      => undef,
        },
        'x/y set again'
    );
    
    $extremes->reset('x' => [ undef,undef,[ 1,2,undef,5,-1,3 ],3,0, ]);
    $extremes->reset('y' => [ undef,undef,100,100.5, [ [ undef ], [ 99 ], [ 101 ] ], ]);

    eq_or_diff(
        $extremes->TO_JSON,
        {
            'x_axis_max' => 5,
            'x_axis_min' => -1, 
            'y_axis_max' => 101,
            'y_axis_min' => 99,
            'other'      => undef,
        },
        'x/y extremes in arrays of arrays'
    );
    
    return 0;
}