summaryrefslogtreecommitdiff
path: root/uvim/src/testing.c
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
commit4f2d36194b4f299aa7509d815c07121039ea833b (patch)
treef3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /uvim/src/testing.c
parent5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff)
downloadProject-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz
Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'uvim/src/testing.c')
-rw-r--r--uvim/src/testing.c1611
1 files changed, 0 insertions, 1611 deletions
diff --git a/uvim/src/testing.c b/uvim/src/testing.c
deleted file mode 100644
index a6c40d9950..0000000000
--- a/uvim/src/testing.c
+++ /dev/null
@@ -1,1611 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4 noet:
- *
- * MNV - MNV is not Vim by Bram Moolenaar
- *
- * Do ":help uganda" in MNV to read copying and usage conditions.
- * Do ":help credits" in MNV to see a list of people who contributed.
- * See README.txt for an overview of the MNV source code.
- */
-
-/*
- * testing.c: Support for tests.
- */
-
-#include "mnv.h"
-
-#if defined(FEAT_EVAL)
-
-/*
- * Prepare "gap" for an assert error and add the sourcing position.
- */
- static void
-prepare_assert_error(garray_T *gap)
-{
- char_u *sname = estack_sfile(ESTACK_NONE);
-
- ga_init2(gap, 1, 100);
- if (sname != NULL)
- {
- ga_concat(gap, sname);
- if (SOURCING_LNUM > 0)
- GA_CONCAT_LITERAL(gap, " ");
- }
- if (SOURCING_LNUM > 0)
- {
- char buf[NUMBUFLEN];
- size_t buflen;
-
- buflen = mnv_snprintf_safelen(buf, sizeof(buf), "line %ld", (long)SOURCING_LNUM);
- ga_concat_len(gap, (char_u *)buf, buflen);
- }
- if (sname != NULL || SOURCING_LNUM > 0)
- GA_CONCAT_LITERAL(gap, ": ");
- mnv_free(sname);
-}
-
-/*
- * Append "p[clen]" to "gap", escaping unprintable characters.
- * Changes NL to \n, CR to \r, etc.
- */
- static void
-ga_concat_esc(garray_T *gap, char_u *p, int clen)
-{
- char_u buf[NUMBUFLEN];
-
- if (clen > 1)
- {
- mch_memmove(buf, p, clen);
- buf[clen] = NUL;
- ga_concat_len(gap, buf, clen);
- return;
- }
-
- switch (*p)
- {
- case BS: GA_CONCAT_LITERAL(gap, "\\b"); break;
- case ESC: GA_CONCAT_LITERAL(gap, "\\e"); break;
- case FF: GA_CONCAT_LITERAL(gap, "\\f"); break;
- case NL: GA_CONCAT_LITERAL(gap, "\\n"); break;
- case TAB: GA_CONCAT_LITERAL(gap, "\\t"); break;
- case CAR: GA_CONCAT_LITERAL(gap, "\\r"); break;
- case '\\': GA_CONCAT_LITERAL(gap, "\\\\"); break;
- default:
- if (*p < ' ' || *p == 0x7f)
- {
- size_t buflen;
-
- buflen = mnv_snprintf_safelen((char *)buf, sizeof(buf),
- "\\x%02x", *p);
- ga_concat_len(gap, buf, buflen);
- }
- else
- ga_append(gap, *p);
- break;
- }
-}
-
-/*
- * Append "str" to "gap", escaping unprintable characters.
- * Changes NL to \n, CR to \r, etc.
- */
- static void
-ga_concat_shorten_esc(garray_T *gap, char_u *str)
-{
- char_u *p;
- char_u *s;
- int c;
- int clen;
- char_u buf[NUMBUFLEN];
- size_t buflen;
- int same_len;
-
- if (str == NULL)
- {
- GA_CONCAT_LITERAL(gap, "NULL");
- return;
- }
-
- for (p = str; *p != NUL; )
- {
- same_len = 1;
- s = p;
- c = mb_cptr2char_adv(&s);
- clen = s - p;
- while (*s != NUL && c == mb_ptr2char(s))
- {
- ++same_len;
- s += clen;
- }
- if (same_len > 20)
- {
- GA_CONCAT_LITERAL(gap, "\\[");
- ga_concat_esc(gap, p, clen);
- GA_CONCAT_LITERAL(gap, " occurs ");
- buflen = mnv_snprintf_safelen((char *)buf, sizeof(buf),
- "%d", same_len);
- ga_concat_len(gap, buf, buflen);
- GA_CONCAT_LITERAL(gap, " times]");
- p = s;
- }
- else
- {
- ga_concat_esc(gap, p, clen);
- p += clen;
- }
- }
-}
-
-/*
- * Fill "gap" with information about an assert error.
- */
- static void
-fill_assert_error(
- garray_T *gap,
- typval_T *opt_msg_tv,
- char_u *exp_str,
- typval_T *exp_tv_arg,
- typval_T *got_tv_arg,
- assert_type_T atype)
-{
- char_u numbuf[NUMBUFLEN];
- char_u *tofree;
- typval_T *exp_tv = exp_tv_arg;
- typval_T *got_tv = got_tv_arg;
- int did_copy = FALSE;
- int omitted = 0;
-
- if (opt_msg_tv->v_type != VAR_UNKNOWN
- && !(opt_msg_tv->v_type == VAR_STRING
- && (opt_msg_tv->vval.v_string == NULL
- || *opt_msg_tv->vval.v_string == NUL)))
- {
- ga_concat(gap, echo_string(opt_msg_tv, &tofree, numbuf, 0));
- mnv_free(tofree);
- GA_CONCAT_LITERAL(gap, ": ");
- }
-
- if (atype == ASSERT_MATCH || atype == ASSERT_NOTMATCH)
- GA_CONCAT_LITERAL(gap, "Pattern ");
- else if (atype == ASSERT_NOTEQUAL)
- GA_CONCAT_LITERAL(gap, "Expected not equal to ");
- else
- GA_CONCAT_LITERAL(gap, "Expected ");
- if (exp_str == NULL)
- {
- // When comparing dictionaries, drop the items that are equal, so that
- // it's a lot easier to see what differs.
- if (atype != ASSERT_NOTEQUAL
- && exp_tv->v_type == VAR_DICT && got_tv->v_type == VAR_DICT
- && exp_tv->vval.v_dict != NULL && got_tv->vval.v_dict != NULL)
- {
- dict_T *exp_d = exp_tv->vval.v_dict;
- dict_T *got_d = got_tv->vval.v_dict;
- hashitem_T *hi;
- dictitem_T *item2;
- int todo;
-
- did_copy = TRUE;
- exp_tv->vval.v_dict = dict_alloc();
- got_tv->vval.v_dict = dict_alloc();
- if (exp_tv->vval.v_dict == NULL || got_tv->vval.v_dict == NULL)
- {
- dict_unref(exp_tv->vval.v_dict);
- exp_tv->vval.v_dict = NULL;
- dict_unref(got_tv->vval.v_dict);
- got_tv->vval.v_dict = NULL;
- return;
- }
-
- todo = (int)exp_d->dv_hashtab.ht_used;
- FOR_ALL_HASHTAB_ITEMS(&exp_d->dv_hashtab, hi, todo)
- {
- if (!HASHITEM_EMPTY(hi))
- {
- item2 = dict_find(got_d, hi->hi_key, -1);
- if (item2 == NULL || !tv_equal(&HI2DI(hi)->di_tv,
- &item2->di_tv, FALSE))
- {
- // item of exp_d not present in got_d or values differ.
- dict_add_tv(exp_tv->vval.v_dict,
- (char *)hi->hi_key, &HI2DI(hi)->di_tv);
- if (item2 != NULL)
- dict_add_tv(got_tv->vval.v_dict,
- (char *)hi->hi_key, &item2->di_tv);
- }
- else
- ++omitted;
- --todo;
- }
- }
-
- // Add items only present in got_d.
- todo = (int)got_d->dv_hashtab.ht_used;
- FOR_ALL_HASHTAB_ITEMS(&got_d->dv_hashtab, hi, todo)
- {
- if (!HASHITEM_EMPTY(hi))
- {
- item2 = dict_find(exp_d, hi->hi_key, -1);
- if (item2 == NULL)
- // item of got_d not present in exp_d
- dict_add_tv(got_tv->vval.v_dict,
- (char *)hi->hi_key, &HI2DI(hi)->di_tv);
- --todo;
- }
- }
- }
-
- ga_concat_shorten_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0));
- mnv_free(tofree);
- }
- else
- {
- if (atype == ASSERT_FAILS)
- GA_CONCAT_LITERAL(gap, "'");
- ga_concat_shorten_esc(gap, exp_str);
- if (atype == ASSERT_FAILS)
- GA_CONCAT_LITERAL(gap, "'");
- }
- if (atype != ASSERT_NOTEQUAL)
- {
- if (atype == ASSERT_MATCH)
- GA_CONCAT_LITERAL(gap, " does not match ");
- else if (atype == ASSERT_NOTMATCH)
- GA_CONCAT_LITERAL(gap, " does match ");
- else
- GA_CONCAT_LITERAL(gap, " but got ");
- ga_concat_shorten_esc(gap, tv2string(got_tv, &tofree, numbuf, 0));
- mnv_free(tofree);
-
- if (omitted != 0)
- {
- char buf[100];
- size_t buflen;
-
- buflen = mnv_snprintf_safelen(buf, sizeof(buf),
- " - %d equal item%s omitted", omitted, omitted == 1 ? "" : "s");
- ga_concat_len(gap, (char_u *)buf, buflen);
- }
- }
-
- if (did_copy)
- {
- clear_tv(exp_tv);
- clear_tv(got_tv);
- }
-}
-
- static int
-assert_equal_common(typval_T *argvars, assert_type_T atype)
-{
- garray_T ga;
-
- if (tv_equal(&argvars[0], &argvars[1], FALSE)
- != (atype == ASSERT_EQUAL))
- {
- prepare_assert_error(&ga);
- fill_assert_error(&ga, &argvars[2], NULL, &argvars[0], &argvars[1],
- atype);
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
- return 0;
-}
-
- static int
-assert_match_common(typval_T *argvars, assert_type_T atype)
-{
- garray_T ga;
- char_u buf1[NUMBUFLEN];
- char_u buf2[NUMBUFLEN];
-
- if (in_mnv9script()
- && (check_for_string_arg(argvars, 0) == FAIL
- || check_for_string_arg(argvars, 1) == FAIL
- || check_for_opt_string_arg(argvars, 2) == FAIL))
- return 1;
-
- char_u *pat = tv_get_string_buf_chk(&argvars[0], buf1);
- char_u *text = tv_get_string_buf_chk(&argvars[1], buf2);
- if (pat != NULL && text != NULL
- && pattern_match(pat, text, FALSE) != (atype == ASSERT_MATCH))
- {
- prepare_assert_error(&ga);
- fill_assert_error(&ga, &argvars[2], NULL, &argvars[0], &argvars[1],
- atype);
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
- return 0;
-}
-
-/*
- * Common for assert_true() and assert_false().
- * Return non-zero for failure.
- */
- static int
-assert_bool(typval_T *argvars, int isTrue)
-{
- int error = FALSE;
- garray_T ga;
-
- if (argvars[0].v_type == VAR_BOOL
- && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE))
- return 0;
- if (argvars[0].v_type != VAR_NUMBER
- || (tv_get_number_chk(&argvars[0], &error) == 0) == isTrue
- || error)
- {
- prepare_assert_error(&ga);
- fill_assert_error(&ga, &argvars[1],
- (char_u *)(isTrue ? "True" : "False"),
- NULL, &argvars[0], ASSERT_OTHER);
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
- return 0;
-}
-
- static void
-assert_append_cmd_or_arg(garray_T *gap, typval_T *argvars, char_u *cmd)
-{
- char_u *tofree;
- char_u numbuf[NUMBUFLEN];
-
- if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN)
- {
- ga_concat(gap, echo_string(&argvars[2], &tofree, numbuf, 0));
- mnv_free(tofree);
- }
- else
- ga_concat(gap, cmd);
-}
-
- static int
-assert_beeps(typval_T *argvars, int no_beep)
-{
- char_u *cmd;
- garray_T ga;
- int ret = 0;
-
- if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL)
- return 0;
-
- cmd = tv_get_string_chk(&argvars[0]);
- called_mnv_beep = FALSE;
- suppress_errthrow = TRUE;
- emsg_silent = FALSE;
- do_cmdline_cmd(cmd);
- if (no_beep ? called_mnv_beep : !called_mnv_beep)
- {
- prepare_assert_error(&ga);
- if (no_beep)
- GA_CONCAT_LITERAL(&ga, "command did beep: ");
- else
- GA_CONCAT_LITERAL(&ga, "command did not beep: ");
- ga_concat(&ga, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- ret = 1;
- }
-
- suppress_errthrow = FALSE;
- emsg_on_display = FALSE;
- return ret;
-}
-
-/*
- * "assert_beeps(cmd)" function
- */
- void
-f_assert_beeps(typval_T *argvars, typval_T *rettv)
-{
- if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- rettv->vval.v_number = assert_beeps(argvars, FALSE);
-}
-
-/*
- * "assert_nobeep(cmd)" function
- */
- void
-f_assert_nobeep(typval_T *argvars, typval_T *rettv)
-{
- if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- rettv->vval.v_number = assert_beeps(argvars, TRUE);
-}
-
-/*
- * "assert_equal(expected, actual[, msg])" function
- */
- void
-f_assert_equal(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_equal_common(argvars, ASSERT_EQUAL);
-}
-
- static int
-assert_equalfile(typval_T *argvars)
-{
- char_u buf1[NUMBUFLEN];
- char_u buf2[NUMBUFLEN];
- char_u *fname1 = tv_get_string_buf_chk(&argvars[0], buf1);
- char_u *fname2 = tv_get_string_buf_chk(&argvars[1], buf2);
- FILE *fd1;
- FILE *fd2;
- char line1[200];
- char line2[200];
- int lineidx = 0;
- size_t IObufflen;
-
- if (fname1 == NULL || fname2 == NULL)
- return 0;
-
- IObuff[0] = NUL;
- IObufflen = 0;
- fd1 = mch_fopen((char *)fname1, READBIN);
- if (fd1 == NULL)
- {
- IObufflen = mnv_snprintf_safelen((char *)IObuff, IOSIZE,
- (char *)e_cant_read_file_str, fname1);
- }
- else
- {
- fd2 = mch_fopen((char *)fname2, READBIN);
- if (fd2 == NULL)
- {
- fclose(fd1);
- IObufflen = mnv_snprintf_safelen((char *)IObuff, IOSIZE,
- (char *)e_cant_read_file_str, fname2);
- }
- else
- {
- int c1, c2;
- long count = 0;
- long linecount = 1;
-
- for (;;)
- {
- c1 = fgetc(fd1);
- c2 = fgetc(fd2);
- if (c1 == EOF)
- {
- if (c2 != EOF)
- {
- STRCPY(IObuff, "first file is shorter");
- IObufflen = 21;
- }
- break;
- }
- else if (c2 == EOF)
- {
- STRCPY(IObuff, "second file is shorter");
- IObufflen = 22;
- break;
- }
- else
- {
- line1[lineidx] = c1;
- line2[lineidx] = c2;
- ++lineidx;
- if (c1 != c2)
- {
- IObufflen = mnv_snprintf_safelen((char *)IObuff, IOSIZE,
- "difference at byte %ld, line %ld", count, linecount);
- break;
- }
- }
- ++count;
- if (c1 == NL)
- {
- ++linecount;
- lineidx = 0;
- }
- else if (lineidx + 2 == (int)sizeof(line1))
- {
- mch_memmove(line1, line1 + 100, lineidx - 100);
- mch_memmove(line2, line2 + 100, lineidx - 100);
- lineidx -= 100;
- }
- }
- fclose(fd1);
- fclose(fd2);
- }
- }
-
- if (IObufflen > 0)
- {
- garray_T ga;
- prepare_assert_error(&ga);
- if (argvars[2].v_type != VAR_UNKNOWN)
- {
- char_u numbuf[NUMBUFLEN];
- char_u *tofree;
-
- ga_concat(&ga, echo_string(&argvars[2], &tofree, numbuf, 0));
- mnv_free(tofree);
- GA_CONCAT_LITERAL(&ga, ": ");
- }
- ga_concat_len(&ga, IObuff, IObufflen);
- if (lineidx > 0)
- {
- line1[lineidx] = NUL;
- line2[lineidx] = NUL;
- GA_CONCAT_LITERAL(&ga, " after \"");
- ga_concat_len(&ga, (char_u *)line1, lineidx);
- if (STRCMP(line1, line2) != 0)
- {
- GA_CONCAT_LITERAL(&ga, "\" vs \"");
- ga_concat_len(&ga, (char_u *)line2, lineidx);
- }
- GA_CONCAT_LITERAL(&ga, "\"");
- }
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
-
- return 0;
-}
-
-/*
- * "assert_equalfile(fname-one, fname-two[, msg])" function
- */
- void
-f_assert_equalfile(typval_T *argvars, typval_T *rettv)
-{
- if (in_mnv9script()
- && (check_for_string_arg(argvars, 0) == FAIL
- || check_for_string_arg(argvars, 1) == FAIL
- || check_for_opt_string_arg(argvars, 2) == FAIL))
- return;
-
- rettv->vval.v_number = assert_equalfile(argvars);
-}
-
-/*
- * "assert_notequal(expected, actual[, msg])" function
- */
- void
-f_assert_notequal(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_equal_common(argvars, ASSERT_NOTEQUAL);
-}
-
-/*
- * "assert_exception(string[, msg])" function
- */
- void
-f_assert_exception(typval_T *argvars, typval_T *rettv)
-{
- garray_T ga;
- char_u *error;
-
- if (in_mnv9script()
- && (check_for_string_arg(argvars, 0) == FAIL
- || check_for_opt_string_arg(argvars, 1) == FAIL))
- return;
-
- error = tv_get_string_chk(&argvars[0]);
- if (*get_mnv_var_str(VV_EXCEPTION) == NUL)
- {
- prepare_assert_error(&ga);
- GA_CONCAT_LITERAL(&ga, "v:exception is not set");
- assert_error(&ga);
- ga_clear(&ga);
- rettv->vval.v_number = 1;
- }
- else if (error != NULL
- && strstr((char *)get_mnv_var_str(VV_EXCEPTION), (char *)error) == NULL)
- {
- prepare_assert_error(&ga);
- fill_assert_error(&ga, &argvars[1], NULL, &argvars[0],
- get_mnv_var_tv(VV_EXCEPTION), ASSERT_OTHER);
- assert_error(&ga);
- ga_clear(&ga);
- rettv->vval.v_number = 1;
- }
-}
-
-/*
- * "assert_fails(cmd [, error[, msg]])" function
- */
- void
-f_assert_fails(typval_T *argvars, typval_T *rettv)
-{
- garray_T ga;
- int save_trylevel = trylevel;
- int called_emsg_before = called_emsg;
- char *wrong_arg_msg = NULL;
- char_u *tofree = NULL;
-
- if (check_for_string_or_number_arg(argvars, 0) == FAIL
- || check_for_opt_string_or_list_arg(argvars, 1) == FAIL
- || (argvars[1].v_type != VAR_UNKNOWN
- && (argvars[2].v_type != VAR_UNKNOWN
- && (check_for_opt_number_arg(argvars, 3) == FAIL
- || (argvars[3].v_type != VAR_UNKNOWN
- && check_for_opt_string_arg(argvars, 4) == FAIL)))))
- return;
-
- // trylevel must be zero for a ":throw" command to be considered failed
- trylevel = 0;
- suppress_errthrow = TRUE;
- in_assert_fails = TRUE;
- ++no_wait_return;
-
- char_u *cmd = tv_get_string_chk(&argvars[0]);
- do_cmdline_cmd(cmd);
-
- // reset here for any errors reported below
- trylevel = save_trylevel;
- suppress_errthrow = FALSE;
-
- if (called_emsg == called_emsg_before)
- {
- prepare_assert_error(&ga);
- GA_CONCAT_LITERAL(&ga, "command did not fail: ");
- assert_append_cmd_or_arg(&ga, argvars, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- rettv->vval.v_number = 1;
- }
- else if (argvars[1].v_type != VAR_UNKNOWN)
- {
- char_u buf[NUMBUFLEN];
- char_u *expected;
- char_u *expected_str = NULL;
- int error_found = FALSE;
- int error_found_index = 1;
- char_u *actual = emsg_assert_fails_msg == NULL ? (char_u *)"[unknown]"
- : emsg_assert_fails_msg;
-
- if (argvars[1].v_type == VAR_STRING)
- {
- expected = tv_get_string_buf_chk(&argvars[1], buf);
- error_found = expected == NULL
- || strstr((char *)actual, (char *)expected) == NULL;
- }
- else if (argvars[1].v_type == VAR_LIST)
- {
- list_T *list = argvars[1].vval.v_list;
- typval_T *tv;
-
- if (list == NULL || list->lv_len < 1 || list->lv_len > 2)
- {
- wrong_arg_msg = e_assert_fails_second_arg;
- goto theend;
- }
- CHECK_LIST_MATERIALIZE(list);
- tv = &list->lv_first->li_tv;
- expected = tv_get_string_buf_chk(tv, buf);
- if (expected == NULL)
- goto theend;
- if (!pattern_match(expected, actual, FALSE))
- {
- error_found = TRUE;
- expected_str = expected;
- }
- else if (list->lv_len == 2)
- {
- // make a copy, an error in pattern_match() may free it
- tofree = actual = mnv_strsave(get_mnv_var_str(VV_ERRMSG));
- if (actual != NULL)
- {
- tv = &list->lv_u.mat.lv_last->li_tv;
- expected = tv_get_string_buf_chk(tv, buf);
- if (expected == NULL)
- goto theend;
- if (!pattern_match(expected, actual, FALSE))
- {
- error_found = TRUE;
- expected_str = expected;
- }
- }
- }
- }
- else
- {
- wrong_arg_msg = e_assert_fails_second_arg;
- goto theend;
- }
-
- if (!error_found && argvars[2].v_type != VAR_UNKNOWN
- && argvars[3].v_type != VAR_UNKNOWN)
- {
- if (argvars[3].v_type != VAR_NUMBER)
- {
- wrong_arg_msg = e_assert_fails_fourth_argument;
- goto theend;
- }
- else if (argvars[3].vval.v_number >= 0
- && argvars[3].vval.v_number != emsg_assert_fails_lnum)
- {
- error_found = TRUE;
- error_found_index = 3;
- }
- if (!error_found && argvars[4].v_type != VAR_UNKNOWN)
- {
- if (argvars[4].v_type != VAR_STRING)
- {
- wrong_arg_msg = e_assert_fails_fifth_argument;
- goto theend;
- }
- else if (argvars[4].vval.v_string != NULL
- && !pattern_match(argvars[4].vval.v_string,
- emsg_assert_fails_context, FALSE))
- {
- error_found = TRUE;
- error_found_index = 4;
- }
- }
- }
-
- if (error_found)
- {
- typval_T actual_tv;
-
- prepare_assert_error(&ga);
- if (error_found_index == 3)
- {
- actual_tv.v_type = VAR_NUMBER;
- actual_tv.vval.v_number = emsg_assert_fails_lnum;
- }
- else if (error_found_index == 4)
- {
- actual_tv.v_type = VAR_STRING;
- actual_tv.vval.v_string = emsg_assert_fails_context;
- }
- else
- {
- actual_tv.v_type = VAR_STRING;
- actual_tv.vval.v_string = actual;
- }
- fill_assert_error(&ga, &argvars[2], expected_str,
- &argvars[error_found_index], &actual_tv, ASSERT_FAILS);
- GA_CONCAT_LITERAL(&ga, ": ");
- assert_append_cmd_or_arg(&ga, argvars, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- rettv->vval.v_number = 1;
- }
- }
-
-theend:
- trylevel = save_trylevel;
- suppress_errthrow = FALSE;
- in_assert_fails = FALSE;
- did_emsg = FALSE;
- got_int = FALSE;
- msg_col = 0;
- --no_wait_return;
- need_wait_return = FALSE;
- emsg_on_display = FALSE;
- msg_scrolled = 0;
- lines_left = Rows;
- MNV_CLEAR(emsg_assert_fails_msg);
- mnv_free(tofree);
- set_mnv_var_string(VV_ERRMSG, NULL, 0);
- if (wrong_arg_msg != NULL)
- emsg(_(wrong_arg_msg));
-}
-
-/*
- * "assert_false(actual[, msg])" function
- */
- void
-f_assert_false(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_bool(argvars, FALSE);
-}
-
- static int
-assert_inrange(typval_T *argvars)
-{
- garray_T ga;
- int error = FALSE;
- char_u expected_str[200];
-
- if (argvars[0].v_type == VAR_FLOAT
- || argvars[1].v_type == VAR_FLOAT
- || argvars[2].v_type == VAR_FLOAT)
- {
- float_T flower = tv_get_float(&argvars[0]);
- float_T fupper = tv_get_float(&argvars[1]);
- float_T factual = tv_get_float(&argvars[2]);
-
- if (factual < flower || factual > fupper)
- {
- prepare_assert_error(&ga);
- mnv_snprintf((char *)expected_str, 200, "range %g - %g,",
- flower, fupper);
- fill_assert_error(&ga, &argvars[3], expected_str, NULL,
- &argvars[2], ASSERT_OTHER);
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
- }
- else
- {
- varnumber_T lower = tv_get_number_chk(&argvars[0], &error);
- varnumber_T upper = tv_get_number_chk(&argvars[1], &error);
- varnumber_T actual = tv_get_number_chk(&argvars[2], &error);
-
- if (error)
- return 0;
- if (actual < lower || actual > upper)
- {
- prepare_assert_error(&ga);
- mnv_snprintf((char *)expected_str, 200, "range %ld - %ld,",
- (long)lower, (long)upper);
- fill_assert_error(&ga, &argvars[3], expected_str, NULL,
- &argvars[2], ASSERT_OTHER);
- assert_error(&ga);
- ga_clear(&ga);
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * "assert_inrange(lower, upper[, msg])" function
- */
- void
-f_assert_inrange(typval_T *argvars, typval_T *rettv)
-{
- if (check_for_float_or_nr_arg(argvars, 0) == FAIL
- || check_for_float_or_nr_arg(argvars, 1) == FAIL
- || check_for_float_or_nr_arg(argvars, 2) == FAIL
- || check_for_opt_string_arg(argvars, 3) == FAIL)
- return;
-
- rettv->vval.v_number = assert_inrange(argvars);
-}
-
-/*
- * "assert_match(pattern, actual[, msg])" function
- */
- void
-f_assert_match(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_match_common(argvars, ASSERT_MATCH);
-}
-
-/*
- * "assert_notmatch(pattern, actual[, msg])" function
- */
- void
-f_assert_notmatch(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_match_common(argvars, ASSERT_NOTMATCH);
-}
-
-/*
- * "assert_report(msg)" function
- */
- void
-f_assert_report(typval_T *argvars, typval_T *rettv)
-{
- garray_T ga;
-
- if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- prepare_assert_error(&ga);
- ga_concat(&ga, tv_get_string(&argvars[0]));
- assert_error(&ga);
- ga_clear(&ga);
- rettv->vval.v_number = 1;
-}
-
-/*
- * "assert_true(actual[, msg])" function
- */
- void
-f_assert_true(typval_T *argvars, typval_T *rettv)
-{
- rettv->vval.v_number = assert_bool(argvars, TRUE);
-}
-
-/*
- * "test_alloc_fail(id, countdown, repeat)" function
- */
- void
-f_test_alloc_fail(typval_T *argvars, typval_T *rettv UNUSED)
-{
- if (in_mnv9script()
- && (check_for_number_arg(argvars, 0) == FAIL
- || check_for_number_arg(argvars, 1) == FAIL
- || check_for_number_arg(argvars, 2) == FAIL))
- return;
-
- if (argvars[0].v_type != VAR_NUMBER
- || argvars[0].vval.v_number <= 0
- || argvars[1].v_type != VAR_NUMBER
- || argvars[1].vval.v_number < 0
- || argvars[2].v_type != VAR_NUMBER)
- emsg(_(e_invalid_argument));
- else
- {
- alloc_fail_id = argvars[0].vval.v_number;
- if (alloc_fail_id >= aid_last)
- emsg(_(e_invalid_argument));
- alloc_fail_countdown = argvars[1].vval.v_number;
- alloc_fail_repeat = argvars[2].vval.v_number;
- did_outofmem_msg = FALSE;
- }
-}
-
-/*
- * "test_autochdir()"
- */
- void
-f_test_autochdir(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
-#if defined(FEAT_AUTOCHDIR)
- test_autochdir = TRUE;
-#endif
-}
-
-/*
- * "test_feedinput()"
- */
- void
-f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED)
-{
-#ifdef USE_INPUT_BUF
- char_u *val;
-
- if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- val = tv_get_string_chk(&argvars[0]);
-# ifdef MNVDLL
- // this doesn't work in the console
- if (!gui.in_use)
- return;
-# endif
-
- if (val != NULL)
- {
- trash_input_buf();
- add_to_input_buf_csi(val, (int)STRLEN(val));
- }
-#endif
-}
-
-/*
- * "test_getvalue({name})" function
- */
- void
-f_test_getvalue(typval_T *argvars, typval_T *rettv)
-{
- char_u *name;
-
- if (check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- name = tv_get_string(&argvars[0]);
-
- if (STRCMP(name, (char_u *)"need_fileinfo") == 0)
- rettv->vval.v_number = need_fileinfo;
- else
- semsg(_(e_invalid_argument_str), name);
-}
-
-/*
- * "test_option_not_set({name})" function
- */
- void
-f_test_option_not_set(typval_T *argvars, typval_T *rettv UNUSED)
-{
- char_u *name = (char_u *)"";
-
- if (check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- name = tv_get_string(&argvars[0]);
- if (reset_option_was_set(name) == FAIL)
- semsg(_(e_invalid_argument_str), name);
-}
-
-/*
- * "test_override({name}, {val})" function
- */
- void
-f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
-{
- char_u *name = (char_u *)"";
- int val;
- static int save_starting = -1;
-
- if (check_for_string_arg(argvars, 0) == FAIL
- || check_for_number_arg(argvars, 1) == FAIL)
- return;
-
- name = tv_get_string(&argvars[0]);
- val = (int)tv_get_number(&argvars[1]);
-
- if (STRCMP(name, (char_u *)"redraw") == 0)
- disable_redraw_for_testing = val;
- else if (STRCMP(name, (char_u *)"redraw_flag") == 0)
- ignore_redraw_flag_for_testing = val;
- else if (STRCMP(name, (char_u *)"char_avail") == 0)
- disable_char_avail_for_testing = val;
- else if (STRCMP(name, (char_u *)"starting") == 0)
- {
- if (val)
- {
- if (save_starting < 0)
- save_starting = starting;
- starting = 0;
- }
- else
- {
- starting = save_starting;
- save_starting = -1;
- }
- }
- else if (STRCMP(name, (char_u *)"nfa_fail") == 0)
- nfa_fail_for_testing = val;
- else if (STRCMP(name, (char_u *)"no_query_mouse") == 0)
- no_query_mouse_for_testing = val;
- else if (STRCMP(name, (char_u *)"no_wait_return") == 0)
- no_wait_return = val;
- else if (STRCMP(name, (char_u *)"ui_delay") == 0)
- ui_delay_for_testing = val;
- else if (STRCMP(name, (char_u *)"unreachable") == 0)
- ignore_unreachable_code_for_testing = val;
- else if (STRCMP(name, (char_u *)"term_props") == 0)
- reset_term_props_on_termresponse = val;
- else if (STRCMP(name, (char_u *)"vterm_title") == 0)
- disable_vterm_title_for_testing = val;
- else if (STRCMP(name, (char_u *)"uptime") == 0)
- override_sysinfo_uptime = val;
- else if (STRCMP(name, (char_u *)"alloc_lines") == 0)
- ml_get_alloc_lines = val;
- else if (STRCMP(name, (char_u *)"autoload") == 0)
- override_autoload = val;
- else if (STRCMP(name, (char_u *)"defcompile") == 0)
- override_defcompile = val;
- else if (STRCMP(name, (char_u *)"ALL") == 0)
- {
- disable_char_avail_for_testing = FALSE;
- disable_redraw_for_testing = FALSE;
- ignore_redraw_flag_for_testing = FALSE;
- nfa_fail_for_testing = FALSE;
- no_query_mouse_for_testing = FALSE;
- ui_delay_for_testing = 0;
- reset_term_props_on_termresponse = FALSE;
- override_sysinfo_uptime = -1;
- // ml_get_alloc_lines is not reset by "ALL"
- if (save_starting >= 0)
- {
- starting = save_starting;
- save_starting = -1;
- }
- }
- else
- semsg(_(e_invalid_argument_str), name);
-}
-
-/*
- * "test_refcount({expr})" function
- */
- void
-f_test_refcount(typval_T *argvars, typval_T *rettv)
-{
- int retval = -1;
-
- switch (argvars[0].v_type)
- {
- case VAR_UNKNOWN:
- case VAR_ANY:
- case VAR_VOID:
- case VAR_NUMBER:
- case VAR_BOOL:
- case VAR_FLOAT:
- case VAR_SPECIAL:
- case VAR_STRING:
- case VAR_INSTR:
- break;
-
- case VAR_JOB:
-#ifdef FEAT_JOB_CHANNEL
- if (argvars[0].vval.v_job != NULL)
- retval = argvars[0].vval.v_job->jv_refcount - 1;
-#endif
- break;
- case VAR_CHANNEL:
-#ifdef FEAT_JOB_CHANNEL
- if (argvars[0].vval.v_channel != NULL)
- retval = argvars[0].vval.v_channel->ch_refcount - 1;
-#endif
- break;
- case VAR_FUNC:
- if (argvars[0].vval.v_string != NULL)
- {
- ufunc_T *fp;
-
- fp = find_func(argvars[0].vval.v_string, FALSE);
- if (fp != NULL)
- retval = fp->uf_refcount;
- }
- break;
- case VAR_PARTIAL:
- if (argvars[0].vval.v_partial != NULL)
- retval = argvars[0].vval.v_partial->pt_refcount - 1;
- break;
- case VAR_BLOB:
- if (argvars[0].vval.v_blob != NULL)
- retval = argvars[0].vval.v_blob->bv_refcount - 1;
- break;
- case VAR_LIST:
- if (argvars[0].vval.v_list != NULL)
- retval = argvars[0].vval.v_list->lv_refcount - 1;
- break;
- case VAR_TUPLE:
- if (argvars[0].vval.v_tuple != NULL)
- retval = argvars[0].vval.v_tuple->tv_refcount - 1;
- break;
- case VAR_DICT:
- if (argvars[0].vval.v_dict != NULL)
- retval = argvars[0].vval.v_dict->dv_refcount - 1;
- break;
- case VAR_CLASS:
- if (argvars[0].vval.v_class != NULL)
- retval = argvars[0].vval.v_class->class_refcount - 1;
- break;
- case VAR_OBJECT:
- if (argvars[0].vval.v_object != NULL)
- retval = argvars[0].vval.v_object->obj_refcount - 1;
- break;
- case VAR_TYPEALIAS:
- if (argvars[0].vval.v_typealias != NULL)
- retval = argvars[0].vval.v_typealias->ta_refcount - 1;
- break;
- }
-
- rettv->v_type = VAR_NUMBER;
- rettv->vval.v_number = retval;
-
-}
-
-/*
- * "test_garbagecollect_now()" function
- */
- void
-f_test_garbagecollect_now(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
- // This is dangerous, any Lists and Dicts used internally may be freed
- // while still in use.
- if (!get_mnv_var_nr(VV_TESTING))
- emsg(_(e_calling_test_garbagecollect_now_while_v_testing_is_not_set));
- else
- garbage_collect(TRUE);
-}
-
-/*
- * "test_garbagecollect_soon()" function
- */
- void
-f_test_garbagecollect_soon(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
- may_garbage_collect = TRUE;
-}
-
-/*
- * "test_ignore_error()" function
- */
- void
-f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED)
-{
- if (check_for_string_arg(argvars, 0) == FAIL)
- return;
-
- ignore_error_for_testing(tv_get_string(&argvars[0]));
-}
-
- void
-f_test_null_blob(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_BLOB;
- rettv->vval.v_blob = NULL;
-}
-
-#if defined(FEAT_JOB_CHANNEL)
- void
-f_test_null_channel(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_CHANNEL;
- rettv->vval.v_channel = NULL;
-}
-#endif
-
- void
-f_test_null_dict(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv_dict_set(rettv, NULL);
-}
-
-#if defined(FEAT_JOB_CHANNEL)
- void
-f_test_null_job(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_JOB;
- rettv->vval.v_job = NULL;
-}
-#endif
-
- void
-f_test_null_list(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv_list_set(rettv, NULL);
-}
-
- void
-f_test_null_function(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_FUNC;
- rettv->vval.v_string = NULL;
-}
-
- void
-f_test_null_partial(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_PARTIAL;
- rettv->vval.v_partial = NULL;
-}
-
- void
-f_test_null_string(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_STRING;
- rettv->vval.v_string = NULL;
-}
-
- void
-f_test_null_tuple(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv_tuple_set(rettv, NULL);
-}
-
- void
-f_test_unknown(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_UNKNOWN;
-}
-
- void
-f_test_void(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->v_type = VAR_VOID;
-}
-
- void
-f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED)
-{
- if (in_mnv9script()
- && (check_for_number_arg(argvars, 0) == FAIL
- || check_for_number_arg(argvars, 1) == FAIL))
- return;
-
- if (argvars[0].v_type != VAR_NUMBER || argvars[1].v_type != VAR_NUMBER)
- {
- emsg(_(e_invalid_argument));
- return;
- }
-
- mouse_row = (time_t)tv_get_number(&argvars[0]) - 1;
- mouse_col = (time_t)tv_get_number(&argvars[1]) - 1;
-}
-
-#ifdef FEAT_GUI
- static int
-test_gui_drop_files(dict_T *args UNUSED)
-{
-# if defined(HAVE_DROP_FILE)
- int row;
- int col;
- int_u mods;
- char_u **fnames;
- int count = 0;
- typval_T t;
- list_T *l;
- listitem_T *li;
-
- if (!dict_has_key(args, "files")
- || !dict_has_key(args, "row")
- || !dict_has_key(args, "col")
- || !dict_has_key(args, "modifiers"))
- return FALSE;
-
- (void)dict_get_tv(args, "files", &t);
- row = (int)dict_get_number(args, "row");
- col = (int)dict_get_number(args, "col");
- mods = (int)dict_get_number(args, "modifiers");
-
- if (t.v_type != VAR_LIST || list_len(t.vval.v_list) == 0)
- return FALSE;
-
- l = t.vval.v_list;
- fnames = ALLOC_MULT(char_u *, list_len(l));
- if (fnames == NULL)
- return FALSE;
-
- FOR_ALL_LIST_ITEMS(l, li)
- {
- // ignore non-string items
- if (li->li_tv.v_type != VAR_STRING
- || li->li_tv.vval.v_string == NULL)
- continue;
-
- fnames[count] = mnv_strsave(li->li_tv.vval.v_string);
- if (fnames[count] == NULL)
- {
- while (--count >= 0)
- mnv_free(fnames[count]);
- mnv_free(fnames);
- return FALSE;
- }
- count++;
- }
-
- if (count > 0)
- gui_handle_drop(TEXT_X(col - 1), TEXT_Y(row - 1), mods, fnames, count);
- else
- mnv_free(fnames);
-# endif
-
- return TRUE;
-}
-
-# if defined(FIND_REPLACE_DIALOG)
- static int
-test_gui_find_repl(dict_T *args)
-{
- int flags;
- char_u *find_text;
- char_u *repl_text;
- int forward;
- int retval;
-
- if (!dict_has_key(args, "find_text")
- || !dict_has_key(args, "repl_text")
- || !dict_has_key(args, "flags")
- || !dict_has_key(args, "forward"))
- return FALSE;
-
- find_text = dict_get_string(args, "find_text", TRUE);
- repl_text = dict_get_string(args, "repl_text", TRUE);
- flags = (int)dict_get_number(args, "flags");
- forward = (int)dict_get_number(args, "forward");
-
- retval = gui_do_findrepl(flags, find_text, repl_text, forward);
- mnv_free(find_text);
- mnv_free(repl_text);
-
- return retval;
-}
-# endif
-
- static int
-test_gui_mouse_event(dict_T *args)
-{
- int button;
- int row;
- int col;
- int repeated_click;
- int_u mods;
- int move;
-
- if (!dict_has_key(args, "row")
- || !dict_has_key(args, "col"))
- return FALSE;
-
- // Note: "move" is optional, requires fewer arguments
- move = (int)dict_get_bool(args, "move", FALSE);
-
- if (!move && (!dict_has_key(args, "button")
- || !dict_has_key(args, "multiclick")
- || !dict_has_key(args, "modifiers")))
- return FALSE;
-
- row = (int)dict_get_number(args, "row");
- col = (int)dict_get_number(args, "col");
-
- if (move)
- {
- int pY = row;
- int pX = col;
- // the "move" argument expects row and col coordnates to be in pixels,
- // unless "cell" is specified and is TRUE.
- if (dict_get_bool(args, "cell", FALSE))
- {
- // calculate the middle of the character cell
- // Note: Cell coordinates are 1-based from MNV script
- pY = (row - 1) * gui.char_height + gui.char_height / 2;
- pX = (col - 1) * gui.char_width + gui.char_width / 2;
- }
- gui_mouse_moved(pX, pY);
- }
- else
- {
- button = (int)dict_get_number(args, "button");
- repeated_click = (int)dict_get_number(args, "multiclick");
- mods = (int)dict_get_number(args, "modifiers");
-
- // Reset the scroll values to known values.
- // XXX: Remove this when/if the scroll step is made configurable.
- mouse_set_hor_scroll_step(6);
- mouse_set_vert_scroll_step(3);
-
- gui_send_mouse_event(button, TEXT_X(col - 1), TEXT_Y(row - 1),
- repeated_click, mods);
- }
-
- return TRUE;
-}
-
- static int
-test_gui_scrollbar(dict_T *args)
-{
- char_u *which;
- long value;
- int dragging;
- scrollbar_T *sb = NULL;
-
- if (!dict_has_key(args, "which")
- || !dict_has_key(args, "value")
- || !dict_has_key(args, "dragging"))
- return FALSE;
-
- which = dict_get_string(args, "which", FALSE);
- value = (long)dict_get_number(args, "value");
- dragging = (int)dict_get_number(args, "dragging");
-
- if (STRCMP(which, "left") == 0)
- sb = &curwin->w_scrollbars[SBAR_LEFT];
- else if (STRCMP(which, "right") == 0)
- sb = &curwin->w_scrollbars[SBAR_RIGHT];
- else if (STRCMP(which, "hor") == 0)
- sb = &gui.bottom_sbar;
- if (sb == NULL)
- {
- semsg(_(e_invalid_argument_str), which);
- return FALSE;
- }
- gui_drag_scrollbar(sb, value, dragging);
-# ifndef USE_ON_FLY_SCROLL
- // need to loop through normal_cmd() to handle the scroll events
- exec_normal(FALSE, TRUE, FALSE);
-# endif
-
- return TRUE;
-}
-
- static int
-test_gui_tabline_event(dict_T *args UNUSED)
-{
-# ifdef FEAT_GUI_TABLINE
- int tabnr;
-
- if (!dict_has_key(args, "tabnr"))
- return FALSE;
-
- tabnr = (int)dict_get_number(args, "tabnr");
-
- return send_tabline_event(tabnr);
-# else
- return FALSE;
-# endif
-}
-
- static int
-test_gui_tabmenu_event(dict_T *args UNUSED)
-{
-# ifdef FEAT_GUI_TABLINE
- int tabnr;
- int item;
-
- if (!dict_has_key(args, "tabnr")
- || !dict_has_key(args, "item"))
- return FALSE;
-
- tabnr = (int)dict_get_number(args, "tabnr");
- item = (int)dict_get_number(args, "item");
-
- send_tabline_menu_event(tabnr, item);
-# endif
- return TRUE;
-}
-#endif
-
- void
-f_test_mswin_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
-#ifdef MSWIN
- rettv->v_type = VAR_BOOL;
- rettv->vval.v_number = FALSE;
-
- if (sandbox != 0)
- {
- emsg(_(e_not_allowed_in_sandbox));
- return;
- }
-
- if (check_for_string_arg(argvars, 0) == FAIL
- || check_for_dict_arg(argvars, 1) == FAIL
- || argvars[1].vval.v_dict == NULL)
- return;
-
- char_u *event = tv_get_string(&argvars[0]);
- rettv->vval.v_number = test_mswin_event(event, argvars[1].vval.v_dict);
-
-#endif
-}
-
- void
-f_test_gui_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
-#ifdef FEAT_GUI
- char_u *event;
-
- rettv->v_type = VAR_BOOL;
- rettv->vval.v_number = FALSE;
-
- if (sandbox != 0)
- {
- emsg(_(e_not_allowed_in_sandbox));
- return;
- }
-
- if (check_for_string_arg(argvars, 0) == FAIL
- || check_for_dict_arg(argvars, 1) == FAIL
- || argvars[1].vval.v_dict == NULL)
- return;
-
- event = tv_get_string(&argvars[0]);
- if (STRCMP(event, "dropfiles") == 0)
- rettv->vval.v_number = test_gui_drop_files(argvars[1].vval.v_dict);
-# if defined(FIND_REPLACE_DIALOG)
- else if (STRCMP(event, "findrepl") == 0)
- rettv->vval.v_number = test_gui_find_repl(argvars[1].vval.v_dict);
-# endif
-# ifdef MSWIN
- else if (STRCMP(event, "key") == 0 || STRCMP(event, "mouse") == 0 || STRCMP(event, "set_keycode_trans_strategy") == 0)
- rettv->vval.v_number = test_mswin_event(event, argvars[1].vval.v_dict);
-# endif
- else if (STRCMP(event, "mouse") == 0)
- rettv->vval.v_number = test_gui_mouse_event(argvars[1].vval.v_dict);
- else if (STRCMP(event, "scrollbar") == 0)
- rettv->vval.v_number = test_gui_scrollbar(argvars[1].vval.v_dict);
- else if (STRCMP(event, "tabline") == 0)
- rettv->vval.v_number = test_gui_tabline_event(argvars[1].vval.v_dict);
- else if (STRCMP(event, "tabmenu") == 0)
- rettv->vval.v_number = test_gui_tabmenu_event(argvars[1].vval.v_dict);
- else
- {
- semsg(_(e_invalid_argument_str), event);
- return;
- }
-#endif
-}
-
- void
-f_test_settime(typval_T *argvars, typval_T *rettv UNUSED)
-{
- if (in_mnv9script() && check_for_number_arg(argvars, 0) == FAIL)
- return;
-
- time_for_testing = (time_t)tv_get_number(&argvars[0]);
-}
-
-#endif // defined(FEAT_EVAL)