1// Copyright 2014 The Android Open Source Project 2// 3// This software is licensed under the terms of the GNU General Public 4// License version 2, as published by the Free Software Foundation, and 5// may be copied, distributed, and modified under those terms. 6// 7// This program is distributed in the hope that it will be useful, 8// but WITHOUT ANY WARRANTY; without even the implied warranty of 9// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10// GNU General Public License for more details. 11 12#include "android/base/StringFormat.h" 13 14#include <gtest/gtest.h> 15 16#include "android/base/String.h" 17 18namespace android { 19namespace base { 20 21TEST(StringFormat, EmptyString) { 22 String s = StringFormat(""); 23 EXPECT_TRUE(s.empty()); 24 EXPECT_STREQ("", s.c_str()); 25} 26 27TEST(StringFormat, SimpleString) { 28 String s = StringFormat("foobar"); 29 EXPECT_STREQ("foobar", s.c_str()); 30} 31 32TEST(StringFormat, SimpleDecimal) { 33 String s = StringFormat("Pi is about %d.%d\n", 3, 1415); 34 EXPECT_STREQ("Pi is about 3.1415\n", s.c_str()); 35} 36 37TEST(StringFormat, VeryLongString) { 38 static const char kPiece[] = "A hospital bed is a parked taxi with the meter running - Groucho Marx. "; 39 const size_t kPieceLen = sizeof(kPiece) - 1U; 40 String s = StringFormat("%s%s%s%s%s%s%s", 41 kPiece, 42 kPiece, 43 kPiece, 44 kPiece, 45 kPiece, 46 kPiece, 47 kPiece 48 ); 49 EXPECT_EQ(7U * kPieceLen, s.size()); 50 for (size_t n = 0; n < 7U; ++n) { 51 String s2 = String(s.c_str() + n * kPieceLen, kPieceLen); 52 EXPECT_STREQ(kPiece, s2.c_str()) << "Index #" << n; 53 } 54} 55 56TEST(StringAppendFormat, EmptyString) { 57 String s = "foo"; 58 StringAppendFormat(&s, ""); 59 EXPECT_EQ(3U, s.size()); 60 EXPECT_STREQ("foo", s.c_str()); 61} 62 63TEST(StringAppendFormat, SimpleString) { 64 String s = "foo"; 65 StringAppendFormat(&s, "bar"); 66 EXPECT_EQ(6U, s.size()); 67 EXPECT_STREQ("foobar", s.c_str()); 68} 69 70TEST(StringAppendFormat, VeryLongString) { 71 static const char kPiece[] = "A hospital bed is a parked taxi with the meter running - Groucho Marx. "; 72 const size_t kPieceLen = sizeof(kPiece) - 1U; 73 const size_t kCount = 12; 74 String s; 75 for (size_t n = 0; n < kCount; ++n) { 76 StringAppendFormat(&s, "%s", kPiece); 77 } 78 79 EXPECT_EQ(kCount * kPieceLen, s.size()); 80 for (size_t n = 0; n < kCount; ++n) { 81 String s2 = String(s.c_str() + n * kPieceLen, kPieceLen); 82 EXPECT_STREQ(kPiece, s2.c_str()) << "Index #" << n; 83 } 84} 85 86} // namespace base 87} // namespace android 88