• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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