diff mbox

spellcheck.c: add test_find_closest_string

Message ID 1465246985-48233-1-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm June 6, 2016, 9:03 p.m. UTC
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(+)

Comments

Bernd Schmidt June 7, 2016, 10:14 a.m. UTC | #1
On 06/06/2016 11:03 PM, David Malcolm wrote:
> This adds another test case to -fself-test.

Ok.


Bernd
diff mbox

Patch

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