/* Tests of container utilities Copyright (c) 2012 - 2016, Victor Zverovich All rights reserved. For the license information refer to format.h. */ #include "fmt/container.h" #include "gtest/gtest.h" using fmt::internal::ContainerBuffer; TEST(ContainerBufferTest, Empty) { std::string data; ContainerBuffer buffer(data); EXPECT_EQ(0u, buffer.size()); EXPECT_EQ(0u, buffer.capacity()); } TEST(ContainerBufferTest, Reserve) { std::string data; ContainerBuffer buffer(data); std::size_t capacity = std::string().capacity() + 10; buffer.reserve(capacity); EXPECT_EQ(0u, buffer.size()); EXPECT_EQ(capacity, buffer.capacity()); } TEST(ContainerBufferTest, Resize) { std::string data; ContainerBuffer buffer(data); std::size_t size = std::string().capacity() + 10; buffer.resize(size); EXPECT_EQ(size, buffer.size()); EXPECT_EQ(size, buffer.capacity()); } TEST(ContainerBufferTest, Append) { std::string data("Why so"); const std::string serious(" serious"); ContainerBuffer buffer(data); buffer.append(serious.c_str(), serious.c_str() + serious.length()); EXPECT_EQ("Why so serious", data); EXPECT_EQ(data.length(), buffer.size()); } TEST(BasicContainerWriterTest, String) { std::string data; fmt::BasicContainerWriter out(data); out << "The answer is " << 42 << "\n"; EXPECT_EQ("The answer is 42\n", data); EXPECT_EQ(17u, out.size()); } TEST(BasicContainerWriterTest, WString) { std::wstring data; fmt::BasicContainerWriter out(data); out << "The answer is " << 42 << "\n"; EXPECT_EQ(L"The answer is 42\n", data); EXPECT_EQ(17u, out.size()); } TEST(BasicContainerWriterTest, Vector) { std::vector data; fmt::BasicContainerWriter > out(data); out << "The answer is " << 42 << "\n"; EXPECT_EQ(17u, data.size()); EXPECT_EQ(out.size(), data.size()); } TEST(BasicContainerWriterTest, StringAppend) { std::string data("The"); fmt::BasicContainerWriter out(data); EXPECT_EQ(3u, data.size()); EXPECT_EQ(3u, out.size()); out << " answer is " << 42 << "\n"; EXPECT_EQ("The answer is 42\n", data); EXPECT_EQ(17u, out.size()); } TEST(BasicContainerWriterTest, VectorAppend) { std::vector data; data.push_back('T'); data.push_back('h'); data.push_back('e'); fmt::BasicContainerWriter > out(data); EXPECT_EQ(3u, data.size()); EXPECT_EQ(3u, out.size()); out << " answer is " << 42 << "\n"; EXPECT_EQ(17u, data.size()); EXPECT_EQ(17u, out.size()); }