brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · e285fc5 Raw
50 lines · cpp
1//===-- Unittests for StringStream ----------------------------------------===//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#include "src/__support/CPP/span.h"10#include "src/__support/CPP/stringstream.h"11#include "test/UnitTest/Test.h"12 13using LIBC_NAMESPACE::cpp::span;14using LIBC_NAMESPACE::cpp::StringStream;15 16TEST(LlvmLibcStringStreamTest, Simple) {17  char buf[256];18 19  StringStream ss1(buf);20  ss1 << "Hello, Stream - " << int(123) << StringStream::ENDS;21  ASSERT_FALSE(ss1.overflow());22  ASSERT_STREQ(ss1.str().data(), "Hello, Stream - 123");23 24  StringStream ss2(buf);25  ss2 << 'a' << 'b' << 'c' << StringStream::ENDS;26  ASSERT_FALSE(ss2.overflow());27  ASSERT_STREQ(ss2.str().data(), "abc");28}29 30TEST(LlvmLibcStringStreamTest, Overflow) {31  constexpr size_t BUFSIZE = 8;32  char buf[BUFSIZE];33 34  StringStream ss1(buf);35  ss1 << "Hello, Stream - " << int(123) << StringStream::ENDS;36  ASSERT_TRUE(ss1.overflow());37  ASSERT_EQ(ss1.str().size(), BUFSIZE);38 39  StringStream ss2(buf);40  ss2 << "7777777";41  ASSERT_FALSE(ss2.overflow());42  ASSERT_EQ(ss2.str().size(), size_t(7));43  ss2 << "8";44  ASSERT_FALSE(ss2.overflow());45  ASSERT_EQ(ss2.str().size(), size_t(8));46  ss2 << StringStream::ENDS;47  ASSERT_TRUE(ss2.overflow());48  ASSERT_EQ(ss2.str().size(), BUFSIZE);49}50