diff --git a/src/Makefile b/src/Makefile index d4890fb1..eed6522a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -819,7 +819,7 @@ endif TESTSOBJS = $(patsubst %.c,%.o,$(wildcard tests/*.c)) \ miscfileformats.o fileformats.o oldies.o libraw2crtc.o \ - loadsavefuncs.o packbits.o \ + loadsavefuncs.o packbits.o tifformat.o \ op_c.o colorred.o \ unicode.o \ io.o realpath.o version.o pversion.o \ diff --git a/src/tests/testformats.c b/src/tests/testformats.c new file mode 100644 index 00000000..5288dab5 --- /dev/null +++ b/src/tests/testformats.c @@ -0,0 +1,117 @@ +/* vim:expandtab:ts=2 sw=2: +*/ +/* Grafx2 - The Ultimate 256-color bitmap paint program + + Copyright 2018-2019 Thomas Bernard + Copyright 2011 Pawel Góralski + Copyright 2009 Petter Lindquist + Copyright 2008 Yves Rizoud + Copyright 2008 Franck Charlet + Copyright 2007-2011 Adrien Destugues + Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) + + Grafx2 is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; version 2 + of the License. + + Grafx2 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grafx2; if not, see +*/ +///@file testformats.c +/// Unit tests for picture format loaders/savers +/// +#include +#include "../global.h" +#include "../fileformats.h" +#include "../gfx2log.h" + +#define TESTFMT(fmt, sample) { # fmt, Test_ ## fmt, sample }, +static const struct { + const char * name; + Func_IO_Test Test; + const char * sample; +} formats[] = { + TESTFMT(PKM, "EVILNUN.PKM") + TESTFMT(GIF, "gif/2b_horse.gif") + TESTFMT(PCX, "pcx/lena.pcx") + TESTFMT(NEO, "atari_st/ATARIART.NEO") + TESTFMT(PC1, "atari_st/eunmiisa.pc1") + TESTFMT(PI1, "atari_st/evolutn.pi1") + TESTFMT(FLI, "autodesk_FLI_FLC/2noppaa.fli") + TESTFMT(BMP, "bmp/test16bf565.bmp") + TESTFMT(ICO, "ico/gitlab_favicon.ico") + TESTFMT(C64, "c64/multicolor/ARKANOID.KOA") + TESTFMT(GPX, "c64/pixcen/Cyberbird.gpx") + //TESTFMT(SCR, "CPC_SCR/DANCEOFF.SCR") + TESTFMT(MOTO,"thomson/exocet-alientis.map") + TESTFMT(HGR, "apple2/hgr/pop-swordfight.hgr") + TESTFMT(ACBM,"iff/ACBM/Jupiter_alt.pic") + TESTFMT(LBM, "iff/Danny_SkyTravellers_ANNO.iff") + TESTFMT(PBM, "iff/pbm/FC.LBM") + TESTFMT(INFO,"amiga_icons/4colors/Utilities/Calculator.info") +#ifndef __no_pnglib__ + TESTFMT(PNG, "png/happy-birthday-guys.png") +#endif +#ifndef __no_tifflib__ + TESTFMT(TIFF,"tiff/grafx2_banner.tif") +#endif + TESTFMT(GPL, "palette-mariage_115.gpl") + TESTFMT(PAL, "pal/dp4_256.pal") + { NULL, NULL, NULL} +}; + +int Test_Formats(void) +{ + char path[256]; + FILE * f; + int i, j; + + for (i = 0; formats[i].name != NULL; i++) + { + GFX2_Log(GFX2_DEBUG, "Testing format %s\n", formats[i].name); + // first check that the right sample is recognized + snprintf(path, sizeof(path), "../tests/pic-samples/%s", formats[i].sample); + f = fopen(path, "rb"); + if (f == NULL) + { + GFX2_Log(GFX2_ERROR, "error opening %s\n", path); + return 0; + } + File_error = 1; + formats[i].Test(NULL, f); + fclose(f); + if (File_error != 0) + { + GFX2_Log(GFX2_ERROR, "Test_%s failed for file %s\n", formats[i].name, formats[i].sample); + return 0; + } + // now check that all other samples are not recognized + for (j = 0; formats[j].name != NULL; j++) + { + if (j == i) + continue; + snprintf(path, sizeof(path), "../tests/pic-samples/%s", formats[j].sample); + f = fopen(path, "rb"); + if (f == NULL) + { + GFX2_Log(GFX2_ERROR, "error opening %s\n", path); + return 0; + } + File_error = 1; + formats[i].Test(NULL, f); + fclose(f); + if (File_error == 0) + { + GFX2_Log(GFX2_ERROR, "Test_%s failed for file %s\n", formats[i].name, formats[j].sample); + return 0; + } + } + } + return 1; // OK +} diff --git a/src/tests/testlist.h b/src/tests/testlist.h index 0f6842b9..cbf5f6e3 100644 --- a/src/tests/testlist.h +++ b/src/tests/testlist.h @@ -5,3 +5,4 @@ TEST(MOTO_MAP_pack) TEST(CPC_compare_colors) TEST(Packbits) TEST(Convert_24b_bitmap_to_256) +TEST(Formats)