[PATCH] spellcheck.c: add test_find_closest_string

David Malcolm dmalcolm@redhat.com
Mon Jun 6 20:37:00 GMT 2016


This adds another test case to -fself-test.

Successfully bootstrapped&regrtested 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



More information about the Gcc-patches mailing list