525 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			525 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C++
		
	
	
	
//===-- StringListTest.cpp ------------------------------------------------===//
 | 
						|
//
 | 
						|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | 
						|
// See https://llvm.org/LICENSE.txt for license information.
 | 
						|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#include "lldb/Utility/StringList.h"
 | 
						|
#include "lldb/Utility/StreamString.h"
 | 
						|
#include "gmock/gmock.h"
 | 
						|
#include "gtest/gtest.h"
 | 
						|
 | 
						|
using namespace lldb_private;
 | 
						|
 | 
						|
TEST(StringListTest, DefaultConstructor) {
 | 
						|
  StringList s;
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, Assignment) {
 | 
						|
  StringList orig;
 | 
						|
  orig.AppendString("foo");
 | 
						|
  orig.AppendString("bar");
 | 
						|
 | 
						|
  StringList s = orig;
 | 
						|
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
 | 
						|
  ASSERT_EQ(2U, orig.GetSize());
 | 
						|
  EXPECT_STREQ("foo", orig.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", orig.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendStringStdString) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.AppendString("bar");
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendStringCString) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo", strlen("foo"));
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.AppendString("bar", strlen("bar"));
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendStringMove) {
 | 
						|
  StringList s;
 | 
						|
  std::string foo = "foo";
 | 
						|
  std::string bar = "bar";
 | 
						|
 | 
						|
  s.AppendString(std::move(foo));
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.AppendString(std::move(bar));
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, ShiftStdString) {
 | 
						|
  StringList s;
 | 
						|
  std::string foo = "foo";
 | 
						|
  std::string bar = "bar";
 | 
						|
 | 
						|
  s << foo;
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s << bar;
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, ShiftCString) {
 | 
						|
  StringList s;
 | 
						|
  s << "foo";
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s << "bar";
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, ShiftMove) {
 | 
						|
  StringList s;
 | 
						|
  std::string foo = "foo";
 | 
						|
  std::string bar = "bar";
 | 
						|
 | 
						|
  s << std::move(foo);
 | 
						|
  ASSERT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s << std::move(bar);
 | 
						|
  ASSERT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendListCStringArrayEmpty) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendList(nullptr, 0);
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendListCStringArray) {
 | 
						|
  StringList s;
 | 
						|
  const char *items[3] = {"foo", "", "bar"};
 | 
						|
  s.AppendList(items, 3);
 | 
						|
 | 
						|
  EXPECT_EQ(3U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(2));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, AppendList) {
 | 
						|
  StringList other;
 | 
						|
  other.AppendString("foo");
 | 
						|
  other.AppendString("");
 | 
						|
  other.AppendString("bar");
 | 
						|
 | 
						|
  StringList empty;
 | 
						|
 | 
						|
  StringList s;
 | 
						|
  s.AppendList(other);
 | 
						|
 | 
						|
  EXPECT_EQ(3U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(2));
 | 
						|
 | 
						|
  EXPECT_EQ(3U, other.GetSize());
 | 
						|
  EXPECT_STREQ("foo", other.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", other.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", other.GetStringAtIndex(2));
 | 
						|
 | 
						|
  s.AppendList(empty);
 | 
						|
  s.AppendList(other);
 | 
						|
  EXPECT_EQ(6U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(2));
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(3));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(4));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(5));
 | 
						|
 | 
						|
  EXPECT_EQ(3U, other.GetSize());
 | 
						|
  EXPECT_STREQ("foo", other.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", other.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", other.GetStringAtIndex(2));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetSize) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
 | 
						|
  s.AppendString("foo");
 | 
						|
  EXPECT_EQ(2U, s.GetSize());
 | 
						|
 | 
						|
  s.AppendString("foobar");
 | 
						|
  EXPECT_EQ(3U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, SetSize) {
 | 
						|
  StringList s;
 | 
						|
  s.SetSize(3);
 | 
						|
  EXPECT_EQ(3U, s.GetSize());
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(2));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, SplitIntoLines) {
 | 
						|
  StringList s;
 | 
						|
  s.SplitIntoLines("\nfoo\nbar\n\n");
 | 
						|
  EXPECT_EQ(4U, s.GetSize());
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(2));
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(3));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, SplitIntoLinesSingleTrailingCR) {
 | 
						|
  StringList s;
 | 
						|
  s.SplitIntoLines("\r");
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("", s.GetStringAtIndex(0));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, SplitIntoLinesEmpty) {
 | 
						|
  StringList s;
 | 
						|
  s.SplitIntoLines("");
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, LongestCommonPrefixEmpty) {
 | 
						|
  StringList s;
 | 
						|
  std::string prefix = s.LongestCommonPrefix();
 | 
						|
  EXPECT_EQ("", prefix);
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, LongestCommonPrefix) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("foobar");
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("foozar");
 | 
						|
 | 
						|
  std::string prefix = s.LongestCommonPrefix();
 | 
						|
  EXPECT_EQ("foo", prefix);
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, LongestCommonPrefixSingleElement) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
 | 
						|
  std::string prefix = s.LongestCommonPrefix();
 | 
						|
  EXPECT_EQ("foo", prefix);
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, LongestCommonPrefixDuplicateElement) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("foo");
 | 
						|
 | 
						|
  std::string prefix = s.LongestCommonPrefix();
 | 
						|
  EXPECT_EQ("foo", prefix);
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, LongestCommonPrefixNoPrefix) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("1foobar");
 | 
						|
  s.AppendString("2foo");
 | 
						|
  s.AppendString("3foozar");
 | 
						|
 | 
						|
  std::string prefix = s.LongestCommonPrefix();
 | 
						|
  EXPECT_EQ("", prefix);
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, Clear) {
 | 
						|
  StringList s;
 | 
						|
  s.Clear();
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.Clear();
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.Clear();
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, PopBack) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
  s.AppendString("bar");
 | 
						|
  s.AppendString("boo");
 | 
						|
 | 
						|
  s.PopBack();
 | 
						|
  EXPECT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
 | 
						|
  s.PopBack();
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.PopBack();
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, RemoveBlankLines) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  // Nothing to remove yet.
 | 
						|
  s.RemoveBlankLines();
 | 
						|
  EXPECT_EQ(0U, s.GetSize());
 | 
						|
 | 
						|
  // Add some lines.
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString("\t");
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString(" ");
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString("f");
 | 
						|
  s.AppendString("");
 | 
						|
  s.AppendString("");
 | 
						|
 | 
						|
  // And remove all the empty ones again.
 | 
						|
  s.RemoveBlankLines();
 | 
						|
 | 
						|
  EXPECT_EQ(3U, s.GetSize());
 | 
						|
  EXPECT_STREQ("\t", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ(" ", s.GetStringAtIndex(1));
 | 
						|
  EXPECT_STREQ("f", s.GetStringAtIndex(2));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, InsertStringAtIndexStart) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  s.InsertStringAtIndex(0, "bar");
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.InsertStringAtIndex(0, "foo");
 | 
						|
  EXPECT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, InsertStringAtIndexEnd) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  s.InsertStringAtIndex(0, "foo");
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  s.InsertStringAtIndex(1, "bar");
 | 
						|
  EXPECT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, InsertStringAtIndexOutOfBounds) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  s.InsertStringAtIndex(1, "foo");
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
 | 
						|
  // FIXME: Inserting at an OOB index will always just append to the list. This
 | 
						|
  // seems not very intuitive.
 | 
						|
  s.InsertStringAtIndex(3, "bar");
 | 
						|
  EXPECT_EQ(2U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
  EXPECT_STREQ("bar", s.GetStringAtIndex(1));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, InsertStringAtIndexStdString) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  std::string foo = "foo";
 | 
						|
  s.InsertStringAtIndex(0, foo);
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, InsertStringAtIndexMove) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  std::string foo = "foo";
 | 
						|
  s.InsertStringAtIndex(0, std::move(foo));
 | 
						|
  EXPECT_EQ(1U, s.GetSize());
 | 
						|
  EXPECT_STREQ("foo", s.GetStringAtIndex(0));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, CopyListEmpty) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  EXPECT_EQ("", s.CopyList());
 | 
						|
  EXPECT_EQ("", s.CopyList("+"));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, CopyListSingle) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("ab");
 | 
						|
 | 
						|
  EXPECT_EQ("ab", s.CopyList());
 | 
						|
  EXPECT_EQ("-ab", s.CopyList("-"));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, CopyList) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("ab");
 | 
						|
  s.AppendString("cd");
 | 
						|
 | 
						|
  EXPECT_EQ("ab\ncd", s.CopyList());
 | 
						|
  EXPECT_EQ("-ab\n-cd", s.CopyList("-"));
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, Join) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("ab");
 | 
						|
  s.AppendString("cd");
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join(" ", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("ab cd", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, JoinEmpty) {
 | 
						|
  StringList s;
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join(" ", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, JoinSingle) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("foo");
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join(" ", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("foo", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, JoinThree) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("1");
 | 
						|
  s.AppendString("2");
 | 
						|
  s.AppendString("3");
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join(" ", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("1 2 3", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, JoinNonSpace) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("1");
 | 
						|
  s.AppendString("2");
 | 
						|
  s.AppendString("3");
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join(".", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("1.2.3", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, JoinMultiCharSeparator) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("1");
 | 
						|
  s.AppendString("2");
 | 
						|
  s.AppendString("3");
 | 
						|
 | 
						|
  StreamString ss;
 | 
						|
  s.Join("--", ss);
 | 
						|
 | 
						|
  EXPECT_EQ("1--2--3", ss.GetString());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetMaxStringLengthEqualSize) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("123");
 | 
						|
  s.AppendString("123");
 | 
						|
  EXPECT_EQ(3U, s.GetMaxStringLength());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetMaxStringLengthIncreasingSize) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("123");
 | 
						|
  s.AppendString("1234");
 | 
						|
  EXPECT_EQ(4U, s.GetMaxStringLength());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetMaxStringLengthDecreasingSize) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("1234");
 | 
						|
  s.AppendString("123");
 | 
						|
  EXPECT_EQ(4U, s.GetMaxStringLength());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetMaxStringLengthMixed) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("123");
 | 
						|
  s.AppendString("1");
 | 
						|
  s.AppendString("123");
 | 
						|
  s.AppendString("1234");
 | 
						|
  s.AppendString("123");
 | 
						|
  s.AppendString("1");
 | 
						|
  EXPECT_EQ(4U, s.GetMaxStringLength());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, GetMaxStringLengthEmpty) {
 | 
						|
  StringList s;
 | 
						|
  EXPECT_EQ(0U, s.GetMaxStringLength());
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, ForRangeEmpty) {
 | 
						|
  StringList s;
 | 
						|
  for (const std::string &e : s)
 | 
						|
    FAIL() << "Shouldn't have hit an element in for range" << e;
 | 
						|
}
 | 
						|
 | 
						|
TEST(StringListTest, ForRange) {
 | 
						|
  StringList s;
 | 
						|
  s.AppendString("a");
 | 
						|
  s.AppendString("b");
 | 
						|
  s.AppendString("c");
 | 
						|
  std::vector<std::string> recorded;
 | 
						|
  for (const std::string &e : s)
 | 
						|
    recorded.push_back(e);
 | 
						|
  EXPECT_THAT(recorded, testing::ElementsAre("a", "b", "c"));
 | 
						|
}
 |