view src/kword_test.c @ 22117:3ea773da9c4f v8.2.1608

patch 8.2.1608: Vim9: getchar() test fails with GUI Commit: https://github.com/vim/vim/commit/15183b41c4416b7638cce26de0a9a83e55948bdc Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 5 19:59:39 2020 +0200 patch 8.2.1608: Vim9: getchar() test fails with GUI Problem: Vim9: getchar() test fails with GUI. Solution: Avoid that getchar(0) gets stuck on K_IGNORE.
author Bram Moolenaar <Bram@vim.org>
date Sat, 05 Sep 2020 20:00:03 +0200
parents aadd1cae2ff5
children
line wrap: on
line source

/* 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"

/*
 * Test the results of vim_iswordc() and vim_iswordp() are matched.
 */
    static void
test_isword_funcs_utf8(void)
{
    buf_T buf;
    int c;

    CLEAR_FIELD(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();
	}
    }
}

    int
main(void)
{
    estack_init();
    test_isword_funcs_utf8();
    return 0;
}