diff --git a/src/kword_test.c b/src/kword_test.c
new file mode 100644
index 0000000..2e6640b
--- /dev/null
+++ b/src/kword_test.c
@@ -0,0 +1,85 @@
+/* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+
+/*
+ * kword_test.c: Unittests for vim_iswordc() and vim_iswordp().
+ */
+
+#undef NDEBUG
+#include <assert.h>
+
+/* Must include main.c because it contains much more than just main() */
+#define NO_VIM_MAIN
+#include "main.c"
+
+/* This file has to be included because the tested functions are static */
+#include "charset.c"
+
+#ifdef FEAT_MBYTE
+/*
+ * Test the results of vim_iswordc() and vim_iswordp() are matched.
+ */
+    static void
+test_isword_funcs_utf8(void)
+{
+    buf_T buf;
+    int c;
+
+    vim_memset(&buf, 0, sizeof(buf));
+    p_enc = (char_u *)"utf-8";
+    p_isi = (char_u *)"";
+    p_isp = (char_u *)"";
+    p_isf = (char_u *)"";
+    buf.b_p_isk = (char_u *)"@,48-57,_,128-167,224-235";
+
+    curbuf = &buf;
+    mb_init(); /* calls init_chartab() */
+
+    for (c = 0; c < 0x10000; ++c)
+    {
+	char_u p[4] = {0};
+	int c1;
+	int retc;
+	int retp;
+
+	utf_char2bytes(c, p);
+	c1 = utf_ptr2char(p);
+	if (c != c1)
+	{
+	    fprintf(stderr, "Failed: ");
+	    fprintf(stderr,
+		    "[c = %#04x, p = {%#02x, %#02x, %#02x}] ",
+		    c, p[0], p[1], p[2]);
+	    fprintf(stderr, "c != utf_ptr2char(p) (=%#04x)\n", c1);
+	    abort();
+	}
+	retc = vim_iswordc_buf(c, &buf);
+	retp = vim_iswordp_buf(p, &buf);
+	if (retc != retp)
+	{
+	    fprintf(stderr, "Failed: ");
+	    fprintf(stderr,
+		    "[c = %#04x, p = {%#02x, %#02x, %#02x}] ",
+		    c, p[0], p[1], p[2]);
+	    fprintf(stderr, "vim_iswordc(c) (=%d) != vim_iswordp(p) (=%d)\n",
+		    retc, retp);
+	    abort();
+	}
+    }
+}
+#endif
+
+    int
+main(void)
+{
+#ifdef FEAT_MBYTE
+    test_isword_funcs_utf8();
+#endif
+    return 0;
+}
