Read_Write_bytes
This commit is contained in:
parent
eb0effaf3f
commit
62422ed6ed
@ -27,18 +27,26 @@
|
|||||||
/// Unit tests.
|
/// Unit tests.
|
||||||
///
|
///
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "tests.h"
|
#include "tests.h"
|
||||||
#include "../struct.h"
|
#include "../struct.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
|
#include "../gfx2mem.h"
|
||||||
#include "../gfx2log.h"
|
#include "../gfx2log.h"
|
||||||
|
|
||||||
|
// random()/srandom() not available with mingw32
|
||||||
|
#if defined(WIN32)
|
||||||
|
#define random (long)rand
|
||||||
|
#endif
|
||||||
|
|
||||||
int Test_Read_Write_byte(void)
|
int Test_Read_Write_byte(void)
|
||||||
{
|
{
|
||||||
char path[256];
|
char path[256];
|
||||||
FILE * f;
|
FILE * f;
|
||||||
byte b = 0;
|
byte b = 0;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
snprintf(path, sizeof(path), "%s%sbyte.bin", tmpdir, PATH_SEPARATOR);
|
||||||
f = fopen(path, "w+b");
|
f = fopen(path, "w+b");
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
@ -76,7 +84,7 @@ int Test_Read_Write_word(void)
|
|||||||
word w1 = 0, w2 = 0;
|
word w1 = 0, w2 = 0;
|
||||||
byte b = 0;
|
byte b = 0;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
snprintf(path, sizeof(path), "%s%sword.bin", tmpdir, PATH_SEPARATOR);
|
||||||
f = fopen(path, "w+b");
|
f = fopen(path, "w+b");
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
@ -107,6 +115,7 @@ int Test_Read_Write_word(void)
|
|||||||
Remove_path(path);
|
Remove_path(path);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Test_Read_Write_dword(void)
|
int Test_Read_Write_dword(void)
|
||||||
{
|
{
|
||||||
char path[256];
|
char path[256];
|
||||||
@ -114,7 +123,7 @@ int Test_Read_Write_dword(void)
|
|||||||
dword dw1 = 0, dw2 = 0;
|
dword dw1 = 0, dw2 = 0;
|
||||||
byte b = 0;
|
byte b = 0;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
snprintf(path, sizeof(path), "%s%sdword.bin", tmpdir, PATH_SEPARATOR);
|
||||||
f = fopen(path, "w+b");
|
f = fopen(path, "w+b");
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
@ -145,4 +154,70 @@ int Test_Read_Write_dword(void)
|
|||||||
Remove_path(path);
|
Remove_path(path);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
int Test_Read_Write_bytes(void)
|
||||||
|
{
|
||||||
|
char path[256];
|
||||||
|
FILE * f;
|
||||||
|
unsigned long len;
|
||||||
|
byte * buffer;
|
||||||
|
byte b;
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s%sbytes.bin", tmpdir, PATH_SEPARATOR);
|
||||||
|
f = fopen(path, "w+b");
|
||||||
|
if (f == NULL)
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
b = (byte)random();
|
||||||
|
len = 1000 + (random() & 0x3ff);
|
||||||
|
buffer = GFX2_malloc(len);
|
||||||
|
if (buffer == NULL)
|
||||||
|
{
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(buffer, b, len);
|
||||||
|
GFX2_Log(GFX2_DEBUG, "Writing %lu bytes 0x%02x\n", len, (int)b);
|
||||||
|
// write bytes
|
||||||
|
if (!Write_bytes(f, buffer, len))
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "error writing\n");
|
||||||
|
free(buffer);
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
rewind(f);
|
||||||
|
memset(buffer, 0, len);
|
||||||
|
if (!Read_bytes(f, buffer, len))
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "error reading\n");
|
||||||
|
free(buffer);
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!GFX2_is_mem_filled_with(buffer, b, len))
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "byte values mismatch\n");
|
||||||
|
free(buffer);
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
free(buffer);
|
||||||
|
if (File_length_file(f) != len)
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "File_length_file() returned %lu (should be %lu)\n",
|
||||||
|
File_length_file(f), len);
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
if (File_length(path) != len)
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "File_length() returned %lu (should be %lu)\n",
|
||||||
|
File_length(path), len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Remove_path(path);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
TEST(Read_Write_byte)
|
TEST(Read_Write_byte)
|
||||||
TEST(Read_Write_word)
|
TEST(Read_Write_word)
|
||||||
TEST(Read_Write_dword)
|
TEST(Read_Write_dword)
|
||||||
|
TEST(Read_Write_bytes)
|
||||||
|
|
||||||
TEST(MOTO_MAP_pack)
|
TEST(MOTO_MAP_pack)
|
||||||
TEST(CPC_compare_colors)
|
TEST(CPC_compare_colors)
|
||||||
|
|||||||
@ -32,6 +32,9 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#if defined(WIN32)
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
#include "../struct.h"
|
#include "../struct.h"
|
||||||
#include "../global.h"
|
#include "../global.h"
|
||||||
#include "../gfx2log.h"
|
#include "../gfx2log.h"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user