---
 mingw-w64-crt/testcases/t_findfirst.c | 67 ++++++++++++++++++++++-----
 1 file changed, 56 insertions(+), 11 deletions(-)

diff --git a/mingw-w64-crt/testcases/t_findfirst.c 
b/mingw-w64-crt/testcases/t_findfirst.c
index e9aa41b65eae..52641e711c26 100644
--- a/mingw-w64-crt/testcases/t_findfirst.c
+++ b/mingw-w64-crt/testcases/t_findfirst.c
@@ -4,17 +4,62 @@
 #include <string.h>
 #include <io.h>
 
-int main(int argc, char **argv)
-{
-  struct _finddata_t d;
-  intptr_t handle = _findfirst ("*", &d);
-  if (handle == -1)
-    return 1;
+#define A(x) x
+#define W(x) L##x
 
-  while (_findnext(handle, &d) == 0)
-    printf ("%s\n", d.name);
-
-  _findclose (handle);
-  return 0;
+#define DEFINE_TEST(T, F, NAME, FINDDATA, FINDFIRST, FINDNEXT) \
+static int NAME(void) \
+{ \
+  fflush (stdout); \
+  fflush (stderr); \
+  printf ("\nTest name: %s\n", #NAME); \
+  struct FINDDATA d; \
+  intptr_t handle = FINDFIRST (T("*"), &d); \
+  if (handle == -1) { \
+    fprintf (stderr, "Error: Function %s failed: errno=%d (%s)\n", #FINDFIRST, 
errno, strerror (errno)); \
+    return 1; \
+  } \
+  printf (F "\n", d.name); \
+  while (FINDNEXT (handle, &d) == 0) { \
+    printf (F "\n", d.name); \
+  } \
+  if (errno != ENOENT) { \
+    fprintf (stderr, "Error: Function %s failed: errno=%d (%s)\n", #FINDNEXT, 
errno, strerror (errno)); \
+    return 1; \
+  } \
+  _findclose (handle); \
+  fprintf (stderr, "Test %s passed\n", #NAME); \
+  return 0; \
 }
 
+DEFINE_TEST(A, "%s",  test,       _finddata_t,       _findfirst,       
_findnext)
+DEFINE_TEST(A, "%s",  testi64,    _finddatai64_t,    _findfirsti64,    
_findnexti64)
+DEFINE_TEST(A, "%s",  test32,     _finddata32_t,     _findfirst32,     
_findnext32)
+DEFINE_TEST(A, "%s",  test32i64,  _finddata32i64_t,  _findfirst32i64,  
_findnext32i64)
+DEFINE_TEST(A, "%s",  test64i32,  _finddata64i32_t,  _findfirst64i32,  
_findnext64i32)
+DEFINE_TEST(A, "%s",  test64,     __finddata64_t,    _findfirst64,     
_findnext64)
+
+DEFINE_TEST(W, "%ls", wtest,      _wfinddata_t,      _wfindfirst,      
_wfindnext)
+DEFINE_TEST(W, "%ls", wtesti64,   _wfinddatai64_t,   _wfindfirsti64,   
_wfindnexti64)
+DEFINE_TEST(W, "%ls", wtest32,    _wfinddata32_t,    _wfindfirst32,    
_wfindnext32)
+DEFINE_TEST(W, "%ls", wtest32i64, _wfinddata32i64_t, _wfindfirst32i64, 
_wfindnext32i64)
+DEFINE_TEST(W, "%ls", wtest64i32, _wfinddata64i32_t, _wfindfirst64i32, 
_wfindnext64i32)
+DEFINE_TEST(W, "%ls", wtest64,    _wfinddata64_t,    _wfindfirst64,    
_wfindnext64)
+
+int main(int argc, char **argv)
+{
+  int ret = 0;
+  ret |= test ();
+  ret |= testi64 ();
+  ret |= test32 ();
+  ret |= test32i64 ();
+  ret |= test64i32 ();
+  ret |= test64 ();
+  ret |= wtest ();
+  ret |= wtesti64 ();
+  ret |= wtest32 ();
+  ret |= wtest32i64 ();
+  ret |= wtest64i32 ();
+  ret |= wtest64 ();
+  return ret;
+}
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to