| 1435 | |
| 1436 | |
| 1437 | void TCompactTrieTest::TestArrayPacker() { |
| 1438 | using TDataInt = std::array<int, 2>; |
| 1439 | const std::pair<TString, TDataInt> dataXxx{"xxx", {{15, 16}}}; |
| 1440 | const std::pair<TString, TDataInt> dataYyy{"yyy", {{20, 30}}}; |
| 1441 | |
| 1442 | TCompactTrieBuilder<char, TDataInt> trieBuilderOne; |
| 1443 | trieBuilderOne.Add(dataXxx.first, dataXxx.second); |
| 1444 | trieBuilderOne.Add(dataYyy.first, dataYyy.second); |
| 1445 | |
| 1446 | TBufferOutput bufferOne; |
| 1447 | trieBuilderOne.Save(bufferOne); |
| 1448 | |
| 1449 | const TCompactTrie<char, TDataInt> trieOne(bufferOne.Buffer().Data(), bufferOne.Buffer().Size()); |
| 1450 | UNIT_ASSERT_VALUES_EQUAL(dataXxx.second, trieOne.Get(dataXxx.first)); |
| 1451 | UNIT_ASSERT_VALUES_EQUAL(dataYyy.second, trieOne.Get(dataYyy.first)); |
| 1452 | |
| 1453 | using TDataStroka = std::array<TString, 2>; |
| 1454 | const std::pair<TString, TDataStroka> dataZzz{"zzz", {{"hello", "there"}}}; |
| 1455 | const std::pair<TString, TDataStroka> dataWww{"www", {{"half", "life"}}}; |
| 1456 | |
| 1457 | TCompactTrieBuilder<char, TDataStroka> trieBuilderTwo; |
| 1458 | trieBuilderTwo.Add(dataZzz.first, dataZzz.second); |
| 1459 | trieBuilderTwo.Add(dataWww.first, dataWww.second); |
| 1460 | |
| 1461 | TBufferOutput bufferTwo; |
| 1462 | trieBuilderTwo.Save(bufferTwo); |
| 1463 | |
| 1464 | const TCompactTrie<char, TDataStroka> trieTwo(bufferTwo.Buffer().Data(), bufferTwo.Buffer().Size()); |
| 1465 | UNIT_ASSERT_VALUES_EQUAL(dataZzz.second, trieTwo.Get(dataZzz.first)); |
| 1466 | UNIT_ASSERT_VALUES_EQUAL(dataWww.second, trieTwo.Get(dataWww.first)); |
| 1467 | } |
| 1468 | |
| 1469 | void TCompactTrieTest::TestBuilderFindLongestPrefix() { |
| 1470 | const size_t sizes[] = {10, 100}; |