| 
									
										
										
										
											2016-05-18 19:54:52 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  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"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  | using fmt::string_buffer; | 
					
						
							| 
									
										
										
										
											2016-07-14 07:41:00 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | TEST(StringBufferTest, Empty) { | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  |   string_buffer buffer; | 
					
						
							| 
									
										
										
										
											2016-07-14 07:41:00 -07:00
										 |  |  |   EXPECT_EQ(0, buffer.size()); | 
					
						
							|  |  |  |   EXPECT_EQ(0, 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) { | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  |   string_buffer buffer; | 
					
						
							| 
									
										
										
										
											2016-07-14 07:41:00 -07:00
										 |  |  |   std::size_t capacity = std::string().capacity() + 10; | 
					
						
							|  |  |  |   buffer.reserve(capacity); | 
					
						
							|  |  |  |   EXPECT_EQ(0, buffer.size()); | 
					
						
							|  |  |  |   EXPECT_EQ(capacity, buffer.capacity()); | 
					
						
							|  |  |  |   std::string data; | 
					
						
							|  |  |  |   buffer.move_to(data); | 
					
						
							|  |  |  |   EXPECT_EQ("", data); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST(StringBufferTest, Resize) { | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  |   string_buffer buffer; | 
					
						
							| 
									
										
										
										
											2016-07-14 07:41:00 -07:00
										 |  |  |   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) { | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  |   string_buffer buffer; | 
					
						
							| 
									
										
										
										
											2016-07-14 07:41:00 -07:00
										 |  |  |   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(0, buffer.size()); | 
					
						
							|  |  |  |   EXPECT_EQ(0, buffer.capacity()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  | TEST(StringBufferTest, WString) { | 
					
						
							|  |  |  |   fmt::wstring_buffer out; | 
					
						
							|  |  |  |   out.push_back(L'x'); | 
					
						
							| 
									
										
										
										
											2016-07-18 08:47:11 -07:00
										 |  |  |   std::wstring s; | 
					
						
							|  |  |  |   out.move_to(s); | 
					
						
							| 
									
										
										
										
											2017-02-17 06:23:16 -08:00
										 |  |  |   EXPECT_EQ(L"x", s); | 
					
						
							| 
									
										
										
										
											2016-07-18 08:47:11 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 19:54:52 -07:00
										 |  |  | TEST(StringTest, ToString) { | 
					
						
							|  |  |  |   EXPECT_EQ("42", fmt::to_string(42)); | 
					
						
							|  |  |  | } |