Test of CPC Formats
This commit is contained in:
parent
e2321c2abe
commit
64b2761f14
@ -27,9 +27,12 @@
|
|||||||
/// Unit tests for picture format loaders/savers
|
/// Unit tests for picture format loaders/savers
|
||||||
///
|
///
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "../global.h"
|
#include "../global.h"
|
||||||
#include "../fileformats.h"
|
#include "../fileformats.h"
|
||||||
#include "../gfx2log.h"
|
#include "../gfx2log.h"
|
||||||
|
#include "../gfx2mem.h"
|
||||||
|
|
||||||
#define TESTFMT(fmt, sample) { # fmt, Test_ ## fmt, sample },
|
#define TESTFMT(fmt, sample) { # fmt, Test_ ## fmt, sample },
|
||||||
static const struct {
|
static const struct {
|
||||||
@ -48,7 +51,9 @@ static const struct {
|
|||||||
TESTFMT(ICO, "ico/gitlab_favicon.ico")
|
TESTFMT(ICO, "ico/gitlab_favicon.ico")
|
||||||
TESTFMT(C64, "c64/multicolor/ARKANOID.KOA")
|
TESTFMT(C64, "c64/multicolor/ARKANOID.KOA")
|
||||||
TESTFMT(GPX, "c64/pixcen/Cyberbird.gpx")
|
TESTFMT(GPX, "c64/pixcen/Cyberbird.gpx")
|
||||||
//TESTFMT(SCR, "CPC_SCR/DANCEOFF.SCR")
|
TESTFMT(SCR, "CPC_SCR/DANCEOFF.SCR")
|
||||||
|
TESTFMT(CM5, "cpcmode5/spidey.cm5")
|
||||||
|
TESTFMT(PPH, "pph/BF.PPH")
|
||||||
TESTFMT(MOTO,"thomson/exocet-alientis.map")
|
TESTFMT(MOTO,"thomson/exocet-alientis.map")
|
||||||
TESTFMT(HGR, "apple2/hgr/pop-swordfight.hgr")
|
TESTFMT(HGR, "apple2/hgr/pop-swordfight.hgr")
|
||||||
TESTFMT(ACBM,"iff/ACBM/Jupiter_alt.pic")
|
TESTFMT(ACBM,"iff/ACBM/Jupiter_alt.pic")
|
||||||
@ -66,12 +71,41 @@ static const struct {
|
|||||||
{ NULL, NULL, NULL}
|
{ NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the context File_directory and File_name
|
||||||
|
*/
|
||||||
|
static void context_set_file_path(T_IO_Context * context, const char * filepath)
|
||||||
|
{
|
||||||
|
char * p = strrchr(filepath, '/');
|
||||||
|
|
||||||
|
if (context->File_name)
|
||||||
|
free(context->File_name);
|
||||||
|
if (context->File_directory)
|
||||||
|
free(context->File_directory);
|
||||||
|
|
||||||
|
if (p != NULL)
|
||||||
|
{
|
||||||
|
size_t dirlen = p - filepath;
|
||||||
|
context->File_name = strdup(p + 1);
|
||||||
|
context->File_directory = GFX2_malloc(dirlen + 1);
|
||||||
|
memcpy(context->File_directory, filepath, dirlen);
|
||||||
|
context->File_directory[dirlen] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
context->File_name = strdup(filepath);
|
||||||
|
context->File_directory = strdup(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int Test_Formats(void)
|
int Test_Formats(void)
|
||||||
{
|
{
|
||||||
|
T_IO_Context context;
|
||||||
char path[256];
|
char path[256];
|
||||||
FILE * f;
|
FILE * f;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
|
memset(&context, 0, sizeof(context));
|
||||||
for (i = 0; formats[i].name != NULL; i++)
|
for (i = 0; formats[i].name != NULL; i++)
|
||||||
{
|
{
|
||||||
GFX2_Log(GFX2_DEBUG, "Testing format %s\n", formats[i].name);
|
GFX2_Log(GFX2_DEBUG, "Testing format %s\n", formats[i].name);
|
||||||
@ -83,8 +117,9 @@ int Test_Formats(void)
|
|||||||
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
context_set_file_path(&context, path);
|
||||||
File_error = 1;
|
File_error = 1;
|
||||||
formats[i].Test(NULL, f);
|
formats[i].Test(&context, f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
if (File_error != 0)
|
if (File_error != 0)
|
||||||
{
|
{
|
||||||
@ -96,6 +131,9 @@ int Test_Formats(void)
|
|||||||
{
|
{
|
||||||
if (j == i)
|
if (j == i)
|
||||||
continue;
|
continue;
|
||||||
|
// skip Test_HGR(*.SCR) because Test_HGR() only tests for file size
|
||||||
|
if (strcmp(formats[i].name, "HGR") == 0 && strcmp(formats[j].name, "SCR") == 0)
|
||||||
|
continue;
|
||||||
snprintf(path, sizeof(path), "../tests/pic-samples/%s", formats[j].sample);
|
snprintf(path, sizeof(path), "../tests/pic-samples/%s", formats[j].sample);
|
||||||
f = fopen(path, "rb");
|
f = fopen(path, "rb");
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
@ -103,8 +141,9 @@ int Test_Formats(void)
|
|||||||
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
context_set_file_path(&context, path);
|
||||||
File_error = 1;
|
File_error = 1;
|
||||||
formats[i].Test(NULL, f);
|
formats[i].Test(&context, f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
if (File_error == 0)
|
if (File_error == 0)
|
||||||
{
|
{
|
||||||
@ -113,5 +152,8 @@ int Test_Formats(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Destroy_context(&context);
|
||||||
|
free(context.File_name);
|
||||||
|
free(context.File_directory);
|
||||||
return 1; // OK
|
return 1; // OK
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,8 +78,12 @@ static const struct {
|
|||||||
{ NULL, NULL}
|
{ NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializations for test program
|
||||||
|
*/
|
||||||
void init(void)
|
void init(void)
|
||||||
{
|
{
|
||||||
|
srandom(time(NULL));
|
||||||
#ifdef ENABLE_FILENAMES_ICONV
|
#ifdef ENABLE_FILENAMES_ICONV
|
||||||
// iconv is used to convert filenames
|
// iconv is used to convert filenames
|
||||||
cd = iconv_open(TOCODE, FROMCODE); // From UTF8 to ANSI
|
cd = iconv_open(TOCODE, FROMCODE); // From UTF8 to ANSI
|
||||||
@ -102,8 +106,8 @@ int main(int argc, char * * argv)
|
|||||||
int i, r;
|
int i, r;
|
||||||
int fail = 0;
|
int fail = 0;
|
||||||
|
|
||||||
srandom(time(NULL));
|
|
||||||
GFX2_verbosity_level = GFX2_DEBUG;
|
GFX2_verbosity_level = GFX2_DEBUG;
|
||||||
|
init();
|
||||||
|
|
||||||
for (i = 0; tests[i].test_func != 0; i++)
|
for (i = 0; tests[i].test_func != 0; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user