| 935 | } |
| 936 | |
| 937 | void TCompactTrieTest::TestUniqueImpl(bool isPrefixGrouped) { |
| 938 | TCompactTrieBuilder<char, ui32> builder(CTBF_UNIQUE | (isPrefixGrouped ? CTBF_PREFIX_GROUPED : CTBF_NONE)); |
| 939 | const char* data[] = { |
| 940 | "Kazan", |
| 941 | "Moscow", |
| 942 | "Monino", |
| 943 | "Murmansk", |
| 944 | "Fryanovo", |
| 945 | "Fryazino", |
| 946 | "Fryazevo", |
| 947 | "Fry", |
| 948 | "Tumen", |
| 949 | }; |
| 950 | for (size_t i = 0; i < Y_ARRAY_SIZE(data); ++i) { |
| 951 | UNIT_ASSERT_C(builder.Add(data[i], strlen(data[i]), i + 1), i); |
| 952 | } |
| 953 | bool wasException = false; |
| 954 | try { |
| 955 | builder.Add(data[4], strlen(data[4]), 20); |
| 956 | } catch (const yexception& e) { |
| 957 | wasException = true; |
| 958 | UNIT_ASSERT(strstr(e.what(), "Duplicate key")); |
| 959 | } |
| 960 | UNIT_ASSERT_C(wasException, "TestUnique"); |
| 961 | } |
| 962 | |
| 963 | void TCompactTrieTest::TestAddRetValue() { |
| 964 | TCompactTrieBuilder<char, ui32> builder; |