diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 18f6b19..5094d51 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.2.  Last change: 2021 Jul 07
+*testing.txt*	For Vim version 8.2.  Last change: 2021 Aug 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -46,6 +46,7 @@
 		Can also be used as a |method|: >
 			GetAllocId()->test_alloc_fail()
 
+
 test_autochdir()					*test_autochdir()*
 		Set a flag to enable the effect of 'autochdir' before Vim
 		startup has finished.
@@ -59,6 +60,7 @@
 		Can also be used as a |method|: >
 			GetText()->test_feedinput()
 
+
 test_garbagecollect_now()			 *test_garbagecollect_now()*
 		Like garbagecollect(), but executed right away.  This must
 		only be called directly to avoid any structure to exist
@@ -132,6 +134,7 @@
 		Can also be used as a |method|: >
 			GetErrorText()->test_ignore_error()
 
+
 test_null_blob()					*test_null_blob()*
 		Return a |Blob| that is null. Only useful for testing.
 
@@ -166,13 +169,6 @@
 		Return a |String| that is null. Only useful for testing.
 
 
-test_unknown()						*test_unknown()*
-		Return a value with unknown type. Only useful for testing.
-
-test_void()						*test_void()*
-		Return a value with void type. Only useful for testing.
-
-
 test_option_not_set({name})				*test_option_not_set()*
 		Reset the flag that indicates option {name} was set.  Thus it
 		looks like it still has the default value. Use like this: >
@@ -224,6 +220,7 @@
 <		Can also be used as a |method|: >
 			GetOverrideVal()-> test_override('starting')
 
+
 test_refcount({expr})					*test_refcount()*
 		Return the reference count of {expr}.  When {expr} is of a
 		type that does not have a reference count, returns -1.  Only
@@ -253,6 +250,7 @@
 		Can also be used as a |method|: >
 			GetValue()->test_scrollbar('right', 0)
 
+
 test_setmouse({row}, {col})				*test_setmouse()*
 		Set the mouse position to be used for the next mouse action.
 		{row} and {col} are one based.
@@ -260,6 +258,7 @@
 			call test_setmouse(4, 20)
 			call feedkeys("\<LeftMouse>", "xt")
 
+
 test_settime({expr})					*test_settime()*
 		Set the time Vim uses internally.  Currently only used for
 		timestamps in the history, as they are used in viminfo, and
@@ -272,10 +271,19 @@
 		Can also be used as a |method|: >
 			GetTime()->test_settime()
 
+
 test_srand_seed([seed])					*test_srand_seed()*
 		When [seed] is given this sets the seed value used by
 		`srand()`.  When omitted the test seed is removed.
 
+
+test_unknown()						*test_unknown()*
+		Return a value with unknown type. Only useful for testing.
+
+
+test_void()						*test_void()*
+		Return a value with void type. Only useful for testing.
+
 ==============================================================================
 3. Assert functions				*assert-functions-details*
 
