This adds another test case to -fself-test. Successfully bootstrapped®rtested on x86_64-pc-linux-gnu.
OK for trunk? gcc/ChangeLog: * spellcheck.c (selftest::test_find_closest_string): New function. (spellcheck_c_tests): Call the above. --- gcc/spellcheck.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gcc/spellcheck.c b/gcc/spellcheck.c index ceb6016..11018f0 100644 --- a/gcc/spellcheck.c +++ b/gcc/spellcheck.c @@ -198,6 +198,27 @@ levenshtein_distance_unit_test (const char *a, const char *b, levenshtein_distance_unit_test_oneway (b, a, expected); } +/* Verify that find_closest_string is sane. */ + +static void +test_find_closest_string () +{ + auto_vec<const char *> candidates; + + /* Verify that it can handle an empty vec. */ + ASSERT_EQ (NULL, find_closest_string ("", &candidates)); + + /* Verify that it works sanely for non-empty vecs. */ + candidates.safe_push ("apple"); + candidates.safe_push ("banana"); + candidates.safe_push ("cherry"); + + ASSERT_STREQ ("apple", find_closest_string ("app", &candidates)); + ASSERT_STREQ ("banana", find_closest_string ("banyan", &candidates)); + ASSERT_STREQ ("cherry", find_closest_string ("berry", &candidates)); + ASSERT_EQ (NULL, find_closest_string ("not like the others", &candidates)); +} + /* Verify levenshtein_distance for a variety of pairs of pre-canned inputs, comparing against known-good values. */ @@ -218,6 +239,8 @@ spellcheck_c_tests () ("Lorem ipsum dolor sit amet, consectetur adipiscing elit,", "All your base are belong to us", 44); + + test_find_closest_string (); } } // namespace selftest -- 1.8.5.3