[PATCH 5/5] d3dx9/tests: Create the asm shader test files under the temporary files directory. (resend)
Matteo Bruni
mbruni at codeweavers.com
Mon Aug 25 13:36:54 CDT 2014
---
dlls/d3dx9_36/tests/asm.c | 127 ++++++++++++++++++++++++++++++----------------
1 file changed, 84 insertions(+), 43 deletions(-)
diff --git a/dlls/d3dx9_36/tests/asm.c b/dlls/d3dx9_36/tests/asm.c
index 3ee501e..4087bd8 100644
--- a/dlls/d3dx9_36/tests/asm.c
+++ b/dlls/d3dx9_36/tests/asm.c
@@ -24,22 +24,61 @@
#include "resources.h"
-static HRESULT create_file(const char *filename, const char *data, const unsigned int size)
+static char temp_path[MAX_PATH];
+
+static BOOL create_file(const char *filename, const char *data, const unsigned int size, char *out_path)
{
- DWORD received;
+ DWORD written;
HANDLE hfile;
+ char path[MAX_PATH];
+
+ if (!*temp_path)
+ GetTempPathA(sizeof(temp_path), temp_path);
- hfile = CreateFileA(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
- if(hfile == INVALID_HANDLE_VALUE) return HRESULT_FROM_WIN32(GetLastError());
+ strcpy(path, temp_path);
+ strcat(path, filename);
+ hfile = CreateFileA(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
+ if (hfile == INVALID_HANDLE_VALUE)
+ return FALSE;
- if(WriteFile(hfile, data, size, &received, NULL))
+ if (WriteFile(hfile, data, size, &written, NULL))
{
CloseHandle(hfile);
- return D3D_OK;
+
+ if (out_path)
+ strcpy(out_path, path);
+ return TRUE;
}
CloseHandle(hfile);
- return D3DERR_INVALIDCALL;
+ return FALSE;
+}
+
+static void delete_file(const char *filename)
+{
+ char path[MAX_PATH];
+
+ strcpy(path, temp_path);
+ strcat(path, filename);
+ DeleteFileA(path);
+}
+
+static BOOL create_directory(const char *name)
+{
+ char path[MAX_PATH];
+
+ strcpy(path, temp_path);
+ strcat(path, name);
+ return CreateDirectoryA(path, NULL);
+}
+
+static void delete_directory(const char *name)
+{
+ char path[MAX_PATH];
+
+ strcpy(path, temp_path);
+ strcat(path, name);
+ RemoveDirectoryA(path);
}
static HRESULT WINAPI testD3DXInclude_open(ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type,
@@ -155,7 +194,7 @@ static void assembleshader_test(void)
}
};
struct D3DXIncludeImpl include;
- HRESULT shader_vsh_res;
+ char shader_vsh_path[MAX_PATH], shader3_vsh_path[MAX_PATH];
static const WCHAR shader_filename_w[] = {'s','h','a','d','e','r','.','v','s','h',0};
/* pDefines test */
@@ -242,14 +281,14 @@ static void assembleshader_test(void)
if (shader)
ID3DXBuffer_Release(shader);
- shader_vsh_res = create_file("shader.vsh", testshader, sizeof(testshader) - 1);
- if(SUCCEEDED(shader_vsh_res)) {
- create_file("incl.vsh", testincl, sizeof(testincl) - 1);
+ if (create_file("shader.vsh", testshader, sizeof(testshader) - 1, shader_vsh_path))
+ {
+ create_file("incl.vsh", testincl, sizeof(testincl) - 1, NULL);
/* D3DXAssembleShaderFromFile + #include test */
shader = NULL;
messages = NULL;
- hr = D3DXAssembleShaderFromFileA("shader.vsh",
+ hr = D3DXAssembleShaderFromFileA(shader_vsh_path,
NULL, NULL, D3DXSHADER_SKIPVALIDATION,
&shader, &messages);
ok(hr == D3D_OK, "D3DXAssembleShaderFromFile test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
@@ -271,16 +310,17 @@ static void assembleshader_test(void)
}
if(shader) ID3DXBuffer_Release(shader);
- create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1);
- create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1);
- if(CreateDirectoryA("include", NULL)) {
- create_file("include/incl3.vsh", testincl3, sizeof(testincl3) - 1);
- create_file("include/incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1);
+ create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1, shader3_vsh_path);
+ create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1, NULL);
+ if (create_directory("include"))
+ {
+ create_file("include\\incl3.vsh", testincl3, sizeof(testincl3) - 1, NULL);
+ create_file("include\\incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1, NULL);
/* path search #include test */
shader = NULL;
messages = NULL;
- hr = D3DXAssembleShaderFromFileA("shader3.vsh", NULL, NULL,
+ hr = D3DXAssembleShaderFromFileA(shader3_vsh_path, NULL, NULL,
D3DXSHADER_SKIPVALIDATION,
&shader, &messages);
ok(hr == D3D_OK, "D3DXAssembleShaderFromFile path search test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
@@ -291,13 +331,13 @@ static void assembleshader_test(void)
if(shader) ID3DXBuffer_Release(shader);
} else skip("Couldn't create \"include\" directory\n");
- DeleteFileA("shader.vsh");
- DeleteFileA("incl.vsh");
- DeleteFileA("shader3.vsh");
- DeleteFileA("incl4.vsh");
- DeleteFileA("include/incl3.vsh");
- DeleteFileA("include/incl4.vsh");
- RemoveDirectoryA("include");
+ delete_file("shader.vsh");
+ delete_file("incl.vsh");
+ delete_file("shader3.vsh");
+ delete_file("incl4.vsh");
+ delete_file("include\\incl3.vsh");
+ delete_file("include\\incl4.vsh");
+ delete_directory("include");
/* The main shader is also to be loaded through the ID3DXInclude object. */
shader = NULL;
@@ -403,23 +443,24 @@ static void d3dxpreprocess_test(void)
"#error \"wrong include\"\n";
HRESULT hr;
ID3DXBuffer *shader, *messages;
- HRESULT shader_vsh_res;
+ char shader_vsh_path[MAX_PATH], shader3_vsh_path[MAX_PATH];
static struct D3DXIncludeImpl include = {{&D3DXInclude_Vtbl}};
static const WCHAR shader_filename_w[] = {'s','h','a','d','e','r','.','v','s','h',0};
- shader_vsh_res = create_file("shader.vsh", testshader, sizeof(testshader) - 1);
- if(SUCCEEDED(shader_vsh_res)) {
- create_file("incl.vsh", testincl, sizeof(testincl) - 1);
- create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1);
- create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1);
- if(CreateDirectoryA("include", NULL)) {
- create_file("include/incl3.vsh", testincl3, sizeof(testincl3) - 1);
- create_file("include/incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1);
+ if (create_file("shader.vsh", testshader, sizeof(testshader) - 1, shader_vsh_path))
+ {
+ create_file("incl.vsh", testincl, sizeof(testincl) - 1, NULL);
+ create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1, shader3_vsh_path);
+ create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1, NULL);
+ if (create_directory("include"))
+ {
+ create_file("include\\incl3.vsh", testincl3, sizeof(testincl3) - 1, NULL);
+ create_file("include\\incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1, NULL);
/* path search #include test */
shader = NULL;
messages = NULL;
- hr = D3DXPreprocessShaderFromFileA("shader3.vsh", NULL, NULL,
+ hr = D3DXPreprocessShaderFromFileA(shader3_vsh_path, NULL, NULL,
&shader, &messages);
ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile path search test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
if(messages) {
@@ -432,7 +473,7 @@ static void d3dxpreprocess_test(void)
/* D3DXPreprocessShaderFromFile + #include test */
shader = NULL;
messages = NULL;
- hr = D3DXPreprocessShaderFromFileA("shader.vsh",
+ hr = D3DXPreprocessShaderFromFileA(shader_vsh_path,
NULL, NULL,
&shader, &messages);
ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
@@ -454,13 +495,13 @@ static void d3dxpreprocess_test(void)
}
if(shader) ID3DXBuffer_Release(shader);
- DeleteFileA("shader.vsh");
- DeleteFileA("incl.vsh");
- DeleteFileA("shader3.vsh");
- DeleteFileA("incl4.vsh");
- DeleteFileA("include/incl3.vsh");
- DeleteFileA("include/incl4.vsh");
- RemoveDirectoryA("include");
+ delete_file("shader.vsh");
+ delete_file("incl.vsh");
+ delete_file("shader3.vsh");
+ delete_file("incl4.vsh");
+ delete_file("include\\incl3.vsh");
+ delete_file("include\\incl4.vsh");
+ delete_directory("include");
/* The main shader is also to be loaded through the ID3DXInclude object. */
shader = NULL;
--
1.8.5.5
More information about the wine-patches
mailing list