diff options
author | Tim Schumacher <timschumi@gmx.de> | 2022-06-22 16:09:21 +0200 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-06-23 15:45:04 +0100 |
commit | f03838fac8ae3e256fa9a67dd0291a2dfdbed280 (patch) | |
tree | 3ea72a61f56855377b7fb325269e084ccac9777b | |
parent | ffb95bace4ccbb3294683d8fe8eb2f3e1ed88587 (diff) | |
download | serenity-f03838fac8ae3e256fa9a67dd0291a2dfdbed280.zip |
Tests: Add tests for `wcsftime`
-rw-r--r-- | Tests/LibC/TestWchar.cpp | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/Tests/LibC/TestWchar.cpp b/Tests/LibC/TestWchar.cpp index d8b7c0c236..86a3e61692 100644 --- a/Tests/LibC/TestWchar.cpp +++ b/Tests/LibC/TestWchar.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, the SerenityOS developers. + * Copyright (c) 2021-2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ @@ -9,6 +9,7 @@ #include <errno.h> #include <limits.h> #include <string.h> +#include <time.h> #include <wchar.h> TEST_CASE(wcspbrk) @@ -614,3 +615,46 @@ TEST_CASE(mblen) EXPECT_EQ(ret, -1); EXPECT_EQ(errno, EILSEQ); } + +TEST_CASE(wcsftime) +{ + // FIXME: Test actual wide char inputs once those are implemented. + + auto* buf = static_cast<wchar_t*>(malloc(32 * sizeof(wchar_t))); + if (!buf) { + FAIL("Could not allocate space for copy target"); + return; + } + + struct tm time = { + .tm_sec = 54, + .tm_min = 44, + .tm_hour = 12, + .tm_mday = 27, + .tm_mon = 4, + .tm_year = 121, + .tm_wday = 4, + .tm_yday = 0, + .tm_isdst = 0, + }; + + size_t ret; + + // Normal behavior. + ret = wcsftime(buf, 32, L"%a, %d %b %Y %H:%M:%S", &time); + EXPECT_EQ(ret, 25ul); + EXPECT_EQ(wcscmp(buf, L"Thu, 27 May 2021 12:44:54"), 0); + + // String fits exactly. + ret = wcsftime(buf, 26, L"%a, %d %b %Y %H:%M:%S", &time); + EXPECT_EQ(ret, 25ul); + EXPECT_EQ(wcscmp(buf, L"Thu, 27 May 2021 12:44:54"), 0); + + // Buffer is too small. + ret = wcsftime(buf, 25, L"%a, %d %b %Y %H:%M:%S", &time); + EXPECT_EQ(ret, 0ul); + ret = wcsftime(buf, 1, L"%a, %d %b %Y %H:%M:%S", &time); + EXPECT_EQ(ret, 0ul); + ret = wcsftime(nullptr, 0, L"%a, %d %b %Y %H:%M:%S", &time); + EXPECT_EQ(ret, 0ul); +} |