diff --git a/src/testdir/check.vim b/src/testdir/check.vim
index 6d2d564..55a64bd 100644
--- a/src/testdir/check.vim
+++ b/src/testdir/check.vim
@@ -217,6 +217,14 @@
   endif
 endfunc
 
+" Command to check for X11 based GUI
+command CheckX11BasedGui call CheckX11BasedGui()
+func CheckX11BasedGui()
+  if !g:x11_based_gui
+    throw 'Skipped: requires X11 based GUI'
+  endif
+endfunc
+
 " Command to check for satisfying any of the conditions.
 " e.g. CheckAnyOf Feature:bsd Feature:sun Linux
 command -nargs=+ CheckAnyOf call CheckAnyOf(<f-args>)
diff --git a/src/testdir/setup_gui.vim b/src/testdir/setup_gui.vim
index 90ef1f1..05e4999 100644
--- a/src/testdir/setup_gui.vim
+++ b/src/testdir/setup_gui.vim
@@ -5,7 +5,6 @@
 
 " Reasons for 'skipped'.
 let g:not_supported   = "Skipped: Feature/Option not supported by this GUI: "
-let g:not_implemented = "Skipped: Test not implemented yet for this GUI"
 let g:not_hosted      = "Skipped: Test not hosted by the system/environment"
 
 " For KDE set a font, empty 'guifont' may cause a hang.
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 240fda3..84836e6 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -61,11 +61,9 @@
 endfunc
 
 func Test_getfontname_with_arg()
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_implemented
-  elseif has('gui_athena') || has('gui_motif')
+  if has('gui_athena') || has('gui_motif')
     " Invalid font name. The result should be an empty string.
     call assert_equal('', getfontname('notexist'))
 
@@ -82,20 +80,14 @@
     let fname = 'Bitstream Vera Sans Mono 12'
     call assert_equal(fname, getfontname(fname))
   endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
 endfunc
 
 func Test_getfontname_without_arg()
-  let skipped = ''
+  CheckX11BasedGui
 
   let fname = getfontname()
 
-  if !g:x11_based_gui
-    let skipped = g:not_implemented
-  elseif has('gui_kde')
+  if has('gui_kde')
     " 'expected' is the value specified by SetUp() above.
     call assert_equal('Courier 10 Pitch/8/-1/5/50/0/0/0/0/0', fname)
   elseif has('gui_athena') || has('gui_motif')
@@ -106,10 +98,6 @@
     " 'expected' is DEFAULT_FONT of gui_gtk_x11.c.
     call assert_equal('Monospace 10', fname)
   endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
 endfunc
 
 func Test_getwinpos()
@@ -120,48 +108,41 @@
 endfunc
 
 func Test_quoteplus()
+  CheckX11BasedGui
+
   let g:test_is_flaky = 1
-  let skipped = ''
 
-  if !g:x11_based_gui
-    let skipped = g:not_supported . 'quoteplus'
-  else
-    let quoteplus_saved = @+
+  let quoteplus_saved = @+
 
-    let test_call     = 'Can you hear me?'
-    let test_response = 'Yes, I can.'
-    let vim_exe = GetVimCommand()
-    let testee = 'VIMRUNTIME=' . $VIMRUNTIME . '; export VIMRUNTIME;'
-          \ . vim_exe . ' --noplugin --not-a-term -c ''%s'''
-    " Ignore the "failed to create input context" error.
-    let cmd = 'call test_ignore_error("E285") | '
-	  \ . 'gui -f | '
-	  \ . 'call feedkeys("'
-          \ . '\"+p'
-          \ . ':s/' . test_call . '/' . test_response . '/\<CR>'
-          \ . '\"+yis'
-          \ . ':q!\<CR>", "tx")'
-    let run_vimtest = printf(testee, cmd)
+  let test_call     = 'Can you hear me?'
+  let test_response = 'Yes, I can.'
+  let vim_exe = GetVimCommand()
+  let testee = 'VIMRUNTIME=' . $VIMRUNTIME . '; export VIMRUNTIME;'
+        \ . vim_exe . ' --noplugin --not-a-term -c ''%s'''
+  " Ignore the "failed to create input context" error.
+  let cmd = 'call test_ignore_error("E285") | '
+        \ . 'gui -f | '
+        \ . 'call feedkeys("'
+        \ . '\"+p'
+        \ . ':s/' . test_call . '/' . test_response . '/\<CR>'
+        \ . '\"+yis'
+        \ . ':q!\<CR>", "tx")'
+  let run_vimtest = printf(testee, cmd)
 
-    " Set the quoteplus register to test_call, and another gvim will launched.
-    " Then, it first tries to paste the content of its own quotedplus register
-    " onto it.  Second, it tries to substitute test_response for the pasted
-    " sentence.  If the sentence is identical to test_call, the substitution
-    " should succeed.  Third, it tries to yank the result of the substitution
-    " to its own quoteplus register, and last it quits.  When system()
-    " returns, the content of the quoteplus register should be identical to
-    " test_response if those quoteplus registers are synchronized properly
-    " with/through the X11 clipboard.
-    let @+ = test_call
-    call system(run_vimtest)
-    call assert_equal(test_response, @+)
+  " Set the quoteplus register to test_call, and another gvim will launched.
+  " Then, it first tries to paste the content of its own quotedplus register
+  " onto it.  Second, it tries to substitute test_response for the pasted
+  " sentence.  If the sentence is identical to test_call, the substitution
+  " should succeed.  Third, it tries to yank the result of the substitution
+  " to its own quoteplus register, and last it quits.  When system()
+  " returns, the content of the quoteplus register should be identical to
+  " test_response if those quoteplus registers are synchronized properly
+  " with/through the X11 clipboard.
+  let @+ = test_call
+  call system(run_vimtest)
+  call assert_equal(test_response, @+)
 
