From ff0b43015bd0067d9f1bcdd55d2baa99abfba646 Mon Sep 17 00:00:00 2001 From: Andrew Schwartzmeyer Date: Wed, 22 Jul 2015 10:15:34 -0700 Subject: [PATCH] Test UTF-16 output of GetUserName --- tests/test-getusername.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/test-getusername.cpp b/tests/test-getusername.cpp index 1b15cc2d65..c2c9d1c2db 100644 --- a/tests/test-getusername.cpp +++ b/tests/test-getusername.cpp @@ -1,7 +1,14 @@ +#include +#include #include #include +#include #include "getusername.h" +using std::string; +using std::vector; +using SCXCoreLib::Utf16leToUtf8; + TEST(GetUserName,simple) { // allocate a WCHAR_T buffer to receive username @@ -14,10 +21,17 @@ TEST(GetUserName,simple) ASSERT_EQ(1, result); // get expected username - const char *username = getlogin(); + string username = string(getlogin()); // GetUserName sets lpnSize to length of username including null - ASSERT_EQ(strlen(username)+1, lpnSize); + ASSERT_EQ(username.size()+1, lpnSize); - // TODO: ASSERT_STREQ(username, Utf16leToUtf8(lpBuffer)) + // copy UTF-16 bytes from lpBuffer to vector for conversion + vector input(reinterpret_cast(&lpBuffer[0]), + reinterpret_cast(&lpBuffer[lpnSize-1])); + // convert to UTF-8 for assertion + string output; + Utf16leToUtf8(input, output); + + EXPECT_EQ(username, output); }