#!perl -T
can_ok(
'JavaScript::Minifier'
,
'minify'
);
sub
filesMatch {
my
$file1
=
shift
;
my
$file2
=
shift
;
my
$a
;
my
$b
;
while
(1) {
$a
=
getc
(
$file1
);
$b
=
getc
(
$file2
);
if
(!
defined
(
$a
) && !
defined
(
$b
)) {
return
1;
}
elsif
(!
defined
(
$b
) ||
!
defined
(
$a
) ||
$a
ne
$b
) {
return
0;
}
}
}
sub
minTest {
my
$filename
=
shift
;
open
(INFILE,
't/scripts/'
.
$filename
.
'.js'
) or
die
(
"couldn't open file"
);
open
(GOTFILE,
'>t/scripts/'
.
$filename
.
'-got.js'
) or
die
(
"couldn't open file"
);
minify(
input
=>
*INFILE
,
outfile
=>
*GOTFILE
);
close
(INFILE);
close
(GOTFILE);
open
(EXPECTEDFILE,
't/scripts/'
.
$filename
.
'-expected.js'
) or
die
(
"couldn't open file"
);
open
(GOTFILE,
't/scripts/'
.
$filename
.
'-got.js'
) or
die
(
"couldn't open file"
);
ok(filesMatch(GOTFILE, EXPECTEDFILE),
'testing '
.
$filename
);
close
(EXPECTEDFILE);
close
(GOTFILE);
}
minTest(
's2'
);
minTest(
's3'
);
minTest(
's4'
);
minTest(
's5'
);
minTest(
's6'
);
minTest(
's7'
);
minTest(
's8'
);
minTest(
's9'
);
minTest(
's10'
);
minTest(
's11'
);
minTest(
's12'
);
minTest(
's13'
);
minTest(
's14'
);
minTest(
's15'
);
minTest(
's16'
);
is(minify(
input
=>
'var x = 2;'
),
'var x=2;'
,
'string literal input and ouput'
);
is(minify(
input
=>
"var x = 2;\n;;;alert('hi');\nvar x = 2;"
,
stripDebug
=> 1),
'var x=2;var x=2;'
,
'scriptDebug option'
);
is(minify(
input
=>
'var x = 2;'
,
copyright
=>
"BSD"
),
'/* BSD */var x=2;'
,
'copyright option'
);