#!perl -w

use strict;

use Test::More qw/no_plan/;
use t::Test;

{
    my $scratch = t::Test->scratch(1);
    my $assets = t::Test->assets(base => [ "http://example.com/", $scratch->base ]);
    $assets->set_output_path("built/");

    $assets->include("static/apple.png");

    ok(! -e $scratch->file("built/apple.png"));
    $assets->exports;

    ok(-e $scratch->file("built/apple.png"));
    ok(! -e $scratch->file("built/apple.gif"));
}

{
    my $scratch = t::Test->scratch(1);
    my $assets = t::Test->assets(base => [ "http://example.com/", $scratch->base ]);
    $assets->set_output_path("built/");

    $assets->include("static/apple.png");

    ok(! -e $scratch->file("built/apple.png"));
    $assets->exports("image");

    ok(-e $scratch->file("built/apple.png"));
    ok(! -e $scratch->file("built/apple.gif"));
}

{
    my $scratch = t::Test->scratch(1);
    my $assets = t::Test->assets(base => [ "http://example.com/", $scratch->base ]);
    $assets->set_output_path("built/");

    $assets->include("static/apple.png");

    ok(! -e $scratch->file("built/apple.png"));
    $assets->exports("css");

    ok(-e $scratch->file("built/apple.png"));
    ok(! -e $scratch->file("built/apple.gif"));
}

{
    my $scratch = t::Test->scratch(1);
    my $assets = t::Test->assets(base => [ "http://example.com/", $scratch->base ]);
    $assets->set_output_path("built/");

    $assets->include("static/apple.png");

    ok(! -e $scratch->file("built/apple.png"));
    $assets->exports("js");

    ok(! -e $scratch->file("built/apple.png"));
    ok(! -e $scratch->file("built/apple.gif"));
}

sub same_file ($$) {
    my $a = shift;
    my $b = shift;

    my $a_file = t::Test->scratch->file($a);
    my $b_file = t::Test->scratch->file($b);

    ok($a_file->stat->size);
    ok($b_file->stat->size);
    is($a_file->stat->size, $b_file->stat->size);
}

{
    my $scratch = t::Test->scratch(1);
    my $assets = t::Test->assets(base => [ "http://example.com/", $scratch->base ]);
    $assets->set_output_path("built/");

    $assets->include("static/apple.png");
    $assets->include("other/pear.tiff");
    $assets->include("plum.jpeg");
    $assets->include("apple.gif");

    $assets->exports;

    ok(-e $scratch->file("built/apple.png"));
    ok(-e $scratch->file("built/pear.tiff"));
    ok(-e $scratch->file("built/plum.jpeg"));
    ok(-e $scratch->file("built/apple.gif"));

    same_file "built/apple.png", "static/apple.png";
    same_file "built/pear.tiff", "other/pear.tiff";
    same_file "built/plum.jpeg", "plum.jpeg";
    same_file "built/apple.gif", "apple.gif";
}