diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 |
commit | eb11fae6d08f479c0799db45860a98af528fa6e7 (patch) | |
tree | 44d492a50c8c1a7eb8e2d17ea3360ec4d066f042 /unittests/Option/OptionParsingTest.cpp | |
parent | b8a2042aa938069e862750553db0e4d82d25822c (diff) |
Notes
Diffstat (limited to 'unittests/Option/OptionParsingTest.cpp')
-rw-r--r-- | unittests/Option/OptionParsingTest.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/unittests/Option/OptionParsingTest.cpp b/unittests/Option/OptionParsingTest.cpp index 6ac6283327bb..eef21ab51209 100644 --- a/unittests/Option/OptionParsingTest.cpp +++ b/unittests/Option/OptionParsingTest.cpp @@ -266,3 +266,48 @@ TEST(Option, FlagAliasToJoined) { EXPECT_EQ(1U, AL.getAllArgValues(OPT_B).size()); EXPECT_EQ("", AL.getAllArgValues(OPT_B)[0]); } + +TEST(Option, FindNearest) { + TestOptTable T; + std::string Nearest; + + // Options that are too short should not be considered + // "near" other short options. + EXPECT_GT(T.findNearest("-A", Nearest), 4U); + EXPECT_GT(T.findNearest("/C", Nearest), 4U); + EXPECT_GT(T.findNearest("--C=foo", Nearest), 4U); + + // The nearest candidate should mirror the amount of prefix + // characters used in the original string. + EXPECT_EQ(1U, T.findNearest("-blorb", Nearest)); + EXPECT_EQ(Nearest, "-blorp"); + EXPECT_EQ(1U, T.findNearest("--blorm", Nearest)); + EXPECT_EQ(Nearest, "--blorp"); + EXPECT_EQ(1U, T.findNearest("-fjormp", Nearest)); + EXPECT_EQ(Nearest, "--fjormp"); + + // The nearest candidate respects the prefix and value delimiter + // of the original string. + EXPECT_EQ(1U, T.findNearest("/framb:foo", Nearest)); + EXPECT_EQ(Nearest, "/cramb:foo"); + + // Flags should be included and excluded as specified. + EXPECT_EQ(1U, T.findNearest("-doopf", Nearest, /*FlagsToInclude=*/OptFlag2)); + EXPECT_EQ(Nearest, "-doopf2"); + EXPECT_EQ(1U, T.findNearest("-doopf", Nearest, + /*FlagsToInclude=*/0, + /*FlagsToExclude=*/OptFlag2)); + EXPECT_EQ(Nearest, "-doopf1"); +} + +TEST(DISABLED_Option, FindNearestFIXME) { + TestOptTable T; + std::string Nearest; + + // FIXME: Options with joined values should not have those values considered + // when calculating distance. The test below would fail if run, but it should + // succeed. + EXPECT_EQ(1U, T.findNearest("--erbghFoo", Nearest)); + EXPECT_EQ(Nearest, "--ermghFoo"); + +} |