summaryrefslogtreecommitdiffstats
path: root/winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c
diff options
context:
space:
mode:
Diffstat (limited to 'winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c')
-rw-r--r--winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c b/winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c
new file mode 100644
index 0000000..714522a
--- /dev/null
+++ b/winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c
@@ -0,0 +1,56 @@
+
+#include <stdio.h>
+#include <winpr/crt.h>
+#include <winpr/path.h>
+#include <winpr/tchar.h>
+#include <winpr/windows.h>
+#include <winpr/library.h>
+
+int TestLibraryGetModuleFileName(int argc, char* argv[])
+{
+ char ModuleFileName[4096];
+ DWORD len = 0;
+ WINPR_UNUSED(argc);
+ WINPR_UNUSED(argv);
+ /* Test insufficient buffer size behaviour */
+ SetLastError(ERROR_SUCCESS);
+ len = GetModuleFileNameA(NULL, ModuleFileName, 2);
+ if (len != 2)
+ {
+ printf("%s: GetModuleFileNameA unexpectedly returned %" PRIu32 " instead of 2\n", __func__,
+ len);
+ return -1;
+ }
+ if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+ {
+ printf("%s: Invalid last error value: 0x%08" PRIX32
+ ". Expected 0x%08X (ERROR_INSUFFICIENT_BUFFER)\n",
+ __func__, GetLastError(), ERROR_INSUFFICIENT_BUFFER);
+ return -1;
+ }
+
+ /* Test with real/sufficient buffer size */
+ SetLastError(ERROR_SUCCESS);
+ len = GetModuleFileNameA(NULL, ModuleFileName, sizeof(ModuleFileName));
+ if (len == 0)
+ {
+ printf("%s: GetModuleFileNameA failed with error 0x%08" PRIX32 "\n", __func__,
+ GetLastError());
+ return -1;
+ }
+ if (len == sizeof(ModuleFileName))
+ {
+ printf("%s: GetModuleFileNameA unexpectedly returned nSize\n", __func__);
+ return -1;
+ }
+ if (GetLastError() != ERROR_SUCCESS)
+ {
+ printf("%s: Invalid last error value: 0x%08" PRIX32 ". Expected 0x%08X (ERROR_SUCCESS)\n",
+ __func__, GetLastError(), ERROR_SUCCESS);
+ return -1;
+ }
+
+ printf("GetModuleFileNameA: %s\n", ModuleFileName);
+
+ return 0;
+}