summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 53c188bae..3bc2afdb1 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8992,6 +8992,39 @@ assert_match_common(typval_T *argvars, assert_type_T atype)
}
}
+ void
+assert_inrange(typval_T *argvars)
+{
+ garray_T ga;
+ int error = FALSE;
+ varnumber_T lower = get_tv_number_chk(&argvars[0], &error);
+ varnumber_T upper = get_tv_number_chk(&argvars[1], &error);
+ varnumber_T actual = get_tv_number_chk(&argvars[2], &error);
+ char_u *tofree;
+ char msg[200];
+ char_u numbuf[NUMBUFLEN];
+
+ if (error)
+ return;
+ if (actual < lower || actual > upper)
+ {
+ prepare_assert_error(&ga);
+ if (argvars[3].v_type != VAR_UNKNOWN)
+ {
+ ga_concat(&ga, tv2string(&argvars[3], &tofree, numbuf, 0));
+ vim_free(tofree);
+ }
+ else
+ {
+ vim_snprintf(msg, 200, "Expected range %ld - %ld, but got %ld",
+ (long)lower, (long)upper, (long)actual);
+ ga_concat(&ga, (char_u *)msg);
+ }
+ assert_error(&ga);
+ ga_clear(&ga);
+ }
+}
+
/*
* Common for assert_true() and assert_false().
*/