test: Add tests for tchar.h routines
This commit is contained in:
1 parent
2280c59bc7
commit
19b4d2a434
2 files changed
+61
No files matched your search
@@ -74,6 +74,7 @@ TESTS_CPP_EXCEPTIONS = hello-exception exception-locale exception-reduced
|
||||
TESTS_CPP_STATIC = hello-exception
|
||||
TESTS_CPP_DLL = tlstest-lib throwcatch-lib
|
||||
TESTS_CPP_LINK_DLL = throwcatch-main
|
||||
TESTS_TCHAR = tchar
|
||||
TESTS_SSP = stacksmash
|
||||
TESTS_FORTIFY = bufferoverflow crt-test
|
||||
ifneq ($(HAVE_ASAN),)
|
||||
@@ -108,6 +109,8 @@ TARGETS_CPP_EXCEPTIONS_OPT = $(addsuffix -opt$(EXEEXT), $(TESTS_CPP_EXCEPTIONS))
|
||||
TARGETS_CPP_STATIC = $(addsuffix -static$(EXEEXT), $(TESTS_CPP_STATIC))
|
||||
TARGETS_CPP_DLL = $(addsuffix $(DLLEXT), $(TESTS_CPP_DLL))
|
||||
TARGETS_CPP_LINK_DLL = $(addsuffix $(EXEEXT), $(TESTS_CPP_LINK_DLL))
|
||||
TARGETS_TCHAR_NARROW = $(addsuffix -narrow$(EXEEXT), $(TESTS_TCHAR))
|
||||
TARGETS_TCHAR_UNICODE = $(addsuffix -unicode$(EXEEXT), $(TESTS_TCHAR))
|
||||
TARGETS_SSP = $(addsuffix $(EXEEXT), $(TESTS_SSP))
|
||||
TARGETS_CFGUARD = $(addsuffix $(EXEEXT), $(TESTS_CFGUARD))
|
||||
TARGETS_FORTIFY = $(addsuffix -fortify$(EXEEXT), $(TESTS_FORTIFY))
|
||||
@@ -129,6 +132,7 @@ TARGETS_ATOMIC = $(addsuffix $(EXEEXT), $(TESTS_ATOMIC))
|
||||
TARGETS = \
|
||||
$(TARGETS_C) $(TARGETS_C_DLL) $(TARGETS_C_LINK_DLL) $(TARGETS_C_NO_BUILTIN) $(TARGETS_C_ANSI_STDIO) $(TARGETS_C_NOANSI_STDIO) $(TARGETS_C_AS_CPP) \
|
||||
$(TARGETS_CPP) $(TARGETS_CPP_EXCEPTIONS) $(TARGETS_CPP_EXCEPTIONS_OPT) $(TARGETS_CPP_STATIC) $(TARGETS_CPP_DLL) $(TARGETS_CPP_LINK_DLL) \
|
||||
$(TARGETS_TCHAR_NARROW) $(TARGETS_TCHAR_UNICODE) \
|
||||
$(TARGETS_SSP) $(TARGETS_CFGUARD) $(TARGETS_FORTIFY) \
|
||||
$(TARGETS_IDL) $(TARGETS_RES) \
|
||||
$(TARGETS_OTHER_TARGETS) $(TARGETS_UWP) $(TARGETS_UWP_FAIL) \
|
||||
@@ -184,6 +188,14 @@ $(TARGETS_CPP) $(TARGETS_CPP_EXCEPTIONS): %$(EXEEXT): %.cpp
|
||||
$(TARGETS_CPP_STATIC): %-static$(EXEEXT): %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -static $< -o $@
|
||||
|
||||
# Build these tests with -D__USE_MINGW_ANSI_STDIO=1 to make sure that tchar
|
||||
# routines behave as expected even when normally using mingw stdio functions.
|
||||
$(TARGETS_TCHAR_NARROW): %-narrow$(EXEEXT): %.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ -D__USE_MINGW_ANSI_STDIO=1
|
||||
|
||||
$(TARGETS_TCHAR_UNICODE): %-unicode$(EXEEXT): %.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ -D__USE_MINGW_ANSI_STDIO=1 -municode
|
||||
|
||||
$(TARGETS_SSP): %$(EXEEXT): %.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ -fstack-protector-strong
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2025 Martin Storsjo
|
||||
*
|
||||
* This file is part of llvm-mingw.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef UNICODE
|
||||
#define _UNICODE
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
int _tmain(int argc, TCHAR* argv[]) {
|
||||
_tprintf(_T("_tprintf\n"));
|
||||
_ftprintf(stdout, _T("_ftprintf\n"));
|
||||
|
||||
TCHAR buffer[100];
|
||||
_stprintf(buffer, _T("foo %d"), 123);
|
||||
if (_tcscmp(buffer, _T("foo 123"))) {
|
||||
_tprintf(_T("incorrect _stprintf output\n"));
|
||||
return 1;
|
||||
}
|
||||
_stprintf(buffer, _T("str %s"), _T("arg"));
|
||||
if (_tcscmp(buffer, _T("str arg"))) {
|
||||
_tprintf(_T("incorrect _stprintf output for %%s\n"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int val;
|
||||
if (_stscanf(_T("123"), _T("%d"), &val) != 1 || val != 123) {
|
||||
_tprintf(_T("incorrect _stscanf output\n"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user