| #! /usr/bin/env perl |
| # |
| # TEST c-compress-pl with a number of examples and what should happen to them |
| |
| use strict; |
| use warnings; |
| |
| use File::Basename; |
| |
| my @pairs = |
| ( |
| [ <<'_____' |
| /* A hell of a program */ |
| #def\ |
| ine foo/* bar */ 3 |
| #define bar /* haha "A /* comment */ that should /* remain" */ |
| #define haha /* hoho */ "A /* comment */ that should /* remain" */ |
| |
| int main() { |
| int x; |
| /* one lonely comment */ |
| } |
| _____ |
| , <<'_____' |
| #define foo 3 |
| #define bar that should |
| #define haha "A /* comment */ that should /* remain" */ |
| int main() { |
| int x; |
| } |
| _____ |
| ] |
| ); |
| |
| my $here = dirname $0; |
| my $c_compress = "$here/lang-compress.pl"; |
| |
| use FileHandle; |
| use IPC::Open2; |
| use Text::Diff; |
| foreach (@pairs) { |
| my $source = $_->[0]; |
| my $expected = $_->[1]; |
| my $pid = open2(\*Reader, \*Writer, "perl $c_compress 'C'"); |
| print Writer $source; |
| close Writer; |
| |
| local $/ = undef; # slurp |
| my $got = <Reader>; |
| |
| if ($got ne $expected) { |
| print "MISMATCH:\n", diff \$expected, \$got; |
| } |
| } |