Blender  V3.3
BLI_string_search_test.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0 */
2 
3 #include "testing/testing.h"
4 
5 #include "BLI_array.hh"
6 #include "BLI_string_search.h"
7 #include "BLI_vector.hh"
8 
10 
11 /* Right arrow, keep in sync with #UI_MENU_ARROW_SEP in `UI_interface.h`. */
12 #define UI_MENU_ARROW_SEP "\xe2\x96\xb6"
13 
15 {
16  EXPECT_EQ(damerau_levenshtein_distance("test", "test"), 0);
17  EXPECT_EQ(damerau_levenshtein_distance("hello", "ell"), 2);
18  EXPECT_EQ(damerau_levenshtein_distance("hello", "hel"), 2);
19  EXPECT_EQ(damerau_levenshtein_distance("ell", "hello"), 2);
20  EXPECT_EQ(damerau_levenshtein_distance("hell", "hello"), 1);
21  EXPECT_EQ(damerau_levenshtein_distance("hello", "hallo"), 1);
23  EXPECT_EQ(damerau_levenshtein_distance("", "hello"), 5);
24  EXPECT_EQ(damerau_levenshtein_distance("Test", "test"), 1);
26  EXPECT_EQ(damerau_levenshtein_distance("what", "waht"), 1);
27  EXPECT_EQ(damerau_levenshtein_distance("what", "ahwt"), 2);
28 }
29 
31 {
32  EXPECT_EQ(get_fuzzy_match_errors("a", "b"), -1);
33  EXPECT_EQ(get_fuzzy_match_errors("", "abc"), 0);
34  EXPECT_EQ(get_fuzzy_match_errors("hello", "hallo"), 1);
35  EXPECT_EQ(get_fuzzy_match_errors("hap", "hello"), -1);
36  EXPECT_EQ(get_fuzzy_match_errors("armature", UI_MENU_ARROW_SEP "restore"), -1);
37 }
38 
40 {
41  LinearAllocator<> allocator;
43  extract_normalized_words("hello world" UI_MENU_ARROW_SEP "test another test" UI_MENU_ARROW_SEP
44  " 3",
45  allocator,
46  words);
47  EXPECT_EQ(words.size(), 6);
48  EXPECT_EQ(words[0], "hello");
49  EXPECT_EQ(words[1], "world");
50  EXPECT_EQ(words[2], "test");
51  EXPECT_EQ(words[3], "another");
52  EXPECT_EQ(words[4], "test");
53  EXPECT_EQ(words[5], "3");
54 }
55 
56 } // namespace blender::string_search::tests
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define UI_MENU_ARROW_SEP
int64_t size() const
Definition: BLI_vector.hh:694
TEST(string_search, damerau_levenshtein_distance)
void extract_normalized_words(StringRef str, LinearAllocator<> &allocator, Vector< StringRef, 64 > &r_words)
int get_fuzzy_match_errors(StringRef query, StringRef full)
int damerau_levenshtein_distance(StringRef a, StringRef b)