#! /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; | |
} | |
} |