/* Tests of string utilities Copyright (c) 2012 - 2016, Victor Zverovich All rights reserved. For the license information refer to format.h. */ #include "fmt/string.h" #include "gtest/gtest.h" using fmt::string_buffer; TEST(StringBufferTest, Empty) { string_buffer buffer; EXPECT_EQ(0u, buffer.size()); EXPECT_EQ(0u, buffer.capacity()); std::string data; // std::string may have initial capacity. std::size_t capacity = data.capacity(); buffer.move_to(data); EXPECT_EQ("", data); EXPECT_EQ(capacity, data.capacity()); } TEST(StringBufferTest, Reserve) { string_buffer buffer; std::size_t capacity = std::string().capacity() + 10; buffer.reserve(capacity); EXPECT_EQ(0u, buffer.size()); EXPECT_EQ(capacity, buffer.capacity()); std::string data; buffer.move_to(data); EXPECT_EQ("", data); } TEST(StringBufferTest, Resize) { string_buffer buffer; std::size_t size = std::string().capacity() + 10; buffer.resize(size); EXPECT_EQ(size, buffer.size()); EXPECT_EQ(size, buffer.capacity()); std::string data; buffer.move_to(data); EXPECT_EQ(size, data.size()); } TEST(StringBufferTest, MoveTo) { string_buffer buffer; std::size_t size = std::string().capacity() + 10; buffer.resize(size); const char *p = &buffer[0]; std::string data; buffer.move_to(data); EXPECT_EQ(p, &data[0]); EXPECT_EQ(0u, buffer.size()); EXPECT_EQ(0u, buffer.capacity()); } TEST(StringBufferTest, WString) { fmt::wstring_buffer out; out.push_back(L'x'); std::wstring s; out.move_to(s); EXPECT_EQ(L"x", s); } TEST(StringTest, ToString) { EXPECT_EQ("42", fmt::to_string(42)); }