The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
#Editor vim:syn=perl

use strict;
use warnings;
use Test::More 'no_plan';
use lib 'lib';

use Panotools::Makefile::Rule;
use Panotools::Makefile::Utils qw/platform/;
ok (1);

my $rule = new Panotools::Makefile::Rule;

$rule->Targets ('C:\Program Files\foo\bar\My output.txt');
$rule->Prerequisites ('C:\WINDOWS\notepad.exe');
$rule->Command ('echo', 'C:\Documents and Settings\All Users\My input.txt');

platform ('linux');

#C:\\Program\ Files\\foo\\bar\\My\ output.txt : C:\\WINDOWS\\notepad.exe
#        echo C:\\Documents\ and\ Settings\\All\ Users\\My\ input.txt

ok ($rule->Assemble =~ /^C:\\\\Program\\ Files\\\\foo/);
ok ($rule->Assemble =~ /\techo C:\\\\Documents\\ and/);

platform ('MSWin32');

#C:/Program\ Files/foo/bar/My\ output.txt : C:/WINDOWS/notepad.exe
#        echo "C:/Documents and Settings/All Users/My input.txt"

ok ($rule->Assemble =~ m|^C:/Program\\ Files/foo|);
ok ($rule->Assemble =~ m|\techo "C:/Documents and Settings/All Users/My input.txt"|);

$rule = new Panotools::Makefile::Rule;

$rule->Prerequisites ('/etc/resolv.conf', '/home/$(USER)/.hugin');
$rule->Targets ('/tmp/foo bar', '/tmp/bar foo');
$rule->Command ('cp', '/etc/resolv.conf', '/tmp/foo bar');
$rule->Command ('cp', '/home/$(USER)/.hugin', '/tmp/bar foo');

platform ('linux');

#/tmp/foo\ bar /tmp/bar\ foo : /etc/resolv.conf /home/$(USER)/.hugin
#        cp /etc/resolv.conf /tmp/foo\ bar
#        cp /home/$(USER)/.hugin /tmp/bar\ foo

ok ($rule->Assemble =~ m|/tmp/foo\\ bar /tmp/bar\\ foo|);
ok ($rule->Assemble =~ m| /home/\$\(USER\)/.hugin|);
ok ($rule->Assemble =~ m|cp /etc/resolv.conf /tmp/foo\\ bar|);
ok ($rule->Assemble =~ m|cp /home/\$\(USER\)/.hugin /tmp/bar\\ foo|);