1b5690794SBram Moolenaar" Test :hardcopy
2b5690794SBram Moolenaar
3833805a4SBram Moolenaarsource check.vim
4833805a4SBram Moolenaar
52e09634aSBram Moolenaarfunc Test_printoptions()
62e09634aSBram Moolenaar  edit test_hardcopy.vim
72e09634aSBram Moolenaar  syn on
82e09634aSBram Moolenaar
92e09634aSBram Moolenaar  for opt in ['left:5in,right:10pt,top:8mm,bottom:2pc',
102e09634aSBram Moolenaar        \     'left:2in,top:30pt,right:16mm,bottom:3pc',
112e09634aSBram Moolenaar        \     'header:3,syntax:y,number:y,wrap:n',
122e09634aSBram Moolenaar        \     'header:3,syntax:n,number:y,wrap:y',
13*edc10b54SBram Moolenaar        \     'header:0,syntax:a,number:y,wrap:y',
142e09634aSBram Moolenaar        \     'duplex:short,collate:n,jobsplit:y,portrait:n',
152e09634aSBram Moolenaar        \     'duplex:long,collate:y,jobsplit:n,portrait:y',
16*edc10b54SBram Moolenaar        \     'duplex:off,collate:y,jobsplit:y,portrait:y',
172e09634aSBram Moolenaar        \     'paper:10x14',
182e09634aSBram Moolenaar        \     'paper:A3',
192e09634aSBram Moolenaar        \     'paper:A4',
202e09634aSBram Moolenaar        \     'paper:A5',
212e09634aSBram Moolenaar        \     'paper:B4',
222e09634aSBram Moolenaar        \     'paper:B5',
232e09634aSBram Moolenaar        \     'paper:executive',
242e09634aSBram Moolenaar        \     'paper:folio',
252e09634aSBram Moolenaar        \     'paper:ledger',
262e09634aSBram Moolenaar        \     'paper:legal',
272e09634aSBram Moolenaar        \     'paper:letter',
282e09634aSBram Moolenaar        \     'paper:quarto',
292e09634aSBram Moolenaar        \     'paper:statement',
302e09634aSBram Moolenaar        \     'paper:tabloid',
312e09634aSBram Moolenaar        \     'formfeed:y',
322e09634aSBram Moolenaar        \     '']
332e09634aSBram Moolenaar    exe 'set printoptions=' .. opt
342e09634aSBram Moolenaar    if has('postscript')
35833805a4SBram Moolenaar      1,50hardcopy > Xhardcopy_printoptions
362e09634aSBram Moolenaar      let lines = readfile('Xhardcopy_printoptions')
372e09634aSBram Moolenaar      call assert_true(len(lines) > 20, opt)
382e09634aSBram Moolenaar      call assert_true(lines[0] =~ 'PS-Adobe', opt)
392e09634aSBram Moolenaar      call delete('Xhardcopy_printoptions')
402e09634aSBram Moolenaar    endif
412e09634aSBram Moolenaar  endfor
424afc7c5dSBram Moolenaar
434afc7c5dSBram Moolenaar  call assert_fails('set printoptions=paper', 'E550:')
444afc7c5dSBram Moolenaar  call assert_fails('set printoptions=shredder:on', 'E551:')
454afc7c5dSBram Moolenaar  call assert_fails('set printoptions=left:no', 'E552:')
462e09634aSBram Moolenaar  set printoptions&
472e09634aSBram Moolenaar  bwipe
48b5690794SBram Moolenaarendfunc
49b5690794SBram Moolenaar
502e09634aSBram Moolenaarfunc Test_printmbfont()
51*edc10b54SBram Moolenaar  " Print a help page which contains tabs, underlines (etc) to recover more code.
52*edc10b54SBram Moolenaar  help syntax.txt
532e09634aSBram Moolenaar  syn on
542e09634aSBram Moolenaar
552e09634aSBram Moolenaar  for opt in [':WadaMin-Regular,b:WadaMin-Bold,i:WadaMin-Italic,o:WadaMin-Bold-Italic,c:yes,a:no',
562e09634aSBram Moolenaar        \     '']
572e09634aSBram Moolenaar    exe 'set printmbfont=' .. opt
582e09634aSBram Moolenaar    if has('postscript')
592e09634aSBram Moolenaar      hardcopy > Xhardcopy_printmbfont
602e09634aSBram Moolenaar      let lines = readfile('Xhardcopy_printmbfont')
612e09634aSBram Moolenaar      call assert_true(len(lines) > 20, opt)
622e09634aSBram Moolenaar      call assert_true(lines[0] =~ 'PS-Adobe', opt)
632e09634aSBram Moolenaar      call delete('Xhardcopy_printmbfont')
642e09634aSBram Moolenaar    endif
652e09634aSBram Moolenaar  endfor
66b5690794SBram Moolenaar  set printmbfont&
672e09634aSBram Moolenaar  bwipe
682e09634aSBram Moolenaarendfunc
692e09634aSBram Moolenaar
70833805a4SBram Moolenaarfunc Test_printmbcharset()
71833805a4SBram Moolenaar  CheckFeature postscript
72833805a4SBram Moolenaar
73833805a4SBram Moolenaar  " digraph.txt has plenty of non-latin1 characters.
74833805a4SBram Moolenaar  help digraph.txt
75*edc10b54SBram Moolenaar  set printmbcharset=ISO10646 printencoding=utf-8
76*edc10b54SBram Moolenaar  for courier in ['yes', 'no']
77*edc10b54SBram Moolenaar    for ascii in ['yes', 'no']
78*edc10b54SBram Moolenaar      exe 'set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,i:WadaMin-Italic,o:WadaMin-BoldItalic'
79*edc10b54SBram Moolenaar      \   .. ',c:' .. courier .. ',a:' .. ascii
80833805a4SBram Moolenaar      hardcopy > Xhardcopy_printmbcharset
81833805a4SBram Moolenaar      let lines = readfile('Xhardcopy_printmbcharset')
82833805a4SBram Moolenaar      call assert_true(len(lines) > 20)
83833805a4SBram Moolenaar      call assert_true(lines[0] =~ 'PS-Adobe')
84*edc10b54SBram Moolenaar    endfor
85*edc10b54SBram Moolenaar  endfor
86833805a4SBram Moolenaar
87833805a4SBram Moolenaar  set printmbcharset=does-not-exist printencoding=utf-8 printmbfont=r:WadaMin-Regular
88833805a4SBram Moolenaar  call assert_fails('hardcopy > Xhardcopy_printmbcharset', 'E456:')
89833805a4SBram Moolenaar
90833805a4SBram Moolenaar  set printmbcharset=GB_2312-80 printencoding=utf-8 printmbfont=r:WadaMin-Regular
91833805a4SBram Moolenaar  call assert_fails('hardcopy > Xhardcopy_printmbcharset', 'E673:')
92833805a4SBram Moolenaar
93833805a4SBram Moolenaar  set printmbcharset=ISO10646 printencoding=utf-8 printmbfont=
94833805a4SBram Moolenaar  call assert_fails('hardcopy > Xhardcopy_printmbcharset', 'E675:')
95833805a4SBram Moolenaar
96833805a4SBram Moolenaar  call delete('Xhardcopy_printmbcharset')
97833805a4SBram Moolenaar  set printmbcharset& printencoding& printmbfont&
98833805a4SBram Moolenaar  bwipe
99833805a4SBram Moolenaarendfunc
100833805a4SBram Moolenaar
1012e09634aSBram Moolenaarfunc Test_printexpr()
102833805a4SBram Moolenaar  CheckFeature postscript
1032e09634aSBram Moolenaar
1042e09634aSBram Moolenaar  " Not a very useful printexpr value, but enough to test
1052e09634aSBram Moolenaar  " hardcopy with 'printexpr'.
1062e09634aSBram Moolenaar  function PrintFile(fname)
1072e09634aSBram Moolenaar    call writefile(['Test printexpr: ' .. v:cmdarg],
1082e09634aSBram Moolenaar    \              'Xhardcopy_printexpr')
1092e09634aSBram Moolenaar    call delete(a:fname)
1102e09634aSBram Moolenaar    return 0
1112e09634aSBram Moolenaar  endfunc
1122e09634aSBram Moolenaar  set printexpr=PrintFile(v:fname_in)
1132e09634aSBram Moolenaar
1142e09634aSBram Moolenaar  help help
1152e09634aSBram Moolenaar  hardcopy dummy args
1162e09634aSBram Moolenaar  call assert_equal(['Test printexpr: dummy args'],
1172e09634aSBram Moolenaar  \                 readfile('Xhardcopy_printexpr'))
1182e09634aSBram Moolenaar  call delete('Xhardcopy_printexpr')
1192e09634aSBram Moolenaar
120833805a4SBram Moolenaar  " Function returns 1 to test print failure.
1212e09634aSBram Moolenaar  function PrintFails(fname)
1222e09634aSBram Moolenaar    call delete(a:fname)
1232e09634aSBram Moolenaar    return 1
1242e09634aSBram Moolenaar  endfunc
1252e09634aSBram Moolenaar  set printexpr=PrintFails(v:fname_in)
1262e09634aSBram Moolenaar  call assert_fails('hardcopy', 'E365:')
1272e09634aSBram Moolenaar
1282e09634aSBram Moolenaar  set printexpr&
1292e09634aSBram Moolenaar  bwipe
1302e09634aSBram Moolenaarendfunc
1312e09634aSBram Moolenaar
1322e09634aSBram Moolenaarfunc Test_errors()
133833805a4SBram Moolenaar  CheckFeature postscript
134833805a4SBram Moolenaar
1352e09634aSBram Moolenaar  edit test_hardcopy.vim
1362e09634aSBram Moolenaar  call assert_fails('hardcopy >', 'E324:')
1372e09634aSBram Moolenaar  bwipe
1382e09634aSBram Moolenaarendfunc
1392e09634aSBram Moolenaar
1402e09634aSBram Moolenaarfunc Test_dark_background()
1412e09634aSBram Moolenaar  edit test_hardcopy.vim
1422e09634aSBram Moolenaar  syn on
1432e09634aSBram Moolenaar
1442e09634aSBram Moolenaar  for bg in ['dark', 'light']
1452e09634aSBram Moolenaar    exe 'set background=' .. bg
1462e09634aSBram Moolenaar
1472e09634aSBram Moolenaar    if has('postscript')
1482e09634aSBram Moolenaar      hardcopy > Xhardcopy_dark_background
1492e09634aSBram Moolenaar      let lines = readfile('Xhardcopy_dark_background')
1502e09634aSBram Moolenaar      call assert_true(len(lines) > 20)
1512e09634aSBram Moolenaar      call assert_true(lines[0] =~ 'PS-Adobe')
1522e09634aSBram Moolenaar      call delete('Xhardcopy_dark_background')
1532e09634aSBram Moolenaar    endif
1542e09634aSBram Moolenaar  endfor
1552e09634aSBram Moolenaar
1562e09634aSBram Moolenaar  set background&
1572e09634aSBram Moolenaar  bwipe
1582e09634aSBram Moolenaarendfun
1592e09634aSBram Moolenaar
1602e09634aSBram Moolenaarfunc Test_empty_buffer()
161833805a4SBram Moolenaar  CheckFeature postscript
162833805a4SBram Moolenaar
1632e09634aSBram Moolenaar  new
1642e09634aSBram Moolenaar  call assert_equal("\nNo text to be printed", execute('hardcopy'))
1652e09634aSBram Moolenaar  bwipe
166b5690794SBram Moolenaarendfunc
167b5690794SBram Moolenaar
168b5690794SBram Moolenaarfunc Test_printheader_parsing()
169b5690794SBram Moolenaar  " Only test that this doesn't throw an error.
170b5690794SBram Moolenaar  set printheader=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
171b5690794SBram Moolenaar  set printheader=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
172b5690794SBram Moolenaar  set printheader=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
173b5690794SBram Moolenaar  set printheader=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
174b5690794SBram Moolenaar  set printheader=
175b5690794SBram Moolenaar  set printheader&
176b5690794SBram Moolenaarendfunc
177b5690794SBram Moolenaar
178bf15b8d7SBram Moolenaarfunc Test_fname_with_spaces()
179833805a4SBram Moolenaar  CheckFeature postscript
180833805a4SBram Moolenaar
181bf15b8d7SBram Moolenaar  split t\ e\ s\ t.txt
182bf15b8d7SBram Moolenaar  call setline(1, ['just', 'some', 'text'])
183bf15b8d7SBram Moolenaar  hardcopy > %.ps
184bf15b8d7SBram Moolenaar  call assert_true(filereadable('t e s t.txt.ps'))
185bf15b8d7SBram Moolenaar  call delete('t e s t.txt.ps')
186bf15b8d7SBram Moolenaar  bwipe!
187bf15b8d7SBram Moolenaarendfunc
18843dee181SBram Moolenaar
18943dee181SBram Moolenaarfunc Test_illegal_byte()
190833805a4SBram Moolenaar  CheckFeature postscript
191833805a4SBram Moolenaar  if &enc != 'utf-8'
19243dee181SBram Moolenaar    return
19343dee181SBram Moolenaar  endif
194833805a4SBram Moolenaar
19543dee181SBram Moolenaar  new
19643dee181SBram Moolenaar  " conversion of 0xff will fail, this used to cause a crash
19743dee181SBram Moolenaar  call setline(1, "\xff")
19843dee181SBram Moolenaar  hardcopy >Xpstest
19943dee181SBram Moolenaar
20043dee181SBram Moolenaar  bwipe!
20143dee181SBram Moolenaar  call delete('Xpstest')
20243dee181SBram Moolenaarendfunc
203833805a4SBram Moolenaar
204833805a4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
205