1 /*
2 Tests of string utilities
3
4 Copyright (c) 2012 - 2016, Victor Zverovich
5 All rights reserved.
6
7 For the license information refer to format.h.
8 */
9
10 #include "fmt/string.h"
11 #include "gtest/gtest.h"
12
13 using fmt::internal::StringBuffer;
14
TEST(StringBufferTest,Empty)15 TEST(StringBufferTest, Empty) {
16 StringBuffer<char> buffer;
17 EXPECT_EQ(0u, buffer.size());
18 EXPECT_EQ(0u, buffer.capacity());
19 std::string data;
20 // std::string may have initial capacity.
21 std::size_t capacity = data.capacity();
22 buffer.move_to(data);
23 EXPECT_EQ("", data);
24 EXPECT_EQ(capacity, data.capacity());
25 }
26
TEST(StringBufferTest,Reserve)27 TEST(StringBufferTest, Reserve) {
28 StringBuffer<char> buffer;
29 std::size_t capacity = std::string().capacity() + 10;
30 buffer.reserve(capacity);
31 EXPECT_EQ(0u, buffer.size());
32 EXPECT_EQ(capacity, buffer.capacity());
33 std::string data;
34 buffer.move_to(data);
35 EXPECT_EQ("", data);
36 }
37
TEST(StringBufferTest,Resize)38 TEST(StringBufferTest, Resize) {
39 StringBuffer<char> buffer;
40 std::size_t size = std::string().capacity() + 10;
41 buffer.resize(size);
42 EXPECT_EQ(size, buffer.size());
43 EXPECT_EQ(size, buffer.capacity());
44 std::string data;
45 buffer.move_to(data);
46 EXPECT_EQ(size, data.size());
47 }
48
TEST(StringBufferTest,MoveTo)49 TEST(StringBufferTest, MoveTo) {
50 StringBuffer<char> buffer;
51 std::size_t size = std::string().capacity() + 10;
52 buffer.resize(size);
53 const char *p = &buffer[0];
54 std::string data;
55 buffer.move_to(data);
56 EXPECT_EQ(p, &data[0]);
57 EXPECT_EQ(0u, buffer.size());
58 EXPECT_EQ(0u, buffer.capacity());
59 }
60
TEST(StringWriterTest,MoveTo)61 TEST(StringWriterTest, MoveTo) {
62 fmt::StringWriter out;
63 out << "The answer is " << 42 << "\n";
64 std::string s;
65 out.move_to(s);
66 EXPECT_EQ("The answer is 42\n", s);
67 EXPECT_EQ(0u, out.size());
68 }
69
TEST(StringWriterTest,WString)70 TEST(StringWriterTest, WString) {
71 fmt::WStringWriter out;
72 out << "The answer is " << 42 << "\n";
73 std::wstring s;
74 out.move_to(s);
75 EXPECT_EQ(L"The answer is 42\n", s);
76 }
77
TEST(StringTest,ToString)78 TEST(StringTest, ToString) {
79 EXPECT_EQ("42", fmt::to_string(42));
80 }
81