1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file.
4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "crazy_linker_util.h"
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <minitest/minitest.h>
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace crazy {
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(GetBaseNamePtr, Test) {
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const char kString[] = "/tmp/foo";
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(kString + 5, GetBaseNamePtr(kString));
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, Empty) {
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s;
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.IsEmpty());
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(0u, s.size());
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('\0', s.c_str()[0]);
21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, CStringConstructor) {
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("Simple");
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("Simple", s.c_str());
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(6U, s.size());
27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, CStringConstructorWithLength) {
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s2("Simple", 3);
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("Sim", s2.c_str());
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(3U, s2.size());
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, CopyConstructor) {
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s1("Simple");
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s2(s1);
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(6U, s2.size());
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ(s2.c_str(), s1.c_str());
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, CharConstructor) {
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s('H');
45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(1U, s.size());
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("H", s.c_str());
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, AppendCString) {
50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("Foo");
51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  s += "Bar";
52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("FooBar", s.c_str());
53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  s += "Zoo";
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("FooBarZoo", s.c_str());
55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, AppendOther) {
58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("Foo");
59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s2("Bar");
60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  s += s2;
61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("FooBar", s.c_str());
62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, ArrayAccess) {
65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("FooBar");
66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('F', s[0]);
67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('o', s[1]);
68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('o', s[2]);
69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('B', s[3]);
70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('a', s[4]);
71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('r', s[5]);
72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ('\0', s[6]);
73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, Resize) {
76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("A very long string to have fun");
77f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  s.Resize(10);
78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(10U, s.size());
79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("A very lon", s.c_str());
80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
82f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(String, ResizeToZero) {
83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  String s("Long string to force a dynamic allocation");
84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  s.Resize(0);
85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(0U, s.size());
86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_STREQ("", s.c_str());
87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, IsEmpty) {
90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<void*> v;
91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(v.IsEmpty());
92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, PushBack) {
95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<int> v;
96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  v.PushBack(12345);
97f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(v.IsEmpty());
98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(1U, v.GetCount());
99f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(12345, v[0]);
100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, PushBack2) {
103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<int> v;
105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n)
106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.PushBack(n * 100);
107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(v.IsEmpty());
109f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(static_cast<size_t>(kMaxCount), v.GetCount());
110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
112f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, At) {
113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
114f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<int> v;
115f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n)
116f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.PushBack(n * 100);
117f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
118f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n) {
119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    TEST_TEXT << "Checking v[" << n << "]";
120f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(n * 100, v[n]);
121f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, IndexOf) {
125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<int> v;
127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n)
128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.PushBack(n * 100);
129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n) {
131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    TEST_TEXT << "Checking v.IndexOf(" << n * 100 << ")";
132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(n, v.IndexOf(n * 100));
133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
136f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, InsertAt) {
137f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
138f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
139f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (size_t k = 0; k < kMaxCount; ++k) {
140f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    Vector<int> v;
141f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    for (int n = 0; n < kMaxCount; ++n)
142f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      v.PushBack(n * 100);
143f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
144f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.InsertAt(k, -1000);
145f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
146f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(kMaxCount + 1, v.GetCount());
147f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    for (int n = 0; n < v.GetCount(); ++n) {
148f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      TEST_TEXT << "Checking v[" << n << "]";
149f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      int expected;
150f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      if (n < k)
151f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        expected = n * 100;
152f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      else if (n == k)
153f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        expected = -1000;
154f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      else
155f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        expected = (n - 1) * 100;
156f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      EXPECT_EQ(expected, v[n]);
157f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    }
158f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
159f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
160f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
161f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, RemoveAt) {
162f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
163f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
164f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (size_t k = 0; k < kMaxCount; ++k) {
165f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    Vector<int> v;
166f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    for (int n = 0; n < kMaxCount; ++n)
167f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      v.PushBack(n * 100);
168f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
169f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.RemoveAt(k);
170f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
171f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(kMaxCount - 1, v.GetCount());
172f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    for (int n = 0; n < kMaxCount - 1; ++n) {
173f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      TEST_TEXT << "Checking v[" << n << "]";
174f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      int expected = (n < k) ? (n * 100) : ((n + 1) * 100);
175f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      EXPECT_EQ(expected, v[n]);
176f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    }
177f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
178f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
179f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
180f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Vector, PopFirst) {
181f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMaxCount = 500;
182f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Vector<int> v;
183f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n)
184f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    v.PushBack(n * 100);
185f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
186f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (int n = 0; n < kMaxCount; ++n) {
187f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    int first = v.PopFirst();
188f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    TEST_TEXT << "Checking " << n << "-th PopFirst()";
189f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(n * 100, first);
190f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(kMaxCount - 1 - n, v.GetCount());
191f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
192f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(0u, v.GetCount());
193f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(v.IsEmpty());
194f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
195f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Set, Empty) {
197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Set<int> s;
198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.IsEmpty());
199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(0U, s.GetCount());
200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
202f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Set, OneItem) {
203f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Set<int> s;
204f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
205f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(s.Has(0));
206f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
207f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Add(0));
208f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Has(0));
209f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(s.IsEmpty());
210f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(1U, s.GetCount());
211f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
213f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(Set, ThreeItems) {
214f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Set<int> s;
215f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
216f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Add(0));
217f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Add(1));
218f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Add(2));
219f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
220f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(s.Has(-1));
221f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Has(0));
222f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Has(1));
223f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(s.Has(2));
224f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(s.Has(3));
225f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
226f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(3U, s.GetCount());
227f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
228f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
229f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}  // namespace crazy
230