# HG changeset patch # User Matti Hamalainen # Date 1425579246 -7200 # Node ID 0f07f752cd73da9e8dde243064aa9ce281453369 # Parent 76c5bde4b94327212859b376149655a03d2c90d8 Rename one module under tests/ diff -r 76c5bde4b943 -r 0f07f752cd73 Makefile.gen --- a/Makefile.gen Thu Mar 05 17:56:31 2015 +0200 +++ b/Makefile.gen Thu Mar 05 20:14:06 2015 +0200 @@ -283,7 +283,7 @@ ### What tests to build? ifeq ($(DM_BUILD_TESTS),yes) -TESTS_BINARIES += vecmattest fptest evaltest testdmzlib +TESTS_BINARIES += vecmattest fptest evaltest dzlib endif FONTCONV_BIN=fontconv @@ -469,7 +469,7 @@ @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DM_ZLIB_LDFLAGS) -lm -$(TESTS_BINPATH)testdmzlib$(EXEEXT): $(OBJPATH)testdmzlib.o $(DMLIB_A) +$(TESTS_BINPATH)dzlib$(EXEEXT): $(OBJPATH)dzlib.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DM_ZLIB_LDFLAGS) diff -r 76c5bde4b943 -r 0f07f752cd73 tests/dzlib.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/dzlib.c Thu Mar 05 20:14:06 2015 +0200 @@ -0,0 +1,332 @@ +#include "dmlib.h" +#include "dmzlib.h" +#include "dmfile.h" +#include "dmargs.h" +#include + + +#define SET_TMPBUF_SIZE (16 * 1024) + +char *optInFilename = NULL, + *optOutFilename = NULL; + +unsigned int optSkip = 0; +unsigned int optCompressLevel = Z_BEST_COMPRESSION; +BOOL optCompress = FALSE, + optUseZLIB = FALSE; + + +static const DMOptArg optList[] = +{ + { 0, '?', "help", "Show this help", OPT_NONE }, + { 1, 'q', "quiet", "Decrease verbosity", OPT_NONE }, + { 2, 'Z', "zlib", "Use ZLIB instead of dmzlib", OPT_NONE }, + { 3, 'c', "compress", "Compress instead of decompressing (ZLIB only)", OPT_NONE }, + { 4, 'l', "level", "Set zlib compression level 1-9", OPT_ARGREQ }, + { 5, 's', "skip", "Skip bytes from input start", OPT_ARGREQ }, +}; + +static const int optListN = sizeof(optList) / sizeof(optList[0]); + + +void argShowHelp() +{ + dmPrintBanner(stdout, dmProgName, "[options] [input filename] [output filename]"); + dmArgsPrintHelp(stdout, optList, optListN, 0); +} + + +BOOL argHandleOpt(const int optN, char *optArg, char *currArg) +{ + (void) currArg; + + switch (optN) + { + case 0: + argShowHelp(); + exit(0); + break; + + case 1: + dmVerbosity = 0; + break; + + case 2: + optUseZLIB = TRUE; + break; + + case 3: + optCompress = TRUE; + break; + + case 4: + if (!dmGetIntVal(optArg, &optCompressLevel) || + optCompressLevel < 1 || optCompressLevel > 9) + { + dmErrorMsg("Invalid compression level argument '%s', must be 1 .. 9.\n", optArg); + return FALSE; + } + break; + + case 5: + if (!dmGetIntVal(optArg, &optSkip)) + { + dmErrorMsg("Invalid skip value.\n", optArg); + return FALSE; + } + break; + + default: + return FALSE; + } + + return TRUE; +} + + +BOOL argHandleFile(char *currArg) +{ + if (optInFilename == NULL) + optInFilename = currArg; + else + if (optOutFilename == NULL) + optOutFilename = currArg; + else + { + dmErrorMsg("Excess filenames specified.\n"); + return FALSE; + } + return TRUE; +} + + +int dmTestDMZlib(FILE *inFile, FILE *outFile, size_t *inSize, size_t *outSize, BOOL compress, int level) +{ + Uint8 *inBuffer = NULL, *outBuffer = NULL; + DMZLibContext ctx; + int ret; + + (void) level; + + if (compress) + { + ret = dmError(DMERR_NOT_SUPPORTED, + "Compression is not supported with dmzlib.\n"); + goto out; + } + + if ((ret = dmReadDataFile(inFile, "-", &inBuffer, inSize)) != DMERR_OK) + { + dmErrorMsg("Failed to read file.\n"); + goto out; + } + + if ((outBuffer = dmMalloc(SET_TMPBUF_SIZE)) == NULL) + { + ret = dmError(DMERR_MALLOC, + "Malloc failed.\n"); + goto out; + } + + // Initialize decompression structures + if ((ret = dmZLibInitInflate(&ctx)) != DMERR_OK) + goto out; + + ctx.inBuffer = ctx.inBufferStart = inBuffer; + ctx.inBufferEnd = inBuffer + *inSize; + + ctx.outBuffer = ctx.outBufferStart = outBuffer; + ctx.outBufferEnd = outBuffer + SET_TMPBUF_SIZE; + ctx.expandable = TRUE; + + // Attempt decompression + if ((ret = dmZLibParseHeader(&ctx, TRUE)) != DMERR_OK) + { + dmErrorMsg("Error parsing ZLIB header: %d, %s\n", ret, dmErrorStr(ret)); + goto out; + } + + if ((ret = dmZLibInflate(&ctx)) != DMERR_OK) + { + dmErrorMsg("Error in ZLIB decompress: %d, %s\n", ret, dmErrorStr(ret)); + goto out; + } + + outBuffer = ctx.outBufferStart; + *outSize = ctx.outBuffer - ctx.outBufferStart; + + if (fwrite(outBuffer, sizeof(Uint8), *outSize, outFile) != *outSize) + { + ret = dmError(DMERR_FWRITE, "File write error.\n"); + goto out; + } + +out: + dmZLibCloseInflate(&ctx); + dmFree(inBuffer); + dmFree(outBuffer); + return ret; +} + + +int dmTestZlib(FILE *inFile, FILE *outFile, size_t *inSize, size_t *outSize, BOOL compress, int level) +{ + Uint8 *inBuffer = NULL, *outBuffer = NULL; + int zret, zinit = FALSE; + int ret = DMERR_OK; + z_stream zstr; + + dmMsg(0, "Operating mode: %s\n", + compress ? "compress" : "decompress"); + + dmMemset(&zstr, 0, sizeof(zstr)); + + if ((inBuffer = malloc(SET_TMPBUF_SIZE)) == NULL || + (outBuffer = malloc(SET_TMPBUF_SIZE)) == NULL) + { + ret = dmError(DMERR_MALLOC, "Malloc failed.\n"); + goto out; + } + + if (compress) + zret = deflateInit(&zstr, level); + else + zret = inflateInit(&zstr); + + if (zret != Z_OK) + { + ret = dmError(DMERR_INIT_FAIL, "Zlib init fail.\n"); + goto out; + } + zinit = TRUE; + + // Initialize compression streams + zret = Z_OK; + *outSize = 0; + while (!feof(inFile) && zret == Z_OK) + { + zstr.avail_in = fread(inBuffer, sizeof(Uint8), SET_TMPBUF_SIZE, inFile); + + zstr.next_in = inBuffer; + zstr.next_out = outBuffer; + zstr.avail_out = SET_TMPBUF_SIZE; + zstr.total_out = 0; + + if (compress) + zret = deflate(&zstr, Z_FULL_FLUSH); + else + zret = inflate(&zstr, Z_FULL_FLUSH); + + if (zstr.total_out > 0) + { + *outSize += zstr.total_out; + if (fwrite(outBuffer, sizeof(Uint8), zstr.total_out, outFile) != zstr.total_out) + { + ret = dmError(DMERR_FWRITE, + "File write error.\n"); + goto out; + } + } + } + + + switch (zret) + { + case Z_OK: + break; + + case Z_ERRNO: + dmErrorMsg("Error: errno\n"); + break; + + case Z_STREAM_END: + dmErrorMsg("Stream end.\n"); + break; + + default: + ret = dmError(DMERR_COMPRESSION, + "Error: %d, %s\n", zret, zError(zret)); + } + +out: + *inSize = zstr.total_in; + + if (zinit) + { + if (compress) + deflateEnd(&zstr); + else + inflateEnd(&zstr); + } + + dmFree(inBuffer); + dmFree(outBuffer); + + return ret; +} + + +int main(int argc, char *argv[]) +{ + FILE *inFile = NULL, *outFile = NULL; + size_t inSize = 0, outSize = 0; + int ret; + + dmInitProg("testdmzlib", "ZLIB/dmzlib tester", NULL, NULL, NULL); + dmVerbosity = 1; + + if (!dmArgsProcess(argc, argv, optList, optListN, + argHandleOpt, argHandleFile, OPTH_BAILOUT)) + exit(1); + + dmZLibInit(); + + // Input and output files + if (optInFilename == NULL) + inFile = stdin; + else + if ((inFile = fopen(optInFilename, "rb")) == NULL) + { + int res = dmGetErrno(); + dmErrorMsg("Failed to open input file '%s': %s\n", + optInFilename, dmErrorStr(res)); + goto out; + } + + if (optOutFilename == NULL) + outFile = stdout; + else + if ((outFile = fopen(optOutFilename, "wb")) == NULL) + { + int res = dmGetErrno(); + dmErrorMsg("Failed to open output file '%s': %s\n", + optOutFilename, dmErrorStr(res)); + goto out; + } + + if (optSkip > 0 && fseeko(inFile, optSkip, SEEK_CUR) != 0) + { + int res = dmGetErrno(); + dmErrorMsg("Failed to seek in input stream: %s\n", + dmErrorStr(res)); + goto out; + } + + if (optUseZLIB) + ret = dmTestZlib(inFile, outFile, &inSize, &outSize, optCompress, optCompressLevel); + else + ret = dmTestDMZlib(inFile, outFile, &inSize, &outSize, optCompress, optCompressLevel); + + dmMsg(0, "[%d] In %d, out %d bytes.\n", ret, inSize, outSize); + +out: + // Cleanup + if (outFile != NULL) + fclose(outFile); + + if (inFile != NULL) + fclose(inFile); + + dmZLibClose(); + return 0; +} diff -r 76c5bde4b943 -r 0f07f752cd73 tests/testdmzlib.c --- a/tests/testdmzlib.c Thu Mar 05 17:56:31 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,332 +0,0 @@ -#include "dmlib.h" -#include "dmzlib.h" -#include "dmfile.h" -#include "dmargs.h" -#include - - -#define SET_TMPBUF_SIZE (16 * 1024) - -char *optInFilename = NULL, - *optOutFilename = NULL; - -unsigned int optSkip = 0; -unsigned int optCompressLevel = Z_BEST_COMPRESSION; -BOOL optCompress = FALSE, - optUseZLIB = FALSE; - - -static const DMOptArg optList[] = -{ - { 0, '?', "help", "Show this help", OPT_NONE }, - { 1, 'q', "quiet", "Decrease verbosity", OPT_NONE }, - { 2, 'Z', "zlib", "Use ZLIB instead of dmzlib", OPT_NONE }, - { 3, 'c', "compress", "Compress instead of decompressing (ZLIB only)", OPT_NONE }, - { 4, 'l', "level", "Set zlib compression level 1-9", OPT_ARGREQ }, - { 5, 's', "skip", "Skip bytes from input start", OPT_ARGREQ }, -}; - -static const int optListN = sizeof(optList) / sizeof(optList[0]); - - -void argShowHelp() -{ - dmPrintBanner(stdout, dmProgName, "[options] [input filename] [output filename]"); - dmArgsPrintHelp(stdout, optList, optListN, 0); -} - - -BOOL argHandleOpt(const int optN, char *optArg, char *currArg) -{ - (void) currArg; - - switch (optN) - { - case 0: - argShowHelp(); - exit(0); - break; - - case 1: - dmVerbosity = 0; - break; - - case 2: - optUseZLIB = TRUE; - break; - - case 3: - optCompress = TRUE; - break; - - case 4: - if (!dmGetIntVal(optArg, &optCompressLevel) || - optCompressLevel < 1 || optCompressLevel > 9) - { - dmErrorMsg("Invalid compression level argument '%s', must be 1 .. 9.\n", optArg); - return FALSE; - } - break; - - case 5: - if (!dmGetIntVal(optArg, &optSkip)) - { - dmErrorMsg("Invalid skip value.\n", optArg); - return FALSE; - } - break; - - default: - return FALSE; - } - - return TRUE; -} - - -BOOL argHandleFile(char *currArg) -{ - if (optInFilename == NULL) - optInFilename = currArg; - else - if (optOutFilename == NULL) - optOutFilename = currArg; - else - { - dmErrorMsg("Excess filenames specified.\n"); - return FALSE; - } - return TRUE; -} - - -int dmTestDMZlib(FILE *inFile, FILE *outFile, size_t *inSize, size_t *outSize, BOOL compress, int level) -{ - Uint8 *inBuffer = NULL, *outBuffer = NULL; - DMZLibContext ctx; - int ret; - - (void) level; - - if (compress) - { - ret = dmError(DMERR_NOT_SUPPORTED, - "Compression is not supported with dmzlib.\n"); - goto out; - } - - if ((ret = dmReadDataFile(inFile, "-", &inBuffer, inSize)) != DMERR_OK) - { - dmErrorMsg("Failed to read file.\n"); - goto out; - } - - if ((outBuffer = dmMalloc(SET_TMPBUF_SIZE)) == NULL) - { - ret = dmError(DMERR_MALLOC, - "Malloc failed.\n"); - goto out; - } - - // Initialize decompression structures - if ((ret = dmZLibInitInflate(&ctx)) != DMERR_OK) - goto out; - - ctx.inBuffer = ctx.inBufferStart = inBuffer; - ctx.inBufferEnd = inBuffer + *inSize; - - ctx.outBuffer = ctx.outBufferStart = outBuffer; - ctx.outBufferEnd = outBuffer + SET_TMPBUF_SIZE; - ctx.expandable = TRUE; - - // Attempt decompression - if ((ret = dmZLibParseHeader(&ctx, TRUE)) != DMERR_OK) - { - dmErrorMsg("Error parsing ZLIB header: %d, %s\n", ret, dmErrorStr(ret)); - goto out; - } - - if ((ret = dmZLibInflate(&ctx)) != DMERR_OK) - { - dmErrorMsg("Error in ZLIB decompress: %d, %s\n", ret, dmErrorStr(ret)); - goto out; - } - - outBuffer = ctx.outBufferStart; - *outSize = ctx.outBuffer - ctx.outBufferStart; - - if (fwrite(outBuffer, sizeof(Uint8), *outSize, outFile) != *outSize) - { - ret = dmError(DMERR_FWRITE, "File write error.\n"); - goto out; - } - -out: - dmZLibCloseInflate(&ctx); - dmFree(inBuffer); - dmFree(outBuffer); - return ret; -} - - -int dmTestZlib(FILE *inFile, FILE *outFile, size_t *inSize, size_t *outSize, BOOL compress, int level) -{ - Uint8 *inBuffer = NULL, *outBuffer = NULL; - int zret, zinit = FALSE; - int ret = DMERR_OK; - z_stream zstr; - - dmMsg(0, "Operating mode: %s\n", - compress ? "compress" : "decompress"); - - dmMemset(&zstr, 0, sizeof(zstr)); - - if ((inBuffer = malloc(SET_TMPBUF_SIZE)) == NULL || - (outBuffer = malloc(SET_TMPBUF_SIZE)) == NULL) - { - ret = dmError(DMERR_MALLOC, "Malloc failed.\n"); - goto out; - } - - if (compress) - zret = deflateInit(&zstr, level); - else - zret = inflateInit(&zstr); - - if (zret != Z_OK) - { - ret = dmError(DMERR_INIT_FAIL, "Zlib init fail.\n"); - goto out; - } - zinit = TRUE; - - // Initialize compression streams - zret = Z_OK; - *outSize = 0; - while (!feof(inFile) && zret == Z_OK) - { - zstr.avail_in = fread(inBuffer, sizeof(Uint8), SET_TMPBUF_SIZE, inFile); - - zstr.next_in = inBuffer; - zstr.next_out = outBuffer; - zstr.avail_out = SET_TMPBUF_SIZE; - zstr.total_out = 0; - - if (compress) - zret = deflate(&zstr, Z_FULL_FLUSH); - else - zret = inflate(&zstr, Z_FULL_FLUSH); - - if (zstr.total_out > 0) - { - *outSize += zstr.total_out; - if (fwrite(outBuffer, sizeof(Uint8), zstr.total_out, outFile) != zstr.total_out) - { - ret = dmError(DMERR_FWRITE, - "File write error.\n"); - goto out; - } - } - } - - - switch (zret) - { - case Z_OK: - break; - - case Z_ERRNO: - dmErrorMsg("Error: errno\n"); - break; - - case Z_STREAM_END: - dmErrorMsg("Stream end.\n"); - break; - - default: - ret = dmError(DMERR_COMPRESSION, - "Error: %d, %s\n", zret, zError(zret)); - } - -out: - *inSize = zstr.total_in; - - if (zinit) - { - if (compress) - deflateEnd(&zstr); - else - inflateEnd(&zstr); - } - - dmFree(inBuffer); - dmFree(outBuffer); - - return ret; -} - - -int main(int argc, char *argv[]) -{ - FILE *inFile = NULL, *outFile = NULL; - size_t inSize = 0, outSize = 0; - int ret; - - dmInitProg("testdmzlib", "ZLIB/dmzlib tester", NULL, NULL, NULL); - dmVerbosity = 1; - - if (!dmArgsProcess(argc, argv, optList, optListN, - argHandleOpt, argHandleFile, OPTH_BAILOUT)) - exit(1); - - dmZLibInit(); - - // Input and output files - if (optInFilename == NULL) - inFile = stdin; - else - if ((inFile = fopen(optInFilename, "rb")) == NULL) - { - int res = dmGetErrno(); - dmErrorMsg("Failed to open input file '%s': %s\n", - optInFilename, dmErrorStr(res)); - goto out; - } - - if (optOutFilename == NULL) - outFile = stdout; - else - if ((outFile = fopen(optOutFilename, "wb")) == NULL) - { - int res = dmGetErrno(); - dmErrorMsg("Failed to open output file '%s': %s\n", - optOutFilename, dmErrorStr(res)); - goto out; - } - - if (optSkip > 0 && fseeko(inFile, optSkip, SEEK_CUR) != 0) - { - int res = dmGetErrno(); - dmErrorMsg("Failed to seek in input stream: %s\n", - dmErrorStr(res)); - goto out; - } - - if (optUseZLIB) - ret = dmTestZlib(inFile, outFile, &inSize, &outSize, optCompress, optCompressLevel); - else - ret = dmTestDMZlib(inFile, outFile, &inSize, &outSize, optCompress, optCompressLevel); - - dmMsg(0, "[%d] In %d, out %d bytes.\n", ret, inSize, outSize); - -out: - // Cleanup - if (outFile != NULL) - fclose(outFile); - - if (inFile != NULL) - fclose(inFile); - - dmZLibClose(); - return 0; -}