#include "util.h" #include "util-inl.h" #include "gtest/gtest.h" TEST(UtilTest, ListHead) { struct Item { node::ListNode node_; }; typedef node::ListHead List; List list; EXPECT_TRUE(list.IsEmpty()); Item one; EXPECT_TRUE(one.node_.IsEmpty()); list.PushBack(&one); EXPECT_FALSE(list.IsEmpty()); EXPECT_FALSE(one.node_.IsEmpty()); { List::Iterator it = list.begin(); EXPECT_NE(list.end(), it); EXPECT_EQ(&one, *it); ++it; EXPECT_FALSE(it != list.end()); // Iterator only implements != operator. } Item two; list.PushBack(&two); { List::Iterator it = list.begin(); EXPECT_NE(list.end(), it); EXPECT_EQ(&one, *it); ++it; EXPECT_NE(list.end(), it); EXPECT_EQ(&two, *it); ++it; EXPECT_FALSE(it != list.end()); // Iterator only implements != operator. } EXPECT_EQ(&one, list.PopFront()); EXPECT_TRUE(one.node_.IsEmpty()); EXPECT_FALSE(list.IsEmpty()); { List::Iterator it = list.begin(); EXPECT_NE(list.end(), it); EXPECT_EQ(&two, *it); ++it; EXPECT_FALSE(it != list.end()); // Iterator only implements != operator. } EXPECT_EQ(&two, list.PopFront()); EXPECT_TRUE(two.node_.IsEmpty()); EXPECT_TRUE(list.IsEmpty()); EXPECT_FALSE(list.begin() != list.end()); } TEST(UtilTest, StringEqualNoCase) { using node::StringEqualNoCase; EXPECT_FALSE(StringEqualNoCase("a", "b")); EXPECT_TRUE(StringEqualNoCase("", "")); EXPECT_TRUE(StringEqualNoCase("equal", "equal")); EXPECT_TRUE(StringEqualNoCase("equal", "EQUAL")); EXPECT_TRUE(StringEqualNoCase("EQUAL", "EQUAL")); EXPECT_FALSE(StringEqualNoCase("equal", "equals")); EXPECT_FALSE(StringEqualNoCase("equals", "equal")); } TEST(UtilTest, ToLower) { using node::ToLower; EXPECT_EQ('0', ToLower('0')); EXPECT_EQ('a', ToLower('a')); EXPECT_EQ('a', ToLower('A')); }