aboutsummaryrefslogtreecommitdiff
path: root/gcc/spellcheck-tree.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-06-15 00:12:16 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-06-15 00:12:16 +0000
commitf254671f2f9a83843b7b77b496689791bdfdb4fe (patch)
treecf61ac3757fd5bfdcfc0f5e53278cd0e3d0606c1 /gcc/spellcheck-tree.c
parentee62e30213a72a93ebee9bfbadc3612cef175957 (diff)
downloadgcc-f254671f2f9a83843b7b77b496689791bdfdb4fe.zip
gcc-f254671f2f9a83843b7b77b496689791bdfdb4fe.tar.gz
gcc-f254671f2f9a83843b7b77b496689791bdfdb4fe.tar.bz2
Add more spellcheck selftests
gcc/ChangeLog: * selftest-run-tests.c (selftest::run_tests): Call selftest::spellcheck_tree_c_tests. * selftest.h (selftest::spellcheck_tree_c_tests): New decl. * spellcheck-tree.c: Include selftest.h and stringpool.h. (selftest::test_find_closest_identifier): New function. (selftest::spellcheck_tree_c_tests): New function. * spellcheck.c (selftest::test_find_closest_string): Verify that the order of the vec does not affect the results for this case. (selftest::test_data): New array. (selftest::test_metric_conditions): New function. (selftest::spellcheck_c_tests): Add a test of case-comparison. Call selftest::test_metric_conditions. From-SVN: r237466
Diffstat (limited to 'gcc/spellcheck-tree.c')
-rw-r--r--gcc/spellcheck-tree.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/spellcheck-tree.c b/gcc/spellcheck-tree.c
index eb6e72a..2d73b774 100644
--- a/gcc/spellcheck-tree.c
+++ b/gcc/spellcheck-tree.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "spellcheck.h"
+#include "selftest.h"
+#include "stringpool.h"
/* Calculate Levenshtein distance between two identifiers. */
@@ -78,3 +80,50 @@ find_closest_identifier (tree target, const auto_vec<tree> *candidates)
return best_identifier;
}
+
+#if CHECKING_P
+
+namespace selftest {
+
+/* Selftests. */
+
+/* Verify that find_closest_identifier is sane. */
+
+static void
+test_find_closest_identifier ()
+{
+ auto_vec<tree> candidates;
+
+ /* Verify that it can handle an empty vec. */
+ ASSERT_EQ (NULL, find_closest_identifier (get_identifier (""), &candidates));
+
+ /* Verify that it works sanely for non-empty vecs. */
+ tree apple = get_identifier ("apple");
+ tree banana = get_identifier ("banana");
+ tree cherry = get_identifier ("cherry");
+ candidates.safe_push (apple);
+ candidates.safe_push (banana);
+ candidates.safe_push (cherry);
+
+ ASSERT_EQ (apple, find_closest_identifier (get_identifier ("app"),
+ &candidates));
+ ASSERT_EQ (banana, find_closest_identifier (get_identifier ("banyan"),
+ &candidates));;
+ ASSERT_EQ (cherry, find_closest_identifier (get_identifier ("berry"),
+ &candidates));
+ ASSERT_EQ (NULL,
+ find_closest_identifier (get_identifier ("not like the others"),
+ &candidates));
+}
+
+/* Run all of the selftests within this file. */
+
+void
+spellcheck_tree_c_tests ()
+{
+ test_find_closest_identifier ();
+}
+
+} // namespace selftest
+
+#endif /* #if CHECKING_P */