brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · ddccdfa Raw
67 lines · cpp
1//===-- Unittests for vsprintf --------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// These tests are shortened copies of the non-v variants of the printf10// functions. This is because these functions are identical in every way except11// for how the varargs are passed.12 13#include "src/stdio/vsprintf.h"14 15#include "test/UnitTest/Test.h"16 17int call_vsprintf(char *__restrict buffer, const char *__restrict format, ...) {18  va_list vlist;19  va_start(vlist, format);20  int ret = LIBC_NAMESPACE::vsprintf(buffer, format, vlist);21  va_end(vlist);22  return ret;23}24 25TEST(LlvmLibcVSPrintfTest, SimpleNoConv) {26  char buff[64];27  int written;28 29  written = call_vsprintf(buff, "A simple string with no conversions.");30  EXPECT_EQ(written, 36);31  ASSERT_STREQ(buff, "A simple string with no conversions.");32}33 34TEST(LlvmLibcVSPrintfTest, PercentConv) {35  char buff[64];36  int written;37 38  written = call_vsprintf(buff, "%%");39  EXPECT_EQ(written, 1);40  ASSERT_STREQ(buff, "%");41 42  written = call_vsprintf(buff, "abc %% def");43  EXPECT_EQ(written, 9);44  ASSERT_STREQ(buff, "abc % def");45 46  written = call_vsprintf(buff, "%%%%%%");47  EXPECT_EQ(written, 3);48  ASSERT_STREQ(buff, "%%%");49}50 51TEST(LlvmLibcVSPrintfTest, CharConv) {52  char buff[64];53  int written;54 55  written = call_vsprintf(buff, "%c", 'a');56  EXPECT_EQ(written, 1);57  ASSERT_STREQ(buff, "a");58 59  written = call_vsprintf(buff, "%3c %-3c", '1', '2');60  EXPECT_EQ(written, 7);61  ASSERT_STREQ(buff, "  1 2  ");62 63  written = call_vsprintf(buff, "%*c", 2, '3');64  EXPECT_EQ(written, 2);65  ASSERT_STREQ(buff, " 3");66}67