Add SmallString unit test.
[oota-llvm.git] / unittests / ADT / SmallStringTest.cpp
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