1f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <cstdlib>
2f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <ctime>
3f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
4f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/base.h>
5f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/popcount.h>
6f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/rank.h>
7f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/string.h>
8f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/key.h>
9f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/progress.h>
10f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/range.h>
11f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/query.h>
12f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/container.h>
13f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa/cell.h>
14f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
15f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include "assert.h"
16f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
17f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathnamespace {
18f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
19f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestBase() {
20f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
21f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
22f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa_uint8) == 1);
23f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa_uint16) == 2);
24f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa_uint32) == 4);
25f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa_uint64) == 8);
26f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
27f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(MARISA_UINT8_MAX == 0xFFU);
28f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(MARISA_UINT16_MAX == 0xFFFFU);
29f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(MARISA_UINT32_MAX == 0xFFFFFFFFU);
30f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(MARISA_UINT64_MAX == 0xFFFFFFFFFFFFFFFFULL);
31f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
32f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa::UInt8) == 1);
33f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa::UInt16) == 2);
34f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa::UInt32) == 4);
35f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(sizeof(marisa::UInt64) == 8);
36f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
37f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  int x = 100, y = 200;
38f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Swap(&x, &y);
39f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(x == 200);
40f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(y == 100);
41f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
42f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  EXCEPT(marisa::Swap(static_cast<int *>(NULL), &y), MARISA_PARAM_ERROR);
43f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  EXCEPT(marisa::Swap(&x, static_cast<int *>(NULL)), MARISA_PARAM_ERROR);
44f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
45f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
46f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
47f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
48f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathmarisa::UInt32 NaivePopCount(marisa::UInt32 x) {
49f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::UInt32 count = 0;
50f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  while (x) {
51f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    count += x & 1;
52f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    x >>= 1;
53f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
54f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  return count;
55f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
56f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
57f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestPopCount() {
58f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
59f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
60f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0).lo8() == 0);
61f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0).lo16() == 0);
62f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0).lo24() == 0);
63f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0).lo32() == 0);
64f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
65f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0xFFFFFFFFU).lo8() == 8);
66f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0xFFFFFFFFU).lo16() == 16);
67f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0xFFFFFFFFU).lo24() == 24);
68f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::PopCount(0xFFFFFFFFU).lo32() == 32);
69f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
70f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  for (std::size_t i = 0; i < 1024; ++i) {
71f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::UInt32 value = std::rand();
72f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::PopCount popcount(value);
73f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(popcount.lo8() == NaivePopCount(value & 0xFFU));
74f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(popcount.lo16() == NaivePopCount(value & 0xFFFFU));
75f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(popcount.lo24() == NaivePopCount(value & 0xFFFFFFU));
76f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(popcount.lo32() == NaivePopCount(value));
77f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
78f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
79f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
80f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
81f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
82f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestRank() {
83f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
84f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
85f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Rank rank;
86f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
87f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.abs() == 0);
88f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel1() == 0);
89f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel2() == 0);
90f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel3() == 0);
91f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel4() == 0);
92f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel5() == 0);
93f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel6() == 0);
94f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel7() == 0);
95f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
96f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_abs(0xFFFFFFFFU);
97f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel1(64);
98f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel2(128);
99f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel3(192);
100f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel4(256);
101f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel5(320);
102f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel6(384);
103f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rank.set_rel7(448);
104f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
105f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.abs() == 0xFFFFFFFFU);
106f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel1() == 64);
107f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel2() == 128);
108f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel3() == 192);
109f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel4() == 256);
110f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel5() == 320);
111f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel6() == 384);
112f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rank.rel7() == 448);
113f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
114f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
115f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
116f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
117f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestString() {
118f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
119f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
120f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::String str;
121f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
122f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.ptr() == NULL);
123f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.length() == 0);
124f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
125f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::RString rstr;
126f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
127f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.ptr() == NULL);
128f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.length() == 0);
129f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
130f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  const char *s = "ab";
131f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  str = marisa::String(s);
132f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
133f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.ptr() == s);
134f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.length() == 2);
135f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str[0] == s[0]);
136f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str[1] == s[1]);
137f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
138f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rstr = marisa::RString(str);
139f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.ptr() == s);
140f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.length() == 2);
141f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr[0] == s[1]);
142f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr[1] == s[0]);
143f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
144f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  std::string s2 = "xyz";
145f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  str = marisa::String(s2.c_str(), s2.length());
146f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
147f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.ptr() == s2.c_str());
148f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.length() == 3);
149f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str[0] == s2[0]);
150f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str[1] == s2[1]);
151f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str[2] == s2[2]);
152f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
153f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.substr(0, 2).length() == 2);
154f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.substr(0, 2)[0] == 'x');
155f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str.substr(0, 2)[1] == 'y');
156f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
157f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rstr = marisa::RString(str);
158f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
159f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.ptr() == s2.c_str());
160f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.length() == 3);
161f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr[0] == s2[2]);
162f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr[1] == s2[1]);
163f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr[2] == s2[0]);
164f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
165f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.substr(1, 2).length() == 2);
166f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.substr(1, 2)[0] == 'y');
167f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rstr.substr(1, 2)[1] == 'x');
168f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
169f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("abc") == marisa::String("abc"));
170f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("abc") != marisa::String("bcd"));
171f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("abc") < marisa::String("bcd"));
172f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("ab") < marisa::String("abc"));
173f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("bcd") > marisa::String("abc"));
174f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("abc") > marisa::String("ab"));
175f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
176f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(marisa::String("abcde").substr(1, 2) == marisa::String("bc"));
177f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
178f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
179f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
180f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
181f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestKey() {
182f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
183f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
184f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Key<marisa::String> key;
185f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
186f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.str().length() == 0);
187f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.weight() == 0.0);
188f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.id() == 0);
189f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.terminal() == 0);
190f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
191f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  key.set_str(marisa::String("abc"));
192f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  key.set_weight(1.0);
193f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  key.set_id(2);
194f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  key.set_terminal(3);
195f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
196f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.str() == marisa::String("abc"));
197f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.weight() == 1.0);
198f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.id() == 2);
199f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(key.terminal() == 3);
200f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
201f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::String str("string");
202f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Key<marisa::RString> rkey;
203f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
204f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.str().length() == 0);
205f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.weight() == 0.0);
206f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.id() == 0);
207f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.terminal() == 0);
208f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
209f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rkey.set_str(marisa::RString(str));
210f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rkey.set_weight(4.0);
211f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rkey.set_id(5);
212f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  rkey.set_terminal(6);
213f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
214f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.str() == marisa::RString(str));
215f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.weight() == 4.0);
216f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.id() == 5);
217f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(rkey.terminal() == 6);
218f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
219f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
220f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
221f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestProgress() {
222f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
223f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
224f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  {
225f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::Progress progress(0);
226f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
227f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.is_valid());
228f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    while (!progress.is_last()) {
229f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath      ++progress;
230f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    }
231f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.is_last());
232f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.flags() == MARISA_DEFAULT_FLAGS);
233f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.trie_id() == progress.num_tries() - 1);
234f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.total_size() == 0);
235f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
236f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    progress.test_total_size(0);
237f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    progress.test_total_size(1);
238f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    EXCEPT(progress.test_total_size(MARISA_UINT32_MAX), MARISA_SIZE_ERROR);
239f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    progress.test_total_size(MARISA_UINT32_MAX - 1);
240f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    progress.test_total_size(0);
241f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    EXCEPT(progress.test_total_size(1), MARISA_SIZE_ERROR);
242f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
243f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.num_tries() == MARISA_DEFAULT_NUM_TRIES);
244f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.trie() == MARISA_DEFAULT_TRIE);
245f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.tail() == MARISA_DEFAULT_TAIL);
246f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.order() == MARISA_DEFAULT_ORDER);
247f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
248f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
249f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  {
250f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::Progress progress(MARISA_DEFAULT_FLAGS);
251f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
252f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.is_valid());
253f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(!progress.is_last());
254f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.num_tries() == MARISA_DEFAULT_NUM_TRIES);
255f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.trie() == MARISA_DEFAULT_TRIE);
256f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.tail() == MARISA_DEFAULT_TAIL);
257f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.order() == MARISA_DEFAULT_ORDER);
258f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
259f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
260f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  {
261f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::Progress progress(255 | MARISA_PREFIX_TRIE
262f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath        | MARISA_BINARY_TAIL | MARISA_LABEL_ORDER);
263f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
264f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.is_valid());
265f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(!progress.is_last());
266f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.num_tries() == 255);
267f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.trie() == MARISA_PREFIX_TRIE);
268f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.tail() == MARISA_BINARY_TAIL);
269f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(progress.order() == MARISA_LABEL_ORDER);
270f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
271f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
272f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  {
273f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    marisa::Progress progress(~MARISA_FLAGS_MASK);
274f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
275f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(!progress.is_valid());
276f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
277f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
278f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
279f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
280f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
281f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestRange() {
282f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
283f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
284f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Range range;
285f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
286f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.begin() == 0);
287f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.end() == 0);
288f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.pos() == 0);
289f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
290f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  range.set_begin(1);
291f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  range.set_end(2);
292f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  range.set_pos(3);
293f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
294f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.begin() == 1);
295f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.end() == 2);
296f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(range.pos() == 3);
297f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
298f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::WRange wrange;
299f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
300f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().begin() == 0);
301f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().end() == 0);
302f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().pos() == 0);
303f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
304f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.begin() == 0);
305f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.end() == 0);
306f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.pos() == 0);
307f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.weight() == 0.0);
308f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
309f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  wrange = marisa::WRange(range, 4.0);
310f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
311f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().begin() == 1);
312f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().end() == 2);
313f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.range().pos() == 3);
314f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
315f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.begin() == 1);
316f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.end() == 2);
317f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.pos() == 3);
318f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.weight() == 4.0);
319f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
320f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  wrange.set_begin(5);
321f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  wrange.set_end(6);
322f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  wrange.set_pos(7);
323f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  wrange.set_weight(8.0);
324f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
325f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.begin() == 5);
326f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.end() == 6);
327f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.pos() == 7);
328f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(wrange.weight() == 8.0);
329f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
330f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
331f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
332f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
333f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestQuery() {
334f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
335f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
336f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Query query("abc", 3);
337f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
338f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(query[0] == 'a');
339f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!query.ends_at(0));
340f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
341f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(query[1] == 'b');
342f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!query.ends_at(1));
343f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
344f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(query[2] == 'c');
345f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!query.ends_at(2));
346f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
347f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(query.ends_at(3));
348f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
349f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  std::string str("str");
350f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
351f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  query.insert(&str);
352f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str == "abcstr");
353f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
354f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::CQuery cquery("xyz");
355f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
356f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cquery[0] == 'x');
357f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!cquery.ends_at(0));
358f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
359f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cquery[1] == 'y');
360f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!cquery.ends_at(1));
361f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
362f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cquery[2] == 'z');
363f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!cquery.ends_at(2));
364f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
365f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cquery.ends_at(3));
366f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
367f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  cquery.insert(&str);
368f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(str == "xyzabcstr");
369f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
370f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
371f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
372f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
373f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestContainer() {
374f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
375f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
376f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  int array[1024];
377f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Container<int *> array_container(array);
378f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
379f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(array_container.is_valid());
380f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  for (int i = 0; i < 1024; ++i) {
381f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    int value = std::rand();
382f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    array_container.insert(i, value);
383f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(array[i] == value);
384f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
385f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
386f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Container<int *> array_container2(NULL);
387f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
388f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!array_container2.is_valid());
389f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
390f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  std::vector<int> vec;
391f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Container<std::vector<int> *> vec_container(&vec);
392f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
393f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(vec_container.is_valid());
394f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  for (int i = 0; i < 1024; ++i) {
395f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    int value = std::rand();
396f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    vec_container.insert(i, value);
397f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(vec.back() == value);
398f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(vec[i] == value);
399f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
400f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(vec.size() == 1024);
401f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
402f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Container<std::vector<int> *> vec_container2(&vec);
403f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
404f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(vec_container2.is_valid());
405f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  for (int i = 0; i < 1024; ++i) {
406f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    int value = std::rand();
407f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    vec_container2.insert(i, value);
408f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(vec.back() == value);
409f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath    ASSERT(vec[i + 1024] == value);
410f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  }
411f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(vec.size() == 2048);
412f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
413f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Container<std::vector<int> *> vec_container3(NULL);
414f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(!vec_container3.is_valid());
415f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
416f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
417f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
418f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
419f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestCell() {
420f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_START();
421f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
422f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  marisa::Cell cell;
423f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
424f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.louds_pos() == 0);
425f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.node() == 0);
426f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.key_id() == 0);
427f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.length() == 0);
428f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
429f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  cell.set_louds_pos(1);
430f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  cell.set_node(2);
431f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  cell.set_key_id(3);
432f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  cell.set_length(4);
433f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
434f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.louds_pos() == 1);
435f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.node() == 2);
436f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.key_id() == 3);
437f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  ASSERT(cell.length() == 4);
438f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
439f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TEST_END();
440f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
441f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
442f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}  // namespace
443f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
444f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathint main() {
445f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  std::srand((unsigned int)time(NULL));
446f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
447f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestBase();
448f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestPopCount();
449f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestRank();
450f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestString();
451f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestKey();
452f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestProgress();
453f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestRange();
454f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestQuery();
455f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestContainer();
456f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  TestCell();
457f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath
458f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath  return 0;
459f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath}
460