#!/usr/bin/env perl

use Test::More tests => 9;
use Carp;
use SVG::Sparkline;

use strict;
use warnings;

my @yvalues = (10,5,-10,-5,3,8,12,20,18,10,5);
my $points = '0,-3.33 3.2,-1.67 6.4,3.33 9.6,1.67 12.8,-1 16,-2.67 19.2,-4 22.4,-6.67 25.6,-6 28.8,-3.33 32,-1.67';

my $l1 = SVG::Sparkline->new( Line => { values=>\@yvalues, width=>33 } );
isa_ok( $l1, 'SVG::Sparkline', 'Created a Line-type Sparkline.' );
is( "$l1",
    qq{<svg height="12" viewBox="0 -7.67 33 12" width="33" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="1" /></svg>},
    'width & 11 points: output correct'
);
is( "$l1", $l1->to_string, 'Stringify works' );

my $l2 = SVG::Sparkline->new( Line => { values=>\@yvalues, thick=>0.5, width=>33 } );
is( "$l2",
    qq{<svg height="12" viewBox="0 -7.67 33 12" width="33" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="0.5" /></svg>},
    'thickness changed: output correct'
);

my $l3 = SVG::Sparkline->new( Line => { values=>\@yvalues, color=>'#888', width=>33 } );
is( "$l3",
    qq{<svg height="12" viewBox="0 -7.67 33 12" width="33" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#888" stroke-linecap="round" stroke-width="1" /></svg>},
    'color changed: output correct'
);

my $i = 0;
my @values = map { [ $i++, $_ ] } @yvalues;
my $l4 = SVG::Sparkline->new( Line => { values=>\@values, width=>33 } );
is( "$l4",
    qq{<svg height="12" viewBox="0 -7.67 33 12" width="33" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="1" /></svg>},
    'width & 11 points: output correct'
);

$points = '0,-3.33 2,-1.67 4,3.33 6,1.67 8,-1 10,-2.67 12,-4 14,-6.67 16,-6 18,-3.33 20,-1.67';
my $l5 = SVG::Sparkline->new( Line => { values=>\@yvalues } );
is( "$l5",
    qq{<svg height="12" viewBox="0 -7.67 21 12" width="21" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="1" /></svg>},
    'width & 11 points: output correct'
);

$points = '0,-3.33 2,-1.67 4,3.33 6,1.67 8,-1 10,-2.67 12,-4 14,-6.67 16,-6 18,-3.33 20,-1.67';
my $l6 = SVG::Sparkline->new( Line => { -sized => 1, values=>\@yvalues } );
is( "$l6",
    qq{<svg height="12" viewBox="0 -7.67 21 12" width="21" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="1" /></svg>},
    'sized true: output correct'
);

$points = '0,-3.33 2,-1.67 4,3.33 6,1.67 8,-1 10,-2.67 12,-4 14,-6.67 16,-6 18,-3.33 20,-1.67';
my $l7 = SVG::Sparkline->new( Line => { -sized => 0, values=>\@yvalues } );
is( "$l7",
    qq{<svg viewBox="0 -7.67 21 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" points="$points" stroke="#000" stroke-linecap="round" stroke-width="1" /></svg>},
    'sized false: output correct'
);