-    let @+ = quoteplus_saved
-  endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
+  let @+ = quoteplus_saved
 endfunc
 
 func Test_set_background()
@@ -333,8 +314,29 @@
   let &guicursor = guicursor_saved
 endfunc
 
+func Test_set_guifont_errors()
+  if has('win32')
+    " Invalid font names are accepted in GTK GUI
+    call assert_fails('set guifont=xa1bc23d7f', 'E596:')
+  endif
+
+  " This only works if 'renderoptions' exists and does not work for Windows XP
+  " and older.
+  if exists('+renderoptions') && windowsversion() !~ '^[345]\.'
+    " doing this four times used to cause a crash
+    set renderoptions=type:directx
+    for i in range(5)
+      set guifont=
+    endfor
+    set renderoptions=
+    for i in range(5)
+      set guifont=
+    endfor
+  endif
+endfunc
+
 func Test_set_guifont()
-  let skipped = ''
+  CheckX11BasedGui
 
   let guifont_saved = &guifont
   if has('xfontset')
@@ -343,9 +345,7 @@
     set guifontset=
   endif
 
-  if !g:x11_based_gui
-    let skipped = g:not_implemented
-  elseif has('gui_athena') || has('gui_motif')
+  if has('gui_athena') || has('gui_motif')
     " Non-empty font list with invalid font names.
     "
     " This test is twofold: (1) It checks if the command fails as expected
@@ -384,33 +384,10 @@
     call assert_equal('Monospace 10', getfontname())
   endif
 
-  if has('win32')
-    " Invalid font names are accepted in GTK GUI
-    call assert_fails('set guifont=xa1bc23d7f', 'E596:')
-  endif
-
-  " This only works if 'renderoptions' exists and does not work for Windows XP
-  " and older.
-  if exists('+renderoptions') && windowsversion() !~ '^[345]\.'
-    " doing this four times used to cause a crash
-    set renderoptions=type:directx
-    for i in range(5)
-      set guifont=
-    endfor
-    set renderoptions=
-    for i in range(5)
-      set guifont=
-    endfor
-  endif
-
   if has('xfontset')
     let &guifontset = guifontset_saved
   endif
   let &guifont = guifont_saved
-
-  if !empty(skipped)
-    throw skipped
-  endif
 endfunc
 
 func Test_set_guifontset()
@@ -485,12 +462,11 @@
 endfunc
 
 func Test_set_guifontwide()
-  call assert_fails('set guifontwide=*', 'E533:')
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_implemented
-  elseif has('gui_gtk')
+  call assert_fails('set guifontwide=*', 'E533:')
+
+  if has('gui_gtk')
     let guifont_saved = &guifont
     let guifontwide_saved = &guifontwide
 
@@ -561,51 +537,31 @@
       let &encoding    = encoding_saved
     endif
   endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
 endfunc
 
 func Test_set_guiligatures()
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_supported . 'guiligatures'
-  else
-    if has('gui_gtk') || has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3')
-      " Try correct value
-      set guiligatures=<>=ab
-      call assert_equal("<>=ab", &guiligatures)
-      " Try to throw error
-      try
-        set guiligatures=<>=šab
-        call assert_report("'set guiligatures=<>=šab should have failed")
-      catch
-        call assert_exception('E1243:')
-      endtry
-    endif
-  endif
-
-  if !empty(skipped)
-    throw skipped
+  if has('gui_gtk') || has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3')
+    " Try correct value
+    set guiligatures=<>=ab
+    call assert_equal("<>=ab", &guiligatures)
+    " Try to throw error
+    try
+      set guiligatures=<>=šab
+      call assert_report("'set guiligatures=<>=šab should have failed")
+    catch
+      call assert_exception('E1243:')
+    endtry
   endif
 endfunc
 
 func Test_set_guiheadroom()
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_supported . 'guiheadroom'
-  else
-    " Since this script is to be read together with '-U NONE', the default
-    " value must be preserved.
-    call assert_equal(50, &guiheadroom)
-  endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
+  " Since this script is to be read together with '-U NONE', the default
+  " value must be preserved.
+  call assert_equal(50, &guiheadroom)
 endfunc
 
 func Test_set_guioptions()
diff --git a/src/testdir/test_gui_init.vim b/src/testdir/test_gui_init.vim
index 70f0414..6f22013 100644
--- a/src/testdir/test_gui_init.vim
+++ b/src/testdir/test_gui_init.vim
@@ -22,19 +22,11 @@
 gui -f
 
 func Test_set_guiheadroom()
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_supported . 'guiheadroom'
-  else
-    " The 'expected' value must be consistent with the value specified with
-    " gui_init.vim.
-    call assert_equal(0, &guiheadroom)
-  endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
+  " The 'expected' value must be consistent with the value specified with
+  " gui_init.vim.
+  call assert_equal(0, &guiheadroom)
 endfunc
 
 func Test_set_guioptions_for_M()
@@ -44,19 +36,11 @@
 endfunc
 
 func Test_set_guioptions_for_p()
-  let skipped = ''
+  CheckX11BasedGui
 
-  if !g:x11_based_gui
-    let skipped = g:not_supported . '''p'' of guioptions'
-  else
-    sleep 200ms
-    " Check if the 'p' option is included.
-    call assert_match('.*p.*', &guioptions)
-  endif
-
-  if !empty(skipped)
-    throw skipped
-  endif
+  sleep 200ms
+  " Check if the 'p' option is included.
+  call assert_match('.*p.*', &guioptions)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ba4a990..3b78cc8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3526,
+/**/
     3525,
 /**/
     3524,
