patch 8.0.1237: ":set scroll&" often gives an error

Problem:    ":set scroll&" often gives an error.
Solution:   Don't use a fixed default value, use half the window height. Add a
            test. (Ozaki Kiichi, closes #2104)
diff --git a/src/testdir/test_scroll_opt.vim b/src/testdir/test_scroll_opt.vim
new file mode 100644
index 0000000..77920eb
--- /dev/null
+++ b/src/testdir/test_scroll_opt.vim
@@ -0,0 +1,36 @@
+" Test for reset 'scroll'
+"
+
+func Test_reset_scroll()
+  let scr = &l:scroll
+
+  setlocal scroll=1
+  setlocal scroll&
+  call assert_equal(scr, &l:scroll)
+
+  setlocal scroll=1
+  setlocal scroll=0
+  call assert_equal(scr, &l:scroll)
+
+  try
+    execute 'setlocal scroll=' . (winheight(0) + 1)
+    " not reached
+    call assert_false(1)
+  catch
+    call assert_exception('E49:')
+  endtry
+
+  split
+
+  let scr = &l:scroll
+
+  setlocal scroll=1
+  setlocal scroll&
+  call assert_equal(scr, &l:scroll)
+
+  setlocal scroll=1
+  setlocal scroll=0
+  call assert_equal(scr, &l:scroll)
+
+  quit!
+endfunc