d3dxof: Add object separators tests for binary format.
This commit is contained in:
parent
2df8998dbd
commit
f63da07505
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Some unit tests for d3dxof
|
||||
*
|
||||
* Copyright (C) 2008 Christian Costa
|
||||
* Copyright (C) 2008, 2013 Christian Costa
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -25,6 +25,19 @@
|
|||
#include "initguid.h"
|
||||
#include "dxfile.h"
|
||||
|
||||
#define I2(x) x,0
|
||||
#define I4(x) x,0,0,0
|
||||
|
||||
#define TOKEN_NAME I2(1)
|
||||
#define TOKEN_INTEGER I2(3)
|
||||
#define TOKEN_INTEGER_LIST I2(6)
|
||||
#define TOKEN_OBRACE I2(10)
|
||||
#define TOKEN_CBRACE I2(11)
|
||||
#define TOKEN_COMMA I2(19)
|
||||
#define TOKEN_SEMICOLON I2(20)
|
||||
|
||||
#define SEMICOLON_5X TOKEN_SEMICOLON, TOKEN_SEMICOLON, TOKEN_SEMICOLON, TOKEN_SEMICOLON, TOKEN_SEMICOLON
|
||||
|
||||
static inline void debugstr_guid( char* buf, CONST GUID *id )
|
||||
{
|
||||
sprintf(buf, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
|
@ -127,6 +140,15 @@ static char object_syntax_semicolon_txt[] =
|
|||
"5;\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_semicolon_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_SEMICOLON, TOKEN_INTEGER, I4(1), TOKEN_SEMICOLON, TOKEN_INTEGER, I4(2), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_comma_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -136,6 +158,15 @@ static char object_syntax_comma_txt[] =
|
|||
"5,\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_comma_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_COMMA,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_COMMA, TOKEN_INTEGER, I4(1), TOKEN_COMMA, TOKEN_INTEGER, I4(2), TOKEN_COMMA,
|
||||
TOKEN_INTEGER, I4(5), TOKEN_COMMA,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_multi_semicolons_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -145,6 +176,15 @@ static char object_syntax_multi_semicolons_txt[] =
|
|||
"5;;;;;\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_multi_semicolons_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), SEMICOLON_5X,
|
||||
TOKEN_INTEGER, I4(0), SEMICOLON_5X, TOKEN_INTEGER, I4(1), SEMICOLON_5X, TOKEN_INTEGER, I4(2), SEMICOLON_5X,
|
||||
TOKEN_INTEGER, I4(5), SEMICOLON_5X,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_multi_commas_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -154,6 +194,15 @@ static char object_syntax_multi_commas_txt[] =
|
|||
"5;\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_multi_commas_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_COMMA, TOKEN_INTEGER, I4(1), TOKEN_COMMA, TOKEN_COMMA, TOKEN_INTEGER, I4(2), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_multi_semicolons_and_comma_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -163,6 +212,15 @@ static char object_syntax_multi_semicolons_and_comma_txt[] =
|
|||
"5;;;;;,\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_multi_semicolons_and_comma_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), SEMICOLON_5X, TOKEN_COMMA,
|
||||
TOKEN_INTEGER, I4(0), SEMICOLON_5X, TOKEN_COMMA, TOKEN_INTEGER, I4(1), SEMICOLON_5X, TOKEN_COMMA, TOKEN_INTEGER, I4(2), SEMICOLON_5X, TOKEN_COMMA,
|
||||
TOKEN_INTEGER, I4(5), SEMICOLON_5X, TOKEN_COMMA,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_comma_and_semicolon_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -172,6 +230,15 @@ static char object_syntax_comma_and_semicolon_txt[] =
|
|||
"5;\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_comma_and_semicolon_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_COMMA, TOKEN_INTEGER, I4(1), TOKEN_COMMA, TOKEN_SEMICOLON, TOKEN_INTEGER, I4(2), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_no_ending_separator_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -181,6 +248,15 @@ static char object_syntax_no_ending_separator_txt[] =
|
|||
"5\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_no_ending_separator_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_COMMA, TOKEN_INTEGER, I4(1), TOKEN_COMMA, TOKEN_INTEGER, I4(2), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(5),
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_array_no_separator_txt[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"Buffer\n"
|
||||
|
@ -190,6 +266,45 @@ static char object_syntax_array_no_separator_txt[] =
|
|||
"5;\n"
|
||||
"}\n";
|
||||
|
||||
static char object_syntax_array_no_separator_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(0), TOKEN_INTEGER, I4(1), TOKEN_INTEGER, I4(2), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER, I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_full_integer_list_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER, I4(3), TOKEN_SEMICOLON,
|
||||
TOKEN_INTEGER_LIST, I4(3), I4(0), I4(1), I4(2),
|
||||
TOKEN_INTEGER, I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_mixed_integer_list_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER_LIST, I4(5), I4(3), I4(0), I4(1), I4(2), I4(5),
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_integer_list_semicolon_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER_LIST, I4(5), I4(3), I4(0), I4(1), I4(2), I4(5), TOKEN_SEMICOLON,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char object_syntax_integer_list_comma_bin[] = {
|
||||
'x','o','f',' ','0','3','0','2','b','i','n',' ','0','0','6','4',
|
||||
TOKEN_NAME, /* size */ I4(6), /* name */ 'B','u','f','f','e','r', TOKEN_OBRACE,
|
||||
TOKEN_INTEGER_LIST, I4(5), I4(3), I4(0), I4(1), I4(2), I4(5), TOKEN_COMMA,
|
||||
TOKEN_CBRACE
|
||||
};
|
||||
|
||||
static char template_syntax_string[] =
|
||||
"xof 0302txt 0064\n"
|
||||
"template Filename\n"
|
||||
|
@ -751,34 +866,74 @@ static void test_syntax_semicolon_comma(void)
|
|||
/* Test semicolon separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_semicolon_txt, sizeof(object_syntax_semicolon_txt) - 1);
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
/* Test semicolon separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_semicolon_bin, sizeof(object_syntax_semicolon_bin));
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test comma separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_comma_txt, sizeof(object_syntax_comma_txt) - 1);
|
||||
ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
/* Test comma separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_comma_bin, sizeof(object_syntax_comma_bin));
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test multi-semicolons separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_semicolons_txt, sizeof(object_syntax_multi_semicolons_txt) - 1);
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
/* Test multi-semicolons separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_semicolons_bin, sizeof(object_syntax_multi_semicolons_bin));
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test multi-commas separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_commas_txt, sizeof(object_syntax_multi_semicolons_txt) - 1);
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
/* Test multi-commas separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_commas_bin, sizeof(object_syntax_multi_semicolons_bin));
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
/* Test multi-semicolons + single comma separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_semicolons_and_comma_txt, sizeof(object_syntax_multi_semicolons_and_comma_txt) - 1);
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
/* Test multi-semicolons + single comma separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_multi_semicolons_and_comma_bin, sizeof(object_syntax_multi_semicolons_and_comma_bin));
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test comma + semicolon separators in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_comma_and_semicolon_txt, sizeof(object_syntax_comma_and_semicolon_txt) - 1);
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
/* Test comma + semicolon separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_comma_and_semicolon_bin, sizeof(object_syntax_comma_and_semicolon_bin));
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
/* Test no ending separator in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_no_ending_separator_txt, sizeof(object_syntax_no_ending_separator_txt) - 1);
|
||||
todo_wine ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
/* Test no ending separator in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_no_ending_separator_bin, sizeof(object_syntax_no_ending_separator_bin));
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
/* Test no array separator in text mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_array_no_separator_txt, sizeof(object_syntax_array_no_separator_txt) - 1);
|
||||
todo_wine ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
/* Test no array separator in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_array_no_separator_bin, sizeof(object_syntax_array_no_separator_bin));
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
/* Test object with a single integer list in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_full_integer_list_bin, sizeof(object_syntax_full_integer_list_bin));
|
||||
todo_wine ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test object with mixed integer list and integers + single comma separators in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_mixed_integer_list_bin, sizeof(object_syntax_mixed_integer_list_bin));
|
||||
ok(ret == DXFILE_OK, "test_buffer_object failed with %#x\n", ret);
|
||||
|
||||
/* Test integer list followed by a semicolon in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_integer_list_semicolon_bin, sizeof(object_syntax_integer_list_semicolon_bin));
|
||||
todo_wine ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
/* Test integer list followed by a comma in binary mode */
|
||||
ret = test_buffer_object(dxfile, object_syntax_integer_list_comma_bin, sizeof(object_syntax_integer_list_comma_bin));
|
||||
ok(ret == DXFILEERR_PARSEERROR, "test_buffer_object returned %#x, expected %#x\n", ret, DXFILEERR_PARSEERROR);
|
||||
|
||||
IDirectXFile_Release(dxfile);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue