| 884 | } |
| 885 | |
| 886 | void TCompactTrieTest::TestMergeFromBuffer() { |
| 887 | TArrayWithSizeHolder<char> buffer1; |
| 888 | { |
| 889 | TCompactTrieBuilder<> b; |
| 890 | b.Add("aaaaa", 1); |
| 891 | b.Add("bbbbb", 2); |
| 892 | b.Add("ccccc", 3); |
| 893 | buffer1.Resize(b.MeasureByteSize()); |
| 894 | TMemoryOutput out(buffer1.Get(), buffer1.Size()); |
| 895 | b.Save(out); |
| 896 | } |
| 897 | |
| 898 | TArrayWithSizeHolder<char> buffer2; |
| 899 | { |
| 900 | TCompactTrieBuilder<> b; |
| 901 | b.Add("aaaaa", 10); |
| 902 | b.Add("bbbbb", 20); |
| 903 | b.Add("ccccc", 30); |
| 904 | b.Add("xxxxx", 40); |
| 905 | b.Add("yyyyy", 50); |
| 906 | buffer2.Resize(b.MeasureByteSize()); |
| 907 | TMemoryOutput out(buffer2.Get(), buffer2.Size()); |
| 908 | b.Save(out); |
| 909 | } |
| 910 | |
| 911 | { |
| 912 | TCompactTrieBuilder<> b; |
| 913 | UNIT_ASSERT(b.AddSubtreeInBuffer("com.", std::move(buffer1))); |
| 914 | UNIT_ASSERT(b.Add("org.upyachka", 42)); |
| 915 | UNIT_ASSERT(b.AddSubtreeInBuffer("ru.", std::move(buffer2))); |
| 916 | TUnbufferedFileOutput out(GetSystemTempDir() + "/TCompactTrieTest-TestMergeFromBuffer-res"); |
| 917 | b.Save(out); |
| 918 | } |
| 919 | |
| 920 | TCompactTrie<> trie(TBlob::FromFileSingleThreaded(GetSystemTempDir() + "/TCompactTrieTest-TestMergeFromBuffer-res")); |
| 921 | UNIT_ASSERT_VALUES_EQUAL(10u, trie.Get("ru.aaaaa")); |
| 922 | UNIT_ASSERT_VALUES_EQUAL(20u, trie.Get("ru.bbbbb")); |
| 923 | UNIT_ASSERT_VALUES_EQUAL(40u, trie.Get("ru.xxxxx")); |
| 924 | UNIT_ASSERT_VALUES_EQUAL(42u, trie.Get("org.upyachka")); |
| 925 | UNIT_ASSERT_VALUES_EQUAL(1u, trie.Get("com.aaaaa")); |
| 926 | UNIT_ASSERT_VALUES_EQUAL(2u, trie.Get("com.bbbbb")); |
| 927 | UNIT_ASSERT_VALUES_EQUAL(3u, trie.Get("com.ccccc")); |
| 928 | |
| 929 | unlink((GetSystemTempDir() + "/TCompactTrieTest-TestMergeFromBuffer-res").data()); |
| 930 | } |
| 931 | |
| 932 | void TCompactTrieTest::TestUnique() { |
| 933 | TestUniqueImpl(false); |
nothing calls this directly
no test coverage detected