spellcheck.c: add test_find_closest_string
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 7 Jun 2016 17:33:04 +0000 (17:33 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 7 Jun 2016 17:33:04 +0000 (17:33 +0000)
gcc/ChangeLog:
* spellcheck.c (selftest::test_find_closest_string): New function.
(spellcheck_c_tests): Call the above.

From-SVN: r237181

gcc/ChangeLog
gcc/spellcheck.c

index eeadbb2ca4b205eaa3544fed2d68791f36449843..d3c7b9493140995278a8056f4c3c47e5ce84894a 100644 (file)
@@ -1,3 +1,8 @@
+2016-06-07  David Malcolm  <dmalcolm@redhat.com>
+
+       * spellcheck.c (selftest::test_find_closest_string): New function.
+       (spellcheck_c_tests): Call the above.
+
 2016-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * simplify-rtx.c (simplify_cond_clz_ctz): Delete 'mode' local
index ceb60168bf167ea00759ead506e5dbf395017670..11018f0710eac2ee3c773d1fb30a6a1e2ff87136 100644 (file)
@@ -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