diff --git a/libtests/build.mk b/libtests/build.mk index baa3412..4579241 100644 --- a/libtests/build.mk +++ b/libtests/build.mk @@ -11,8 +11,8 @@ BINS_libtests = \ input_source \ lzw \ md5 \ - png_filter \ pointer_holder \ + predictors \ qutil \ random \ rc4 \ diff --git a/libtests/png_filter.cc b/libtests/predictors.cc index 7494cb7..fe2b90f 100644 --- a/libtests/png_filter.cc +++ b/libtests/predictors.cc @@ -8,17 +8,26 @@ #include #include -void run(char const* filename, bool encode, unsigned int columns, +void run(char const* filename, char const* filter, + bool encode, unsigned int columns, int bits_per_sample, int samples_per_pixel) { - // Decode the file FILE* in = QUtil::safe_fopen(filename, "rb"); FILE* o1 = QUtil::safe_fopen("out", "wb"); Pipeline* out = new Pl_StdioFile("out", o1); - Pipeline* pl = new Pl_PNGFilter( - "png", out, - encode ? Pl_PNGFilter::a_encode : Pl_PNGFilter::a_decode, - columns, samples_per_pixel, bits_per_sample); + Pipeline* pl = 0; + if (strcmp(filter, "png") == 0) + { + pl = new Pl_PNGFilter( + "png", out, + encode ? Pl_PNGFilter::a_encode : Pl_PNGFilter::a_decode, + columns, samples_per_pixel, bits_per_sample); + } + else + { + std::cerr << "unknown filter " << filter << std::endl; + exit(2); + } assert((2 * (columns + 1)) < 1024); unsigned char buf[1024]; size_t len; @@ -55,22 +64,24 @@ void run(char const* filename, bool encode, unsigned int columns, int main(int argc, char* argv[]) { - if (argc != 6) + if (argc != 7) { - std::cerr << "Usage: png_filter {en,de}code filename" + std::cerr << "Usage: predictor {png|tiff} {en,de}code filename" << " columns samples-per-pixel bits-per-sample" << std::endl; exit(2); } - bool encode = (strcmp(argv[1], "encode") == 0); - char* filename = argv[2]; - int columns = QUtil::string_to_int(argv[3]); - int samples_per_pixel = QUtil::string_to_int(argv[4]); - int bits_per_sample = QUtil::string_to_int(argv[5]); + char* filter = argv[1]; + bool encode = (strcmp(argv[2], "encode") == 0); + char* filename = argv[3]; + int columns = QUtil::string_to_int(argv[4]); + int samples_per_pixel = QUtil::string_to_int(argv[5]); + int bits_per_sample = QUtil::string_to_int(argv[6]); try { - run(filename, encode, columns, bits_per_sample, samples_per_pixel); + run(filename, filter, encode, + columns, bits_per_sample, samples_per_pixel); } catch (std::exception& e) { diff --git a/libtests/qtest/png_filter.test b/libtests/qtest/predictors.test index ff3cef5..f055347 100644 --- a/libtests/qtest/png_filter.test +++ b/libtests/qtest/predictors.test @@ -5,16 +5,16 @@ use strict; use File::Copy; use Digest::MD5; -chdir("png_filter") or die "chdir testdir failed: $!\n"; +chdir("predictors") or die "chdir testdir failed: $!\n"; require TestDriver; -my $td = new TestDriver('png_filter'); +my $td = new TestDriver('predictors'); cleanup(); $td->runtest("decode columns = 4", - {$td->COMMAND => "png_filter decode in1 4 1 8"}, + {$td->COMMAND => "predictors png decode in1 4 1 8"}, {$td->STRING => "done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); @@ -24,7 +24,7 @@ $td->runtest("check output", {$td->FILE => "out1"}); $td->runtest("decode columns = 5", - {$td->COMMAND => "png_filter decode in2 5 1 8"}, + {$td->COMMAND => "predictors png decode in2 5 1 8"}, {$td->STRING => "done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); @@ -34,7 +34,7 @@ $td->runtest("check output", {$td->FILE => "out2"}); $td->runtest("encode columns = 4", - {$td->COMMAND => "png_filter encode out1 4 1 8"}, + {$td->COMMAND => "predictors png encode out1 4 1 8"}, {$td->STRING => "done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); @@ -44,7 +44,7 @@ $td->runtest("check output", {$td->FILE => "in1"}); $td->runtest("encode columns = 5", - {$td->COMMAND => "png_filter encode out2 5 1 8"}, + {$td->COMMAND => "predictors png encode out2 5 1 8"}, {$td->STRING => "done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); @@ -75,7 +75,7 @@ foreach my $i (@other) my $samples_per_pixel = $2; my $bits_per_sample = $3; $td->runtest("decode $i", - {$td->COMMAND => "png_filter decode $i.data" . + {$td->COMMAND => "predictors png decode $i.data" . " $columns $samples_per_pixel $bits_per_sample"}, {$td->STRING => "done\n", $td->EXIT_STATUS => 0}, diff --git a/libtests/qtest/png_filter/01--32-3-16.data b/libtests/qtest/predictors/01--32-3-16.data index 01cfcbc..01cfcbc 100644 --- a/libtests/qtest/png_filter/01--32-3-16.data +++ b/libtests/qtest/predictors/01--32-3-16.data diff --git a/libtests/qtest/png_filter/01--32-3-16.decoded b/libtests/qtest/predictors/01--32-3-16.decoded index 2459a08..2459a08 100644 --- a/libtests/qtest/png_filter/01--32-3-16.decoded +++ b/libtests/qtest/predictors/01--32-3-16.decoded diff --git a/libtests/qtest/png_filter/02--32-1-8.data b/libtests/qtest/predictors/02--32-1-8.data index c7978ff..c7978ff 100644 --- a/libtests/qtest/png_filter/02--32-1-8.data +++ b/libtests/qtest/predictors/02--32-1-8.data diff --git a/libtests/qtest/png_filter/02--32-1-8.decoded b/libtests/qtest/predictors/02--32-1-8.decoded index d8320b3..d8320b3 100644 --- a/libtests/qtest/png_filter/02--32-1-8.decoded +++ b/libtests/qtest/predictors/02--32-1-8.decoded diff --git a/libtests/qtest/png_filter/03--32-3-8.data b/libtests/qtest/predictors/03--32-3-8.data index 5600cc4..5600cc4 100644 --- a/libtests/qtest/png_filter/03--32-3-8.data +++ b/libtests/qtest/predictors/03--32-3-8.data diff --git a/libtests/qtest/png_filter/03--32-3-8.decoded b/libtests/qtest/predictors/03--32-3-8.decoded index ae56281..ae56281 100644 --- a/libtests/qtest/png_filter/03--32-3-8.decoded +++ b/libtests/qtest/predictors/03--32-3-8.decoded diff --git a/libtests/qtest/png_filter/04--32-1-8.data b/libtests/qtest/predictors/04--32-1-8.data index 684a649..684a649 100644 --- a/libtests/qtest/png_filter/04--32-1-8.data +++ b/libtests/qtest/predictors/04--32-1-8.data diff --git a/libtests/qtest/png_filter/04--32-1-8.decoded b/libtests/qtest/predictors/04--32-1-8.decoded index e1087d1..e1087d1 100644 --- a/libtests/qtest/png_filter/04--32-1-8.decoded +++ b/libtests/qtest/predictors/04--32-1-8.decoded diff --git a/libtests/qtest/png_filter/05--32-3-8.data b/libtests/qtest/predictors/05--32-3-8.data index 32c103f..32c103f 100644 --- a/libtests/qtest/png_filter/05--32-3-8.data +++ b/libtests/qtest/predictors/05--32-3-8.data diff --git a/libtests/qtest/png_filter/05--32-3-8.decoded b/libtests/qtest/predictors/05--32-3-8.decoded index f4a4f7c..f4a4f7c 100644 --- a/libtests/qtest/png_filter/05--32-3-8.decoded +++ b/libtests/qtest/predictors/05--32-3-8.decoded diff --git a/libtests/qtest/png_filter/06--32-1-8.data b/libtests/qtest/predictors/06--32-1-8.data index 806f68e..806f68e 100644 --- a/libtests/qtest/png_filter/06--32-1-8.data +++ b/libtests/qtest/predictors/06--32-1-8.data diff --git a/libtests/qtest/png_filter/06--32-1-8.decoded b/libtests/qtest/predictors/06--32-1-8.decoded index 58b7060..58b7060 100644 --- a/libtests/qtest/png_filter/06--32-1-8.decoded +++ b/libtests/qtest/predictors/06--32-1-8.decoded diff --git a/libtests/qtest/png_filter/07--32-3-8.data b/libtests/qtest/predictors/07--32-3-8.data index 577ba70..577ba70 100644 --- a/libtests/qtest/png_filter/07--32-3-8.data +++ b/libtests/qtest/predictors/07--32-3-8.data diff --git a/libtests/qtest/png_filter/07--32-3-8.decoded b/libtests/qtest/predictors/07--32-3-8.decoded index 20658f2..20658f2 100644 --- a/libtests/qtest/png_filter/07--32-3-8.decoded +++ b/libtests/qtest/predictors/07--32-3-8.decoded diff --git a/libtests/qtest/png_filter/08--32-1-8.data b/libtests/qtest/predictors/08--32-1-8.data index f5aea4a..f5aea4a 100644 --- a/libtests/qtest/png_filter/08--32-1-8.data +++ b/libtests/qtest/predictors/08--32-1-8.data diff --git a/libtests/qtest/png_filter/08--32-1-8.decoded b/libtests/qtest/predictors/08--32-1-8.decoded index 9f2c62e..9f2c62e 100644 --- a/libtests/qtest/png_filter/08--32-1-8.decoded +++ b/libtests/qtest/predictors/08--32-1-8.decoded diff --git a/libtests/qtest/png_filter/09--32-3-8.data b/libtests/qtest/predictors/09--32-3-8.data index 03cd2bb..03cd2bb 100644 --- a/libtests/qtest/png_filter/09--32-3-8.data +++ b/libtests/qtest/predictors/09--32-3-8.data diff --git a/libtests/qtest/png_filter/09--32-3-8.decoded b/libtests/qtest/predictors/09--32-3-8.decoded index 4059e57..4059e57 100644 --- a/libtests/qtest/png_filter/09--32-3-8.decoded +++ b/libtests/qtest/predictors/09--32-3-8.decoded diff --git a/libtests/qtest/png_filter/10--32-1-8.data b/libtests/qtest/predictors/10--32-1-8.data index ad8c632..ad8c632 100644 --- a/libtests/qtest/png_filter/10--32-1-8.data +++ b/libtests/qtest/predictors/10--32-1-8.data diff --git a/libtests/qtest/png_filter/10--32-1-8.decoded b/libtests/qtest/predictors/10--32-1-8.decoded index a713a0f..a713a0f 100644 --- a/libtests/qtest/png_filter/10--32-1-8.decoded +++ b/libtests/qtest/predictors/10--32-1-8.decoded diff --git a/libtests/qtest/png_filter/11--32-3-8.data b/libtests/qtest/predictors/11--32-3-8.data index 199c13d..199c13d 100644 --- a/libtests/qtest/png_filter/11--32-3-8.data +++ b/libtests/qtest/predictors/11--32-3-8.data diff --git a/libtests/qtest/png_filter/11--32-3-8.decoded b/libtests/qtest/predictors/11--32-3-8.decoded index b86fc1e..b86fc1e 100644 --- a/libtests/qtest/png_filter/11--32-3-8.decoded +++ b/libtests/qtest/predictors/11--32-3-8.decoded diff --git a/libtests/qtest/png_filter/12--32-1-4.data b/libtests/qtest/predictors/12--32-1-4.data index 09e6287..09e6287 100644 --- a/libtests/qtest/png_filter/12--32-1-4.data +++ b/libtests/qtest/predictors/12--32-1-4.data diff --git a/libtests/qtest/png_filter/12--32-1-4.decoded b/libtests/qtest/predictors/12--32-1-4.decoded index 83e116c..83e116c 100644 --- a/libtests/qtest/png_filter/12--32-1-4.decoded +++ b/libtests/qtest/predictors/12--32-1-4.decoded diff --git a/libtests/qtest/png_filter/in1 b/libtests/qtest/predictors/in1 index bb830ec..bb830ec 100644 --- a/libtests/qtest/png_filter/in1 +++ b/libtests/qtest/predictors/in1 diff --git a/libtests/qtest/png_filter/in2 b/libtests/qtest/predictors/in2 index 430a074..430a074 100644 --- a/libtests/qtest/png_filter/in2 +++ b/libtests/qtest/predictors/in2 diff --git a/libtests/qtest/png_filter/out1 b/libtests/qtest/predictors/out1 index 5625f33..5625f33 100644 --- a/libtests/qtest/png_filter/out1 +++ b/libtests/qtest/predictors/out1 diff --git a/libtests/qtest/png_filter/out2 b/libtests/qtest/predictors/out2 index dad129d..dad129d 100644 --- a/libtests/qtest/png_filter/out2 +++ b/libtests/qtest/predictors/out2