[PATCH 1/4] ucrtbase: Expand tests for strftime format %g.

Jeff Smith whydoubt at gmail.com
Tue Nov 26 00:00:47 CST 2019


Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
 dlls/ucrtbase/tests/misc.c | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/dlls/ucrtbase/tests/misc.c b/dlls/ucrtbase/tests/misc.c
index 6314662eac..8c9fc1acb0 100644
--- a/dlls/ucrtbase/tests/misc.c
+++ b/dlls/ucrtbase/tests/misc.c
@@ -929,6 +929,7 @@ static void test_strftime(void)
        struct tm tm;
        BOOL todo;
        BOOL todo_handler;
+       const char *broken;
     } tests[] = {
         {"%C", "", { 0, 0, 0, 1, 0, -2000, 4, 0, 0 }},
         {"%C", "", { 0, 0, 0, 1, 0, -1901, 4, 0, 0 }},
@@ -977,9 +978,21 @@ static void test_strftime(void)
         {"%r", "12:00:00 AM", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }, TRUE},
         {"%r", "02:00:00 PM", { 0, 0, 14, 1, 0, 121, 6, 0, 0 }, TRUE},
         {"%t", "\t", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
+        {"%g", "", { 0, 0, 0, 1, 0, -1901, 4, 0, 0 }, TRUE},
+        {"%g", "", { 0, 0, 0, 1, 0, -1901, 3, 364, 0 }, TRUE},
+        {"%g", "", { 0, 0, 0, 1, 0, -1900, 0, 0, 0 }, TRUE, FALSE, "0/" },
+        {"%g", "00", { 0, 0, 0, 1, 0, -1900, 4, 0, 0 }},
         {"%g", "70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
+        {"%g", "71", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
+        {"%g", "72", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
         {"%g", "16", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
+        {"%g", "99", { 0, 0, 0, 1, 0, 8099, 4, 0, 0 }},
+        {"%g", "00", { 0, 0, 0, 1, 0, 8099, 3, 364, 0 }},
+        {"%g", "", { 0, 0, 0, 1, 0, 8100, 0, 0, 0 }, TRUE},
+        {"%g", "", { 0, 0, 0, 1, 0, 8100, 4, 0, 0 }, TRUE},
         {"%G", "1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
+        {"%G", "1971", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
+        {"%G", "1972", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
         {"%G", "2016", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
         {"%V", "01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }, TRUE},
         {"%V", "52", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }, TRUE},
@@ -988,10 +1001,6 @@ static void test_strftime(void)
         {"%y", "00", { 0, 0, 0, 0, 0, -1900, 0, 0, 0 }},
         {"%y", "99", { 0, 0, 0, 0, 0, 8099, 0, 0, 0 }},
         {"%y", "", { 0, 0, 0, 0, 0, 8100, 0, 0, 0 }},
-        {"%g", "71", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
-        {"%g", "72", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
-        {"%G", "1971", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
-        {"%G", "1972", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
         {"%c", "Thu Jan  1 00:00:00 1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }, TRUE},
         {"%c", "Thu Feb 30 00:00:00 1970", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }, TRUE},
         {"%#c", "Thursday, January 01, 1970 00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
@@ -1092,16 +1101,20 @@ static void test_strftime(void)
     for (i=0; i<ARRAY_SIZE(tests); i++)
     {
         todo_wine_if(tests[i].todo || tests[i].todo_handler) {
-            if (!tests[i].ret[0])
+            if (!tests[i].ret[0] || (tests[i].broken && !tests[i].broken[0]))
                 SET_EXPECT(global_invalid_parameter_handler);
             ret = p_strftime(buf, sizeof(buf), tests[i].format, &tests[i].tm);
-            if (!tests[i].ret[0])
+            if (!tests[i].ret[0] && !tests[i].broken)
                 CHECK_CALLED(global_invalid_parameter_handler);
         }
 
         todo_wine_if(tests[i].todo) {
-            ok(ret == strlen(tests[i].ret), "%d) ret = %d\n", i, ret);
-            ok(!strcmp(buf, tests[i].ret), "%d) buf = \"%s\", expected \"%s\"\n",
+            ok(ret == strlen(tests[i].ret) ||
+               broken(tests[i].broken && ret == strlen(tests[i].broken)),
+                    "%d) ret = %d\n", i, ret);
+            ok(!strcmp(buf, tests[i].ret) ||
+               broken(tests[i].broken && !strcmp(buf, tests[i].broken)),
+                    "%d) buf = \"%s\", expected \"%s\"\n",
                     i, buf, tests[i].ret);
         }
     }
-- 
2.23.0




More information about the wine-devel mailing list