diff src/evalfunc.c @ 17377:cb008de2a6ec v8.1.1687

patch 8.1.1687: the evalfunc.c file is too big commit https://github.com/vim/vim/commit/ecaa70ea29c269dd0dabd3cd5acdfa0ce42ccd54 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 14 14:55:39 2019 +0200 patch 8.1.1687: the evalfunc.c file is too big Problem: The evalfunc.c file is too big. Solution: Move testing support to a separate file.
author Bram Moolenaar <Bram@vim.org>
date Sun, 14 Jul 2019 15:00:05 +0200
parents 9843fbfa0ee5
children dfd87ef822aa
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -41,18 +41,6 @@ static void f_argc(typval_T *argvars, ty
 static void f_argidx(typval_T *argvars, typval_T *rettv);
 static void f_arglistid(typval_T *argvars, typval_T *rettv);
 static void f_argv(typval_T *argvars, typval_T *rettv);
-static void f_assert_beeps(typval_T *argvars, typval_T *rettv);
-static void f_assert_equal(typval_T *argvars, typval_T *rettv);
-static void f_assert_equalfile(typval_T *argvars, typval_T *rettv);
-static void f_assert_exception(typval_T *argvars, typval_T *rettv);
-static void f_assert_fails(typval_T *argvars, typval_T *rettv);
-static void f_assert_false(typval_T *argvars, typval_T *rettv);
-static void f_assert_inrange(typval_T *argvars, typval_T *rettv);
-static void f_assert_match(typval_T *argvars, typval_T *rettv);
-static void f_assert_notequal(typval_T *argvars, typval_T *rettv);
-static void f_assert_notmatch(typval_T *argvars, typval_T *rettv);
-static void f_assert_report(typval_T *argvars, typval_T *rettv);
-static void f_assert_true(typval_T *argvars, typval_T *rettv);
 #ifdef FEAT_FLOAT
 static void f_asin(typval_T *argvars, typval_T *rettv);
 static void f_atan(typval_T *argvars, typval_T *rettv);
@@ -396,34 +384,6 @@ static void f_tabpagewinnr(typval_T *arg
 static void f_taglist(typval_T *argvars, typval_T *rettv);
 static void f_tagfiles(typval_T *argvars, typval_T *rettv);
 static void f_tempname(typval_T *argvars, typval_T *rettv);
-static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
-static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
-static void f_test_feedinput(typval_T *argvars, typval_T *rettv);
-static void f_test_getvalue(typval_T *argvars, typval_T *rettv);
-static void f_test_option_not_set(typval_T *argvars, typval_T *rettv);
-static void f_test_override(typval_T *argvars, typval_T *rettv);
-static void f_test_refcount(typval_T *argvars, typval_T *rettv);
-static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
-static void f_test_garbagecollect_soon(typval_T *argvars, typval_T *rettv);
-static void f_test_ignore_error(typval_T *argvars, typval_T *rettv);
-static void f_test_null_blob(typval_T *argvars, typval_T *rettv);
-#ifdef FEAT_JOB_CHANNEL
-static void f_test_null_channel(typval_T *argvars, typval_T *rettv);
-#endif
-static void f_test_null_dict(typval_T *argvars, typval_T *rettv);
-#ifdef FEAT_JOB_CHANNEL
-static void f_test_null_job(typval_T *argvars, typval_T *rettv);
-#endif
-static void f_test_null_list(typval_T *argvars, typval_T *rettv);
-static void f_test_null_partial(typval_T *argvars, typval_T *rettv);
-static void f_test_null_string(typval_T *argvars, typval_T *rettv);
-#ifdef FEAT_GUI
-static void f_test_scrollbar(typval_T *argvars, typval_T *rettv);
-#endif
-#ifdef FEAT_MOUSE
-static void f_test_setmouse(typval_T *argvars, typval_T *rettv);
-#endif
-static void f_test_settime(typval_T *argvars, typval_T *rettv);
 #ifdef FEAT_FLOAT
 static void f_tan(typval_T *argvars, typval_T *rettv);
 static void f_tanh(typval_T *argvars, typval_T *rettv);
@@ -1609,114 +1569,6 @@ f_argv(typval_T *argvars, typval_T *rett
 	get_arglist_as_rettv(ARGLIST, ARGCOUNT, rettv);
 }
 
-/*
- * "assert_beeps(cmd [, error])" function
- */
-    static void
-f_assert_beeps(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_beeps(argvars);
-}
-
-/*
- * "assert_equal(expected, actual[, msg])" function
- */
-    static void
-f_assert_equal(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_equal_common(argvars, ASSERT_EQUAL);
-}
-
-/*
- * "assert_equalfile(fname-one, fname-two)" function
- */
-    static void
-f_assert_equalfile(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_equalfile(argvars);
-}
-
-/*
- * "assert_notequal(expected, actual[, msg])" function
- */
-    static 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
- */
-    static void
-f_assert_exception(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_exception(argvars);
-}
-
-/*
- * "assert_fails(cmd [, error[, msg]])" function
- */
-    static void
-f_assert_fails(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_fails(argvars);
-}
-
-/*
- * "assert_false(actual[, msg])" function
- */
-    static void
-f_assert_false(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_bool(argvars, FALSE);
-}
-
-/*
- * "assert_inrange(lower, upper[, msg])" function
- */
-    static void
-f_assert_inrange(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_inrange(argvars);
-}
-
-/*
- * "assert_match(pattern, actual[, msg])" function
- */
-    static 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
- */
-    static void
-f_assert_notmatch(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_match_common(argvars, ASSERT_NOTMATCH);
-}
-
-/*
- * "assert_report(msg)" function
- */
-    static void
-f_assert_report(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_report(argvars);
-}
-
-/*
- * "assert_true(actual[, msg])" function
- */
-    static void
-f_assert_true(typval_T *argvars, typval_T *rettv)
-{
-    rettv->vval.v_number = assert_bool(argvars, TRUE);
-}
-
 #ifdef FEAT_FLOAT
 /*
  * "asin()" function
@@ -13547,351 +13399,6 @@ f_tanh(typval_T *argvars, typval_T *rett
 #endif
 
 /*
- * "test_alloc_fail(id, countdown, repeat)" function
- */
-    static void
-f_test_alloc_fail(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    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_invarg));
-    else
-    {
-	alloc_fail_id = argvars[0].vval.v_number;
-	if (alloc_fail_id >= aid_last)
-	    emsg(_(e_invarg));
-	alloc_fail_countdown = argvars[1].vval.v_number;
-	alloc_fail_repeat = argvars[2].vval.v_number;
-	did_outofmem_msg = FALSE;
-    }
-}
-
-/*
- * "test_autochdir()"
- */
-    static void
-f_test_autochdir(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
-#if defined(FEAT_AUTOCHDIR)
-    test_autochdir = TRUE;
-#endif
-}
-
-/*
- * "test_feedinput()"
- */
-    static void
-f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED)
-{
-#ifdef USE_INPUT_BUF
-    char_u	*val = tv_get_string_chk(&argvars[0]);
-
-    if (val != NULL)
-    {
-	trash_input_buf();
-	add_to_input_buf_csi(val, (int)STRLEN(val));
-    }
-#endif
-}
-
-/*
- * "test_getvalue({name})" function
- */
-    static void
-f_test_getvalue(typval_T *argvars, typval_T *rettv)
-{
-    if (argvars[0].v_type != VAR_STRING)
-	emsg(_(e_invarg));
-    else
-    {
-	char_u *name = tv_get_string(&argvars[0]);
-
-	if (STRCMP(name, (char_u *)"need_fileinfo") == 0)
-	    rettv->vval.v_number = need_fileinfo;
-	else
-	    semsg(_(e_invarg2), name);
-    }
-}
-
-/*
- * "test_option_not_set({name})" function
- */
-    static void
-f_test_option_not_set(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    char_u *name = (char_u *)"";
-
-    if (argvars[0].v_type != VAR_STRING)
-	emsg(_(e_invarg));
-    else
-    {
-	name = tv_get_string(&argvars[0]);
-	if (reset_option_was_set(name) == FAIL)
-	    semsg(_(e_invarg2), name);
-    }
-}
-
-/*
- * "test_override({name}, {val})" function
- */
-    static void
-f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    char_u *name = (char_u *)"";
-    int     val;
-    static int save_starting = -1;
-
-    if (argvars[0].v_type != VAR_STRING
-	    || (argvars[1].v_type) != VAR_NUMBER)
-	emsg(_(e_invarg));
-    else
-    {
-	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 *)"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;
-	    if (save_starting >= 0)
-	    {
-		starting = save_starting;
-		save_starting = -1;
-	    }
-	}
-	else
-	    semsg(_(e_invarg2), name);
-    }
-}
-
-/*
- * "test_refcount({expr})" function
- */
-    static void
-f_test_refcount(typval_T *argvars, typval_T *rettv)
-{
-    int retval = -1;
-
-    switch (argvars[0].v_type)
-    {
-	case VAR_UNKNOWN:
-	case VAR_NUMBER:
-	case VAR_FLOAT:
-	case VAR_SPECIAL:
-	case VAR_STRING:
-	    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);
-		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_DICT:
-	    if (argvars[0].vval.v_dict != NULL)
-		retval = argvars[0].vval.v_dict->dv_refcount - 1;
-	    break;
-    }
-
-    rettv->v_type = VAR_NUMBER;
-    rettv->vval.v_number = retval;
-
-}
-
-/*
- * "test_garbagecollect_now()" function
- */
-    static 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. */
-    garbage_collect(TRUE);
-}
-
-/*
- * "test_garbagecollect_soon()" function
- */
-    static void
-f_test_garbagecollect_soon(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
-{
-    may_garbage_collect = TRUE;
-}
-
-/*
- * "test_ignore_error()" function
- */
-    static void
-f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED)
-{
-     ignore_error_for_testing(tv_get_string(&argvars[0]));
-}
-
-    static void
-f_test_null_blob(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_BLOB;
-    rettv->vval.v_blob = NULL;
-}
-
-#ifdef FEAT_JOB_CHANNEL
-    static void
-f_test_null_channel(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_CHANNEL;
-    rettv->vval.v_channel = NULL;
-}
-#endif
-
-    static void
-f_test_null_dict(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv_dict_set(rettv, NULL);
-}
-
-#ifdef FEAT_JOB_CHANNEL
-    static void
-f_test_null_job(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_JOB;
-    rettv->vval.v_job = NULL;
-}
-#endif
-
-    static void
-f_test_null_list(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv_list_set(rettv, NULL);
-}
-
-    static void
-f_test_null_partial(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_PARTIAL;
-    rettv->vval.v_partial = NULL;
-}
-
-    static void
-f_test_null_string(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_STRING;
-    rettv->vval.v_string = NULL;
-}
-
-#ifdef FEAT_GUI
-    static void
-f_test_scrollbar(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    char_u	*which;
-    long	value;
-    int		dragging;
-    scrollbar_T *sb = NULL;
-
-    if (argvars[0].v_type != VAR_STRING
-	    || (argvars[1].v_type) != VAR_NUMBER
-	    || (argvars[2].v_type) != VAR_NUMBER)
-    {
-	emsg(_(e_invarg));
-	return;
-    }
-    which = tv_get_string(&argvars[0]);
-    value = tv_get_number(&argvars[1]);
-    dragging = tv_get_number(&argvars[2]);
-
-    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_invarg2), which);
-	return;
-    }
-    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
-}
-#endif
-
-#ifdef FEAT_MOUSE
-    static void
-f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    mouse_row = (time_t)tv_get_number(&argvars[0]) - 1;
-    mouse_col = (time_t)tv_get_number(&argvars[1]) - 1;
-}
-#endif
-
-    static void
-f_test_settime(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    time_for_testing = (time_t)tv_get_number(&argvars[0]);
-}
-
-/*
  * Get a callback from "arg".  It can be a Funcref or a function name.
  * When "arg" is zero return an empty string.
  * "cb_name" is not allocated.