| 1149 | |
| 1150 | template <class TContainer> |
| 1151 | void TCompactTrieTest::TestTrieWithContainers(const TVector<TUtf16String>& keys, const TVector<TContainer>& sampleData, TString methodName) { |
| 1152 | TString fileName = GetSystemTempDir() + "/TCompactTrieTest-TestTrieWithContainers-" + methodName; |
| 1153 | |
| 1154 | TCompactTrieBuilder<wchar16, TContainer> b; |
| 1155 | for (size_t i = 0; i < keys.size(); i++) { |
| 1156 | b.Add(keys[i], sampleData[i]); |
| 1157 | } |
| 1158 | TUnbufferedFileOutput out(fileName); |
| 1159 | b.Save(out); |
| 1160 | |
| 1161 | TCompactTrie<wchar16, TContainer> trie(TBlob::FromFileSingleThreaded(fileName)); |
| 1162 | for (size_t i = 0; i < keys.size(); i++) { |
| 1163 | TContainer value = trie.Get(keys[i]); |
| 1164 | UNIT_ASSERT_VALUES_EQUAL(value.size(), sampleData[i].size()); |
| 1165 | typename TContainer::const_iterator p = value.begin(); |
| 1166 | typename TContainer::const_iterator p1 = sampleData[i].begin(); |
| 1167 | for (; p != value.end(); p++, p1++) |
| 1168 | CheckEquality<typename TContainer::value_type>(*p, *p1); |
| 1169 | } |
| 1170 | |
| 1171 | unlink(fileName.data()); |
| 1172 | } |
| 1173 | |
| 1174 | template <> |
| 1175 | void TCompactTrieTest::TestTrieWithContainers<std::pair<TUtf16String, TVector<i64>>>(const TVector<TUtf16String>& keys, const TVector<std::pair<TUtf16String, TVector<i64>>>& sampleData, TString methodName) { |