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