diff options
author | Sam McCall <sam.mccall@gmail.com> | 2018-10-04 14:01:55 +0000 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2018-10-04 14:01:55 +0000 |
commit | b5bbfef6cd89af8b13a3e96e72202400f6783b68 (patch) | |
tree | 91d6df61813be6edb6b51a701a1ad8f9ec45a496 /clang-tools-extra/unittests/clangd/DexTests.cpp | |
parent | 87f69eaf4e5022aa98b4b8c340efb72101fd16f5 (diff) | |
download | bcm5719-llvm-b5bbfef6cd89af8b13a3e96e72202400f6783b68.tar.gz bcm5719-llvm-b5bbfef6cd89af8b13a3e96e72202400f6783b68.zip |
[cland] Dex: fix/simplify short-trigram generation
Summary:
1) Instead of x$$ for a short-query trigram, just use x
2) Make rules more coherent: prefixes of length 1-2, and first char + next head
3) Fix Dex::fuzzyFind to mark results as incomplete, because
short-trigram rules only yield a subset of results.
Reviewers: ioeric
Subscribers: ilya-biryukov, jkorous, mgrang, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D52808
llvm-svn: 343775
Diffstat (limited to 'clang-tools-extra/unittests/clangd/DexTests.cpp')
-rw-r--r-- | clang-tools-extra/unittests/clangd/DexTests.cpp | 74 |
1 files changed, 50 insertions, 24 deletions
diff --git a/clang-tools-extra/unittests/clangd/DexTests.cpp b/clang-tools-extra/unittests/clangd/DexTests.cpp index c36573c1a80..29319303e51 100644 --- a/clang-tools-extra/unittests/clangd/DexTests.cpp +++ b/clang-tools-extra/unittests/clangd/DexTests.cpp @@ -367,53 +367,54 @@ trigramsAre(std::initializer_list<std::string> Trigrams) { TEST(DexTrigrams, IdentifierTrigrams) { EXPECT_THAT(generateIdentifierTrigrams("X86"), - trigramsAre({"x86", "x$$", "x8$"})); + trigramsAre({"x86", "x", "x8"})); - EXPECT_THAT(generateIdentifierTrigrams("nl"), trigramsAre({"nl$", "n$$"})); + EXPECT_THAT(generateIdentifierTrigrams("nl"), trigramsAre({"nl", "n"})); - EXPECT_THAT(generateIdentifierTrigrams("n"), trigramsAre({"n$$"})); + EXPECT_THAT(generateIdentifierTrigrams("n"), trigramsAre({"n"})); EXPECT_THAT(generateIdentifierTrigrams("clangd"), - trigramsAre({"c$$", "cl$", "cla", "lan", "ang", "ngd"})); + trigramsAre({"c", "cl", "cla", "lan", "ang", "ngd"})); EXPECT_THAT(generateIdentifierTrigrams("abc_def"), - trigramsAre({"a$$", "abc", "abd", "ade", "bcd", "bde", "cde", - "def", "ab$", "ad$"})); + trigramsAre({"a", "ab", "ad", "abc", "abd", "ade", "bcd", "bde", + "cde", "def"})); EXPECT_THAT(generateIdentifierTrigrams("a_b_c_d_e_"), - trigramsAre({"a$$", "a_$", "a_b", "abc", "abd", "acd", "ace", - "bcd", "bce", "bde", "cde", "ab$"})); + trigramsAre({"a", "a_", "ab", "abc", "abd", "acd", "ace", "bcd", + "bce", "bde", "cde"})); EXPECT_THAT(generateIdentifierTrigrams("unique_ptr"), - trigramsAre({"u$$", "uni", "unp", "upt", "niq", "nip", "npt", - "iqu", "iqp", "ipt", "que", "qup", "qpt", "uep", - "ept", "ptr", "un$", "up$"})); + trigramsAre({"u", "un", "up", "uni", "unp", "upt", "niq", "nip", + "npt", "iqu", "iqp", "ipt", "que", "qup", "qpt", + "uep", "ept", "ptr"})); EXPECT_THAT( generateIdentifierTrigrams("TUDecl"), - trigramsAre({"t$$", "tud", "tde", "ude", "dec", "ecl", "tu$", "td$"})); + trigramsAre({"t", "tu", "td", "tud", "tde", "ude", "dec", "ecl"})); EXPECT_THAT(generateIdentifierTrigrams("IsOK"), - trigramsAre({"i$$", "iso", "iok", "sok", "is$", "io$"})); + trigramsAre({"i", "is", "io", "iso", "iok", "sok"})); + auto X = generateIdentifierTrigrams("abc_defGhij__klm"); EXPECT_THAT( generateIdentifierTrigrams("abc_defGhij__klm"), - trigramsAre({"a$$", "abc", "abd", "abg", "ade", "adg", "adk", "agh", - "agk", "bcd", "bcg", "bde", "bdg", "bdk", "bgh", "bgk", - "cde", "cdg", "cdk", "cgh", "cgk", "def", "deg", "dek", - "dgh", "dgk", "dkl", "efg", "efk", "egh", "egk", "ekl", - "fgh", "fgk", "fkl", "ghi", "ghk", "gkl", "hij", "hik", - "hkl", "ijk", "ikl", "jkl", "klm", "ab$", "ad$"})); + trigramsAre({"a", "ab", "ad", "abc", "abd", "abg", "ade", "adg", + "adk", "agh", "agk", "bcd", "bcg", "bde", "bdg", "bdk", + "bgh", "bgk", "cde", "cdg", "cdk", "cgh", "cgk", "def", + "deg", "dek", "dgh", "dgk", "dkl", "efg", "efk", "egh", + "egk", "ekl", "fgh", "fgk", "fkl", "ghi", "ghk", "gkl", + "hij", "hik", "hkl", "ijk", "ikl", "jkl", "klm"})); } TEST(DexTrigrams, QueryTrigrams) { - EXPECT_THAT(generateQueryTrigrams("c"), trigramsAre({"c$$"})); - EXPECT_THAT(generateQueryTrigrams("cl"), trigramsAre({"cl$"})); + EXPECT_THAT(generateQueryTrigrams("c"), trigramsAre({"c"})); + EXPECT_THAT(generateQueryTrigrams("cl"), trigramsAre({"cl"})); EXPECT_THAT(generateQueryTrigrams("cla"), trigramsAre({"cla"})); - EXPECT_THAT(generateQueryTrigrams("_"), trigramsAre({"_$$"})); - EXPECT_THAT(generateQueryTrigrams("__"), trigramsAre({"__$"})); - EXPECT_THAT(generateQueryTrigrams("___"), trigramsAre({"___"})); + EXPECT_THAT(generateQueryTrigrams("_"), trigramsAre({"_"})); + EXPECT_THAT(generateQueryTrigrams("__"), trigramsAre({"__"})); + EXPECT_THAT(generateQueryTrigrams("___"), trigramsAre({})); EXPECT_THAT(generateQueryTrigrams("X86"), trigramsAre({"x86"})); @@ -529,6 +530,31 @@ TEST(DexTest, FuzzyMatch) { UnorderedElementsAre("LaughingOutLoud", "LittleOldLady")); } +// TODO(sammccall): enable after D52796 bugfix. +#if 0 +TEST(DexTest, ShortQuery) { + auto I = + Dex::build(generateSymbols({"OneTwoThreeFour"}), RefSlab(), URISchemes); + FuzzyFindRequest Req; + bool Incomplete; + + EXPECT_THAT(match(*I, Req, &Incomplete), ElementsAre("OneTwoThreeFour")); + EXPECT_FALSE(Incomplete) << "Empty string is not a short query"; + + Req.Query = "t"; + EXPECT_THAT(match(*I, Req, &Incomplete), ElementsAre()); + EXPECT_TRUE(Incomplete) << "Short queries have different semantics"; + + Req.Query = "tt"; + EXPECT_THAT(match(*I, Req, &Incomplete), ElementsAre()); + EXPECT_TRUE(Incomplete) << "Short queries have different semantics"; + + Req.Query = "ttf"; + EXPECT_THAT(match(*I, Req, &Incomplete), ElementsAre("OneTwoThreeFour")); + EXPECT_FALSE(Incomplete) << "3-char string is not a short query"; +} +#endif + TEST(DexTest, MatchQualifiedNamesWithoutSpecificScope) { auto I = Dex::build(generateSymbols({"a::y1", "b::y2", "y3"}), RefSlab(), URISchemes); |