patch 8.2.1199: not all assert functions are fully tested

Problem:    Not all assert functions are fully tested.
Solution:   Test more assert functions.
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 0ec710a..4160605 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -48,6 +48,11 @@
   call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
   call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
   call remove(v:errors, 0)
+
+  " special characters are escaped
+  call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x')
+  call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0])
+  call remove(v:errors, 0)
 endfunc
 
 func Test_assert_equal_dict()
@@ -146,6 +151,14 @@
   try
     nocommand
   catch
+    call assert_equal(1, assert_exception('E12345:'))
+  endtry
+  call assert_match("Expected 'E12345:' but got 'Vim:E492: ", v:errors[0])
+  call remove(v:errors, 0)
+
+  try
+    nocommand
+  catch
     try
       " illegal argument, get NULL for error
       call assert_equal(1, assert_exception([]))
@@ -153,6 +166,10 @@
       call assert_equal(0, assert_exception('E730:'))
     endtry
   endtry
+
+  call assert_equal(1, assert_exception('E492:'))
+  call assert_match('v:exception is not set', v:errors[0])
+  call remove(v:errors, 0)
 endfunc
 
 func Test_wrong_error_type()
@@ -216,6 +233,14 @@
   call assert_match("stupid: Expected 'E9876' but got 'E492:", v:errors[0])
   call remove(v:errors, 0)
 
+  call assert_equal(1, assert_fails('xxx', ['E9876']))
+  call assert_match("Expected \\['E9876'\\] but got 'E492:", v:errors[0])
+  call remove(v:errors, 0)
+
+  call assert_equal(1, assert_fails('xxx', ['E492:', 'E9876']))
+  call assert_match("Expected \\['E492:', 'E9876'\\] but got 'E492:", v:errors[0])
+  call remove(v:errors, 0)
+
   call assert_equal(1, assert_fails('echo', '', 'echo command'))
   call assert_match("command did not fail: echo command", v:errors[0])
   call remove(v:errors, 0)
@@ -223,6 +248,27 @@
   call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
   call assert_match("command did not fail: echo command", v:errors[0])
   call remove(v:errors, 0)
+
+  try
+    call assert_equal(1, assert_fails('xxx', []))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E856: assert_fails() second argument", exp)
+
+  try
+    call assert_equal(1, assert_fails('xxx', ['1', '2', '3']))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E856: assert_fails() second argument", exp)
+
+  try
+    call assert_equal(1, assert_fails('xxx', #{one: 1}))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E856: assert_fails() second argument", exp)
 endfunc
 
 func Test_assert_fails_in_try_block()
diff --git a/src/testing.c b/src/testing.c
index 0356565..de89bd9 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -66,7 +66,7 @@
 	case CAR: ga_concat(gap, (char_u *)"\\r"); break;
 	case '\\': ga_concat(gap, (char_u *)"\\\\"); break;
 	default:
-		   if (*p < ' ')
+		   if (*p < ' ' || *p == 0x7f)
 		   {
 		       vim_snprintf((char *)buf, NUMBUFLEN, "\\x%02x", *p);
 		       ga_concat(gap, buf);
@@ -270,12 +270,12 @@
     garray_T	ga;
     char_u	buf1[NUMBUFLEN];
     char_u	buf2[NUMBUFLEN];
+    int		called_emsg_before = called_emsg;
     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)
-	emsg(_(e_invarg));
-    else if (pattern_match(pat, text, FALSE) != (atype == ASSERT_MATCH))
+    if (called_emsg == called_emsg_before
+		 && pattern_match(pat, text, FALSE) != (atype == ASSERT_MATCH))
     {
 	prepare_assert_error(&ga);
 	fill_assert_error(&ga, &argvars[2], NULL, &argvars[0], &argvars[1],
@@ -379,6 +379,7 @@
 {
     char_u	buf1[NUMBUFLEN];
     char_u	buf2[NUMBUFLEN];
+    int		called_emsg_before = called_emsg;
     char_u	*fname1 = tv_get_string_buf_chk(&argvars[0], buf1);
     char_u	*fname2 = tv_get_string_buf_chk(&argvars[1], buf2);
     garray_T	ga;
@@ -388,7 +389,7 @@
     char	line2[200];
     int		lineidx = 0;
 
-    if (fname1 == NULL || fname2 == NULL)
+    if (called_emsg > called_emsg_before)
 	return 0;
 
     IObuff[0] = NUL;
diff --git a/src/version.c b/src/version.c
index 9d59181..21ff2bc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1199,
+/**/
     1198,
 /**/
     1197,