1 //===- llvm/unittest/ADT/SmallStringTest.cpp ------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // SmallString unit tests. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "gtest/gtest.h" 15 #include "llvm/ADT/SmallString.h" 16 #include <stdarg.h> 17 #include <climits> 18 #include <cstring> 19 20 using namespace llvm; 21 22 namespace { 23 24 // Test fixture class 25 class SmallStringTest : public testing::Test { 26 protected: 27 typedef SmallString<40> StringType; 28 29 StringType theString; 30 31 void assertEmpty(StringType & v) { 32 // Size tests 33 EXPECT_EQ(0u, v.size()); 34 EXPECT_TRUE(v.empty()); 35 // Iterator tests 36 EXPECT_TRUE(v.begin() == v.end()); 37 } 38 }; 39 40 // New string test. 41 TEST_F(SmallStringTest, EmptyStringTest) { 42 SCOPED_TRACE("EmptyStringTest"); 43 assertEmpty(theString); 44 EXPECT_TRUE(theString.rbegin() == theString.rend()); 45 } 46 47 TEST_F(SmallStringTest, AppendUINT64_MAX) { 48 SCOPED_TRACE("AppendUINT64_MAX"); 49 theString.clear(); 50 assertEmpty(theString); 51 theString.append_uint(UINT64_MAX); 52 EXPECT_TRUE(0 == strcmp(theString.c_str(),"18446744073709551615")); 53 } 54 55 TEST_F(SmallStringTest, AppendINT64_MIN) { 56 SCOPED_TRACE("AppendINT64_MIN"); 57 theString.clear(); 58 assertEmpty(theString); 59 theString.append_sint(INT64_MIN); 60 EXPECT_TRUE(0 == strcmp(theString.c_str(),"-9223372036854775808")); 61 } 62 63 } 64 65