1e1051a39Sopenharmony_ci#! /usr/bin/env perl
2e1051a39Sopenharmony_ci#
3e1051a39Sopenharmony_ci# TEST c-compress-pl with a number of examples and what should happen to them
4e1051a39Sopenharmony_ci
5e1051a39Sopenharmony_ciuse strict;
6e1051a39Sopenharmony_ciuse warnings;
7e1051a39Sopenharmony_ci
8e1051a39Sopenharmony_ciuse File::Basename;
9e1051a39Sopenharmony_ci
10e1051a39Sopenharmony_cimy @pairs =
11e1051a39Sopenharmony_ci    (
12e1051a39Sopenharmony_ci     [ <<'_____'
13e1051a39Sopenharmony_ci/* A hell of a program */
14e1051a39Sopenharmony_ci#def\
15e1051a39Sopenharmony_ciine foo/* bar */ 3
16e1051a39Sopenharmony_ci#define bar /* haha "A /* comment */ that should    /* remain" */
17e1051a39Sopenharmony_ci#define  haha /* hoho */ "A /* comment */ that should /* remain" */
18e1051a39Sopenharmony_ci
19e1051a39Sopenharmony_ciint main() {
20e1051a39Sopenharmony_ci    int x;
21e1051a39Sopenharmony_ci    /* one lonely comment */
22e1051a39Sopenharmony_ci}
23e1051a39Sopenharmony_ci_____
24e1051a39Sopenharmony_ci       , <<'_____'
25e1051a39Sopenharmony_ci#define foo 3
26e1051a39Sopenharmony_ci#define bar that should
27e1051a39Sopenharmony_ci#define haha "A /* comment */ that should /* remain" */
28e1051a39Sopenharmony_ciint main() {
29e1051a39Sopenharmony_ciint x;
30e1051a39Sopenharmony_ci}
31e1051a39Sopenharmony_ci_____
32e1051a39Sopenharmony_ci     ]
33e1051a39Sopenharmony_ci    );
34e1051a39Sopenharmony_ci
35e1051a39Sopenharmony_cimy $here = dirname $0;
36e1051a39Sopenharmony_cimy $c_compress = "$here/lang-compress.pl";
37e1051a39Sopenharmony_ci
38e1051a39Sopenharmony_ciuse FileHandle;
39e1051a39Sopenharmony_ciuse IPC::Open2;
40e1051a39Sopenharmony_ciuse Text::Diff;
41e1051a39Sopenharmony_ciforeach (@pairs) {
42e1051a39Sopenharmony_ci    my $source = $_->[0];
43e1051a39Sopenharmony_ci    my $expected = $_->[1];
44e1051a39Sopenharmony_ci    my $pid = open2(\*Reader, \*Writer, "perl $c_compress 'C'");
45e1051a39Sopenharmony_ci    print Writer $source;
46e1051a39Sopenharmony_ci    close Writer;
47e1051a39Sopenharmony_ci
48e1051a39Sopenharmony_ci    local $/ = undef;             # slurp
49e1051a39Sopenharmony_ci    my $got = <Reader>;
50e1051a39Sopenharmony_ci
51e1051a39Sopenharmony_ci    if ($got ne $expected) {
52e1051a39Sopenharmony_ci        print "MISMATCH:\n", diff \$expected, \$got;
53e1051a39Sopenharmony_ci    }
54e1051a39Sopenharmony_ci}
55