summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/jvlisting/test.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.tex358
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}