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