testio.c: Read_*/Write_* functions
This commit is contained in:
parent
3947a2ffd3
commit
f4ec35d8e4
148
src/tests/testio.c
Normal file
148
src/tests/testio.c
Normal file
@ -0,0 +1,148 @@
|
||||
/* vim:expandtab:ts=2 sw=2:
|
||||
*/
|
||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||
|
||||
Copyright 2018-2020 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 <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
///@file testio.c
|
||||
/// Unit tests.
|
||||
///
|
||||
|
||||
#include "tests.h"
|
||||
#include "../struct.h"
|
||||
#include "../io.h"
|
||||
#include "../gfx2log.h"
|
||||
|
||||
int Test_Read_Write_byte(void)
|
||||
{
|
||||
char path[256];
|
||||
FILE * f;
|
||||
byte b = 0;
|
||||
|
||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
||||
f = fopen(path, "w+b");
|
||||
if (f == NULL)
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||
return 0;
|
||||
}
|
||||
if (!Write_byte(f, 42))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error writing\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
rewind(f);
|
||||
if (!Read_byte(f, &b))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error reading\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
if (b != 42)
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "Byte value mismatch\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
fclose(f);
|
||||
Remove_path(path);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Test_Read_Write_word(void)
|
||||
{
|
||||
char path[256];
|
||||
FILE * f;
|
||||
word w1 = 0, w2 = 0;
|
||||
byte b = 0;
|
||||
|
||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
||||
f = fopen(path, "w+b");
|
||||
if (f == NULL)
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||
return 0;
|
||||
}
|
||||
// write bytes 12 34 56 78 90
|
||||
if (!Write_word_le(f, 0x3412) || !Write_word_be(f, 0x5678) || !Write_byte(f, 0x90))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error writing\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
rewind(f);
|
||||
if (!Read_byte(f, &b) || !Read_word_be(f, &w1) || !Read_word_le(f, &w2))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error reading\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
if ((b != 0x12) || (w1 != 0x3456) || (w2 != 0x9078))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "word values mismatch\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
fclose(f);
|
||||
Remove_path(path);
|
||||
return 1;
|
||||
}
|
||||
int Test_Read_Write_dword(void)
|
||||
{
|
||||
char path[256];
|
||||
FILE * f;
|
||||
dword dw1 = 0, dw2 = 0;
|
||||
byte b = 0;
|
||||
|
||||
snprintf(path, sizeof(path), "%s%stmp.bin", tmpdir, PATH_SEPARATOR);
|
||||
f = fopen(path, "w+b");
|
||||
if (f == NULL)
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error opening %s\n", path);
|
||||
return 0;
|
||||
}
|
||||
// write bytes 01 02 03 04 05 06 07 08 09
|
||||
if (!Write_dword_le(f, 0x04030201) || !Write_dword_be(f, 0x05060708) || !Write_byte(f, 9))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error writing\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
rewind(f);
|
||||
if (!Read_byte(f, &b) || !Read_dword_be(f, &dw1) || !Read_dword_le(f, &dw2))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "error reading\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
if ((b != 0x1) || (dw1 != 0x02030405) || (dw2 != 0x09080706))
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "word values mismatch\n");
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
fclose(f);
|
||||
Remove_path(path);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
/* list of tests
|
||||
* TEST(function_to_test) */
|
||||
|
||||
TEST(Read_Write_byte)
|
||||
TEST(Read_Write_word)
|
||||
TEST(Read_Write_dword)
|
||||
|
||||
TEST(MOTO_MAP_pack)
|
||||
TEST(CPC_compare_colors)
|
||||
TEST(Packbits)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user