Christian Costa : d3dxof: Add test for more complex object.
Alexandre Julliard
julliard at winehq.org
Fri Jun 7 11:45:12 CDT 2013
Module: wine
Branch: master
Commit: 65d7a8b3d10a35b619c0b2da25dfe243b4e189f8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=65d7a8b3d10a35b619c0b2da25dfe243b4e189f8
Author: Christian Costa <titan.costa at gmail.com>
Date: Thu Jun 6 23:30:17 2013 +0200
d3dxof: Add test for more complex object.
---
dlls/d3dxof/tests/d3dxof.c | 77 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 77 insertions(+), 0 deletions(-)
diff --git a/dlls/d3dxof/tests/d3dxof.c b/dlls/d3dxof/tests/d3dxof.c
index 83fd23d..8d322ad 100644
--- a/dlls/d3dxof/tests/d3dxof.c
+++ b/dlls/d3dxof/tests/d3dxof.c
@@ -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);
More information about the wine-cvs
mailing list