1 /* Plugin for unittesting gcc/spellcheck.h. */
4 #include "gcc-plugin.h"
7 #include "spellcheck.h"
8 #include "diagnostic.h"
10 int plugin_is_GPL_compatible
;
13 levenshtein_distance_unit_test_oneway (const char *a
, const char *b
,
14 edit_distance_t expected
)
16 edit_distance_t actual
= levenshtein_distance (a
, b
);
17 if (actual
!= expected
)
18 error ("levenshtein_distance (\"%s\", \"%s\") : expected: %i got %i",
19 a
, b
, expected
, actual
);
24 levenshtein_distance_unit_test (const char *a
, const char *b
,
25 edit_distance_t expected
)
27 /* Run every test both ways to ensure it's symmetric. */
28 levenshtein_distance_unit_test_oneway (a
, b
, expected
);
29 levenshtein_distance_unit_test_oneway (b
, a
, expected
);
32 /* Callback handler for the PLUGIN_FINISH event; run
33 levenshtein_distance unit tests here. */
36 on_finish (void */
*gcc_data*/
, void */
*user_data*/
)
38 levenshtein_distance_unit_test ("", "nonempty", strlen ("nonempty"));
39 levenshtein_distance_unit_test ("saturday", "sunday", 3);
40 levenshtein_distance_unit_test ("foo", "m_foo", 2);
41 levenshtein_distance_unit_test ("hello_world", "HelloWorld", 3);
42 levenshtein_distance_unit_test
43 ("the quick brown fox jumps over the lazy dog", "dog", 40);
44 levenshtein_distance_unit_test
45 ("the quick brown fox jumps over the lazy dog",
46 "the quick brown dog jumps over the lazy fox",
48 levenshtein_distance_unit_test
49 ("Lorem ipsum dolor sit amet, consectetur adipiscing elit,",
50 "All your base are belong to us",
55 plugin_init (struct plugin_name_args
*plugin_info
,
56 struct plugin_gcc_version */
*version*/
)
58 register_callback (plugin_info
->base_name
,
61 NULL
); /* void *user_data */