| /* |
| 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<std::string> buffer(data); |
| EXPECT_EQ(0u, buffer.size()); |
| EXPECT_EQ(0u, buffer.capacity()); |
| } |
| |
| TEST(ContainerBufferTest, Reserve) { |
| std::string data; |
| ContainerBuffer<std::string> 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<std::string> 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<std::string> 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<std::string> 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<std::wstring> 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<char> data; |
| fmt::BasicContainerWriter<std::vector<char> > 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<std::string> 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<char> data; |
| data.push_back('T'); |
| data.push_back('h'); |
| data.push_back('e'); |
| fmt::BasicContainerWriter<std::vector<char> > 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()); |
| } |