diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/jvlisting/test.tex |
Initial commit
Diffstat (limited to 'macros/latex/contrib/jvlisting/test.tex')
-rw-r--r-- | macros/latex/contrib/jvlisting/test.tex | 358 |
1 files changed, 358 insertions, 0 deletions
diff --git a/macros/latex/contrib/jvlisting/test.tex b/macros/latex/contrib/jvlisting/test.tex new file mode 100644 index 0000000000..ffa59a95f5 --- /dev/null +++ b/macros/latex/contrib/jvlisting/test.tex @@ -0,0 +1,358 @@ +\documentclass{article} + +\usepackage[a4paper,margin=1in]{geometry} +\usepackage{jvlisting} +\usepackage{multicol} + +\newcommand{\testbreak}{\vskip0pt plus 10cm\penalty-100\vskip0pt plus-10cm + \bigskip} +\newenvironment{test}[1]{\testbreak\begingroup\textbf{Test~#1}}% + {\par\endgroup} +\newenvironment{testpages}[1]{\parskip0pt + \vskip2pt\hrule\begin{minipage}[c][#1\baselineskip]{1\linewidth}% + \begin{multicols}{2}\parskip1ex}% + {\end{multicols}\end{minipage}\vskip3pt\hrule} +\parindent0pt +\parskip1ex + +\newwrite\outfile + +\begin{document} + +\begin{center} + \bf Test Cases for the jvlisting Package +\end{center} + + +This document contains test cases to exercise different features of +the \verb|jvlisting| \LaTeX\ package. + + +\begin{test}{1.1} (printing of special characters). + The following two lines should be the same + \setlength{\listingindent}{0pt} + \setlength{\listingskipamount}{0pt} + \begin{listing} + start %\{}~``''$ end + \end{listing} + \verb|start %\{}~``''$ end| +\end{test} + + +\begin{test}{1.2} (ligatures). + The following two lines should be the same + \setlength{\listingindent}{0pt} + \setlength{\listingskipamount}{0pt} + \begin{listing} + start ?` !` end + \end{listing} + \verb|start ?` !` end| +\end{test} + + +\begin{test}{2.1} (indentation). + The following five lines should align horizontally. + \setlength{\listingskipamount}{0pt} + \begin{listing} + |line1| + \end{listing} + \begin{listing} +|line2| + \end{listing} + \begin{listing} |line3| + |line4| + |line5|\end{listing} +\end{test} + + +\begin{test}{2.2} (decreasing indentation level). + The left end of the following lines should align horizontally. + \begin{listing} |line0 + |line1 + |line2 + |line3 + \end{listing} +\end{test} + + +\begin{test}{2.3} (increasing indentation level). + The right end of the following lines should align horizontally. + \begin{listing} + xxline1| + xline2| + line3| + \end{listing} +\end{test} + + +\begin{test}{2.4} (\verb|\listingindent|). + The following two lines should align horizontally. + \setlength{\listingskipamount}{0pt} + +\hskip3cm\texttt{|line1|} + +\setlength{\listingindent}{3cm} +\begin{listing} + |line2| +\end{listing} +\end{test} + + +\begin{test}{3.1} (\verb|\listingskipamount|, part~1). +The lines of the listing should vertically align with the lines to the +right. + +\setlength{\listingskipamount}{0pt} +\begin{minipage}{.4\linewidth} + line1 line1 line1 line1 line1 + \begin{listing} + line2 line2 line2 line2 line2 + line3 line3 line3 line3 line3 + \end{listing} + line4 line4 line4 line4 line4 +\end{minipage}% +\begin{minipage}{.6\linewidth} + line1 \\ + line2 \\ + line3 \\ + line4 +\end{minipage} +\end{test} + + +\begin{test}{3.2} (\verb|\listingskipamount|, part~2). +The lines of the listing should vertically align with the lines to the +right. + +\begin{minipage}{.4\linewidth} + line1 line1 line1 line1 line1 + \setlength{\listingskipamount}{1\baselineskip} + \begin{listing} + line3 line3 line3 line3 line3 + \end{listing} + line5 line5 line5 line5 line5 +\end{minipage}% +\begin{minipage}{.6\linewidth} + line1 \\ + line2 \\ + line3 \\ + line4 \\ + line5 +\end{minipage} +\end{test} + + +\begin{test}{3.3} (no extra parskip before/after listings). +The lines of the listing should vertically align with the lines to the +right. + +\begin{minipage}{.4\linewidth}\parskip12pt +\setlength{\listingskipamount}{0pt} + line1 line1 line1 line1 line1 + \begin{listing} + line2 line2 line2 line2 line2 + line3 line3 line3 line3 line3 + line4 line4 line4 line4 line4 + \end{listing} + line5 line5 line5 line5 line5 + + line7 +\end{minipage}% +\begin{minipage}{.6\linewidth}\parskip1\baselineskip + line1 + + line3 + + line5 + + line7 +\end{minipage} +\end{test} + + +\begin{test}{4.1} (page breaks). +The columns should be of equal height (four rows each). +\setlength{\listingskipamount}{0pt}% +\begin{testpages}{6} + Some text \dots \\ + \dots\ before the listing. + \begin{listing} + line1 + line2 + line3 + line4 + line5 + line6 + \end{listing} +\end{testpages} +\end{test} + + +\begin{test}{4.2} (page breaks, \verb|\listingpenalty|). +The column break should be immediately before \verb|line1|. +\setlength{\listingskipamount}{0pt}% +\listingpenalty=10000 +\begin{testpages}{6} + Some text \dots \\ + \dots\ before the listing. + \begin{listing} + line1 + line2 + line3 + line4 + line5 + line6 + \end{listing} +\end{testpages} +\end{test} + + +\begin{test}{4.3} (page breaks, \verb|\prelistingpenalty|). +The column break should {\em not} be immediately before \verb|line1|. +\setlength{\listingskipamount}{0pt}% +\prelistingpenalty=10000 +\begin{testpages}{3} + Some text \dots \\ + \dots\ before \dots \\ + \dots the listing. + \begin{listing} + line1 + line2 + \end{listing} +\end{testpages} +\end{test} + + +\begin{test}{4.4} (page breaks, \verb|\postlistingpenalty|). +The column break should {\em not} be immediately after \verb|line3|. +\setlength{\listingskipamount}{0pt}% +\postlistingpenalty=10000 +\begin{testpages}{3} + \begin{listing} + line1 + line2 + line3 + \end{listing} + Some text \dots \\ + \dots\ after the listing. +\end{testpages} +\end{test} + + +\begin{test}{5} (\verb|\filelisting|) +The following two listings should look the same. +\immediate\openout\outfile=tmp.txt +\immediate\write\outfile{line1} +\immediate\write\outfile{line2} +\immediate\write\outfile{line3} +\immediate\closeout\outfile + +\begin{minipage}{.5\linewidth} +\begin{listing} +line1 +line2 +line3 +\end{listing} +\end{minipage}% +\begin{minipage}{.5\linewidth} +\filelisting{tmp.txt} +\end{minipage} +\end{test} + + +\begin{test}{6.1} (\verb|\listingstarthook|, prepending a character) + The following two lines should be the same. + \setlength{\listingskipamount}{0pt}% + \begin{listing} + xtest + \end{listing} + \def\listingstarthook#1{#1x\ignorespaces}% + \begin{listing} + test + \end{listing} +\end{test} + +\begin{test}{6.2} (\verb|\listingstarthook|, prepending a line) + The following listing should have two lines. + \setlength{\listingskipamount}{0pt}% + {\obeylines + \gdef\listingstarthook#1{#1{ }{ }{ }{ }line1 + }}% + \begin{listing} + line2 + \end{listing} + \global\let\listingstarthook=\undefined +\end{test} + +\begin{test}{6.3} (\verb|\listingstarthook|, removing the first line) + The following listing should have two lines. + \setlength{\listingskipamount}{0pt}% + {\obeylines + \gdef\listingstarthook#1#2 + {#1}}% + \begin{listing} + this should not be shown + line1 + line2 + \end{listing} + \global\let\listingstarthook=\undefined +\end{test} + +\begin{test}{6.4} (\verb|\listingstarthook|, conditionally removing the first line) + The following listing should have two lines. + \setlength{\listingskipamount}{0pt}% + {\catcode`\#=12\gdef\hash{#}} + {\obeylines + \gdef\skiptoeol#1#2 + {\noindent\hbox to0pt{\hss (a line was removed)\hskip-\textwidth}#1}} + \def\x#1#2#3{\if#3 \def\next{\x{#1}{#2#3}}\else + \expandafter\ifx\hash#3\def\next{\skiptoeol{#1}}\else + \def\next{#1#2#3}\fi\fi\next} + \def\listingstarthook#1{\x{#1}{}} + \begin{listing} + #line0 + line1 + line2 + \end{listing} + The following listing should have three lines. + \begin{listing} + line0 + line1 + line2 + \end{listing} +\end{test} + +\newcommand{\writetofile}[1]{\immediate\write\outfile{#1}} +\NewListingEnvironment{filetestlisting}{0}{}% + {\immediate\openout\outfile=tmp.txt}{\writetofile}% + {\immediate\closeout\outfile} + +\begin{test}{7.1} (writing listings to file) + The following two lines should be the same. + \setlength{\listingskipamount}{0pt}% + \begin{listing} + a line with ``quotes'', \slashes and potential ligatures: ` ?` !` ' + \end{listing} + \begin{filetestlisting} + a line with ``quotes'', \slashes and potential ligatures: ` ?` !` ' + \end{filetestlisting} + \filelisting{tmp.txt} +\end{test} + +\newcommand{\copytypeset}[1]{\ListingTypesetLine{#1}% + {\DisableLigatureFix\immediate\write\outfile{#1}}} +\NewListingEnvironment{copylisting}{0}{\prelistingskip}% + {\immediate\openout\outfile=tmp.txt\listingfont}{\copytypeset}% + {\immediate\closeout\outfile\postlistingskip} + +\begin{test}{7.2} (simultaneously typesetting and writing to a file) + The following four lines should be the same. + \setlength{\listingskipamount}{0pt}% + \begin{copylisting} + a line with ``quotes'', \slashes and potential ligatures: ` ?` !` ' + a line with ``quotes'', \slashes and potential ligatures: ` ?` !` ' + \end{copylisting} + \filelisting{tmp.txt} +\end{test} + +\end{document} |