d3dxof: Add test for more complex object.

This commit is contained in:
Christian Costa 2013-06-06 23:30:17 +02:00 committed by Alexandre Julliard
parent ad008e223a
commit 65d7a8b3d1
1 changed files with 77 additions and 0 deletions

View File

@ -327,6 +327,46 @@ static char object_syntax_string_with_separator[] =
"\"foo;bar\";\n"
"}\n";
static char templates_complex_object[] =
"xof 0302txt 0064\n"
"template Vector\n"
"{\n"
"<3D82AB5E-62DA-11CF-AB39-0020AF71E433>\n"
"FLOAT x;\n"
"FLOAT y;\n"
"FLOAT z;\n"
"}\n"
"template MeshFace\n"
"{\n"
"<3D82AB5F-62DA-11CF-AB39-0020AF71E433>\n"
"DWORD nFaceVertexIndices;\n"
"array DWORD faceVertexIndices[nFaceVertexIndices];\n"
"}\n"
"template Mesh\n"
"{\n"
"<3D82AB44-62DA-11CF-AB39-0020AF71E433>\n"
"DWORD nVertices;\n"
"array Vector vertices[nVertices];\n"
"DWORD nFaces;\n"
"array MeshFace faces[nFaces];\n"
"[...]\n"
"}\n";
static char object_complex[] =
"xof 0302txt 0064\n"
"Mesh Object\n"
"{\n"
"4;;;,\n"
"1.0;;;, 0.0;;;, 0.0;;;,\n"
"0.0;;;, 1.0;;;, 0.0;;;,\n"
"0.0;;;, 0.0;;;, 1.0;;;,\n"
"1.0;;;, 1.0;;;, 1.0;;;,\n"
"3;;;,\n"
"3;;;, 0;;;, 1;;;, 2;;;,\n"
"3;;;, 1;;;, 2;;;, 3;;;,\n"
"3;;;, 3;;;, 1;;;, 2;;;,\n"
"}\n";
static void init_function_pointers(void)
{
/* We have to use LoadLibrary as no d3dxof functions are referenced directly */
@ -938,6 +978,42 @@ static void test_syntax_semicolon_comma(void)
IDirectXFile_Release(dxfile);
}
static void test_complex_object(void)
{
HRESULT ret;
IDirectXFile *dxfile = NULL;
IDirectXFileEnumObject *enum_object;
IDirectXFileData *file_data;
DXFILELOADMEMORY load_info;
if (!pDirectXFileCreate)
{
win_skip("DirectXFileCreate is not available\n");
return;
}
ret = pDirectXFileCreate(&dxfile);
ok(ret == DXFILE_OK, "DirectXFileCreate failed with %#x\n", ret);
if (!dxfile)
{
skip("Couldn't create DirectXFile interface\n");
return;
}
ret = IDirectXFile_RegisterTemplates(dxfile, templates_complex_object, sizeof(templates_complex_object) - 1);
ok(ret == DXFILE_OK, "IDirectXFileImpl_RegisterTemplates failed with %#x\n", ret);
load_info.lpMemory = object_complex;
load_info.dSize = sizeof(object_complex) - 1;
ret = IDirectXFile_CreateEnumObject(dxfile, &load_info, DXFILELOAD_FROMMEMORY, &enum_object);
ok(ret == DXFILE_OK, "IDirectXFile_CreateEnumObject failed with %#x\n", ret);
ret = IDirectXFileEnumObject_GetNextDataObject(enum_object, &file_data);
ok(ret == DXFILE_OK, "IDirectXFileEnumObject_GetNextDataObject failed with %#x\n", ret);
IDirectXFileData_Release(file_data);
IDirectXFileEnumObject_Release(enum_object);
IDirectXFile_Release(dxfile);
}
/* Set it to 1 to expand the string when dumping the object. This is useful when there is
* only one string in a sub-object (very common). Use with care, this may lead to a crash. */
#define EXPAND_STRING 0
@ -1122,6 +1198,7 @@ START_TEST(d3dxof)
test_getname();
test_syntax();
test_syntax_semicolon_comma();
test_complex_object();
test_dump();
FreeLibrary(hd3dxof);