From cbc564d6c73b4d6139419b7e1722deb633833a77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 21 May 2011 16:31:03 +0200
Subject: Import tests from Heiko.

---
 luatex.dtx | 341 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 333 insertions(+), 8 deletions(-)

(limited to 'luatex.dtx')

diff --git a/luatex.dtx b/luatex.dtx
index 843148c..3719a63 100644
--- a/luatex.dtx
+++ b/luatex.dtx
@@ -41,8 +41,11 @@ See source file '\inFileName' for licence and contact information.
 
 \generate{%
   \usedir{doc/luatex/luatexbase}%
-  \file{test-luatex-plain.tex}{\from{luatex.dtx}{testplain}}%
-  \file{test-luatex-latex.tex}{\from{luatex.dtx}{testlatex}}%
+  \file{test-luatex1.tex}{\from{luatex.dtx}{test1}}%
+  \file{test-luatex2.tex}{\from{luatex.dtx}{test1,test2}}%
+  \file{test-luatex3.tex}{\from{luatex.dtx}{test1,test3}}%
+  \file{test-luatex4.tex}{\from{luatex.dtx}{test4}}%
+  \file{test-luatex5.tex}{\from{luatex.dtx}{test5}}%
 }
 
 \obeyspaces
@@ -296,15 +299,337 @@ See source file '\inFileName' for licence and contact information.
 %</texpackage>
 %    \end{macrocode}
 %
-%    \section{Test file}
+%    \section{Test}
 %
-%    Very minimal, just check that the package correctly loads.
+%    MPG: This section shamelessly copied from Heiko's original
+%    \file{luatex.dtx}.
 %
 %    \begin{macrocode}
-%<testplain>\input luatex.sty
-%<testlatex>\RequirePackage{luatex}
-%<testplain>\bye
-%<testlatex>\stop
+%<*test2>
+\documentclass{article}
+\def\LoadCommand{%
+  \RequirePackage{luatex}[2010/03/09]%
+}
+%</test2>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*test3>
+\documentclass{article}
+\def\LoadCommand{%
+  \RequirePackage{luatex-loader}[2010/03/09]%
+}
+%</test3>
+%    \end{macrocode}
+% \subsection{Catcode checks for loading}
+%
+%    \begin{macrocode}
+%<*test1>
+%    \end{macrocode}
+%    \begin{macrocode}
+\catcode`\{=1 %
+\catcode`\}=2 %
+\catcode`\#=6 %
+\catcode`\@=11 %
+\expandafter\ifx\csname count@\endcsname\relax
+  \countdef\count@=255 %
+\fi
+\expandafter\ifx\csname @gobble\endcsname\relax
+  \long\def\@gobble#1{}%
+\fi
+\expandafter\ifx\csname @firstofone\endcsname\relax
+  \long\def\@firstofone#1{#1}%
+\fi
+\expandafter\ifx\csname loop\endcsname\relax
+  \expandafter\@firstofone
+\else
+  \expandafter\@gobble
+\fi
+{%
+  \def\loop#1\repeat{%
+    \def\body{#1}%
+    \iterate
+  }%
+  \def\iterate{%
+    \body
+      \let\next\iterate
+    \else
+      \let\next\relax
+    \fi
+    \next
+  }%
+  \let\repeat=\fi
+}%
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+  \edef\RestoreCatcodes{%
+    \RestoreCatcodes
+    \catcode\the\count@=\the\catcode\count@\relax
+  }%
+\ifnum\count@<255 %
+  \advance\count@ 1 %
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+  \count@=#1\relax
+  \loop
+    \catcode\count@=15 %
+  \ifnum\count@<#2\relax
+    \advance\count@ 1 %
+  \repeat
+}
+\def\RangeCatcodeCheck#1#2#3{%
+  \count@=#1\relax
+  \loop
+    \ifnum#3=\catcode\count@
+    \else
+      \errmessage{%
+        Character \the\count@\space
+        with wrong catcode \the\catcode\count@\space
+        instead of \number#3%
+      }%
+    \fi
+  \ifnum\count@<#2\relax
+    \advance\count@ 1 %
+  \repeat
+}
+\def\space{ }
+\expandafter\ifx\csname LoadCommand\endcsname\relax
+  \def\LoadCommand{\input luatex.sty\relax}%
+\fi
+\def\Test{%
+  \RangeCatcodeInvalid{0}{47}%
+  \RangeCatcodeInvalid{58}{64}%
+  \RangeCatcodeInvalid{91}{96}%
+  \RangeCatcodeInvalid{123}{255}%
+  \catcode`\@=12 %
+  \catcode`\\=0 %
+  \catcode`\%=14 %
+  \LoadCommand
+  \RangeCatcodeCheck{0}{36}{15}%
+  \RangeCatcodeCheck{37}{37}{14}%
+  \RangeCatcodeCheck{38}{47}{15}%
+  \RangeCatcodeCheck{48}{57}{12}%
+  \RangeCatcodeCheck{58}{63}{15}%
+  \RangeCatcodeCheck{64}{64}{12}%
+  \RangeCatcodeCheck{65}{90}{11}%
+  \RangeCatcodeCheck{91}{91}{15}%
+  \RangeCatcodeCheck{92}{92}{0}%
+  \RangeCatcodeCheck{93}{96}{15}%
+  \RangeCatcodeCheck{97}{122}{11}%
+  \RangeCatcodeCheck{123}{255}{15}%
+  \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+%    \end{macrocode}
+%    \begin{macrocode}
+%</test1>
+%    \end{macrocode}
+%
+% \subsection{Catcode tables}
+%
+% \subsubsection{Predefined catcode tables}
+%
+%    \begin{macrocode}
+%<*test4>
+\NeedsTeXFormat{LaTeX2e}
+%    \end{macrocode}
+%    Remember \LaTeX's initial catcodes in count registers
+%    starting at \cs{TestLaTeX}.
+%    \begin{macrocode}
+\count0=0 %
+\chardef\TestLaTeX=1000 %
+\chardef\TestMax=300 %
+\loop
+  \count\numexpr\TestLaTeX+\count0\relax=\catcode\count0 %
+\ifnum\count0<\TestMax
+  \advance\count0 by 1 %
+\repeat
+\documentclass{minimal}
+\usepackage{luatex}[2010/03/09]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\makeatletter
+\def\Check#1{%
+  \Expect*{\the\count@=\the\catcode\count@}%
+         *{\the\count@=#1}%
+}
+\newcount\scratch
+\def\Test#1#2{%
+  \begin{qstest}{CatcodeTable#1}{CatcodeTable#1}%
+    \luatexcatcodetable\csname CatcodeTable#1\endcsname
+    \count@=\z@
+    \loop
+      \scratch=#2\relax
+      \Expect*{\the\count@=\the\catcode\count@}%
+             *{\the\count@=\the\scratch}%
+    \ifnum\count@<\TestMax
+      \advance\count@\@ne
+    \repeat
+  \end{qstest}%
+}
+\begingroup
+  % luatex-unicode-letters.tex makes some slots to letters
+  \def\TestMax{169}%
+  \Test{LaTeX}{\the\count\numexpr\TestLaTeX+\count@}%
+\endgroup
+\Test{String}{\ifnum\count@=32 10\else 12\fi}
+\Test{Other}{12}
+\luatexinitcatcodetable99 %
+\Test{IniTeX}{%
+  0\relax
+  \begingroup
+    \luatexcatcodetable99 %
+    \global\scratch=\the\catcode\count@
+  \endgroup
+}
+%    \end{macrocode}
+%
+% \subsubsection{Catcode table number stack}
+%
+%    \begin{macrocode}
+\begin{qstest}{CatcodeTableNumStack}{CatcodeTableNumStack}
+  \def\TestStack#1{%
+    \Expect*{\LuT@NumStack}{#1}%
+  }%
+  \TestStack{0}%
+  \PushCatcodeTableNumStack
+  \TestStack{{0}0}%
+  \@firstofone{%
+    \begingroup
+      \luatexinitcatcodetable12 %
+      \luatexcatcodetable12 %
+      \PushCatcodeTableNumStack
+      \TestStack{{12}{0}0}%
+      \PopCatcodeTableNumStack
+      \TestStack{{0}0}%
+      \PopCatcodeTableNumStack
+      \TestStack{0}%
+      \def\TestWarning{Missing empty stack warning}%
+      \def\@PackageWarning#1#2{\def\TestWarning{empty stack}}%
+      \PopCatcodeTableNumStack
+      \TestStack{0}%
+      \Expect*{\TestWarning}{empty stack}%
+    \endgroup
+  }%
+\end{qstest}
+%    \end{macrocode}
+%
+% \subsubsection{Catcode table stack}
+%
+%    \begin{macrocode}
+\begin{qstest}{CatcodeTableStack}{CatcodeTableStack}
+  \def\TestStack#1{%
+    \Expect*{\the\CatcodeTableStack}{#1}%
+  }%
+  \TestStack{0}%
+  \IncCatcodeTableStack
+  \TestStack{2}%
+  \IncCatcodeTableStack
+  \TestStack{4}%
+  \begingroup
+    \IncCatcodeTableStack
+    \TestStack{6}%
+  \endgroup
+  \TestStack{6}%
+  \begingroup
+    \DecCatcodeTableStack
+    \TestStack{4}%
+  \endgroup
+  \TestStack{4}%
+  \DecCatcodeTableStack
+  \TestStack{2}%
+  \DecCatcodeTableStack
+  \TestStack{0}%
+  \begingroup
+    \def\TestError{Missing error}%
+    \def\@PackageError#1#2#3{%
+      \def\TestError{Empty stack}%
+    }%
+    \DecCatcodeTableStack
+    \TestStack{0}%
+    \Expect*{\TestError}{Empty stack}%
+  \endgroup
+\end{qstest}
+%    \end{macrocode}
+%
+% \subsubsection{Catcode regime macros}
+%
+%    \begin{macrocode}
+\begin{qstest}{CatcodeRegime}{CatcodeRegime}
+  \def\TestStacks#1#2#3{%
+    \Expect*{\the\luatexcatcodetable}{#1}%
+    \Expect*{\the\CatcodeTableStack}{#2}%
+    \Expect*{\LuT@NumStack}{#3}%
+  }%
+  \TestStacks{0}{0}{0}%
+  \catcode`\|=7 %
+  \BeginCatcodeRegime\CatcodeTableLaTeX
+    \TestStacks{2}{2}{{0}0}%
+    \Expect*{\the\catcode`\|}{12}%
+  \EndCatcodeRegime
+  \TestStacks{0}{0}{0}%
+  \Expect*{\the\catcode`\|}{7}%
+\end{qstest}
+%    \end{macrocode}
+%
+% \subsection{Attribute allocation}
+%
+%    \begin{macrocode}
+\begin{qstest}{Attributes}{Attributes}
+  \newattribute\TestAttr
+  \Expect*{\meaning\TestAttr}%
+         *{\string\attribute\number\allocationnumber}%
+  \Expect*{\the\allocationnumber}{0}%
+  \begingroup
+    \newattribute\TestAttr
+    \Expect*{\the\allocationnumber}{1}%
+  \endgroup
+  \Expect*{\the\allocationnumber}{0}%
+  \Expect*{\meaning\TestAttr}*{\string\attribute1}%
+  \Expect*{\the\TestAttr}*{\number\LuT@UnsetAttributeValue}%
+  \def\Test#1{%
+    \setattribute\TestAttr{#1}%
+    \Expect*{\the\TestAttr}{#1}%
+  }%
+  \Test{0}%
+  \Test{1}%
+  \Test{-1}%
+  \Test{123}%
+  \unsetattribute\TestAttr
+  \Expect*{\the\TestAttr}*{\number\LuT@UnsetAttributeValue}%
+  \begingroup
+    \Expect*{\the\TestAttr}*{\number\LuT@UnsetAttributeValue}%
+    \Test{1234}%
+  \endgroup
+  \Expect*{\the\TestAttr}*{\number\LuT@UnsetAttributeValue}%
+\end{qstest}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\@@end
+%</test4>
+%    \end{macrocode}
+%
+% \subsection{Short test for \plainTeX}
+%
+%    \begin{macrocode}
+%<*test5>
+\input luatex.sty\relax
+\newattribute\TestAttr
+\setattribute\TestAttr{10}
+\unsetattribute\TestAttr
+\newcatcodetable\TestCTa
+\begingroup
+  \SetCatcodeRange{`A}{`Z}{12}%
+\endgroup
+\BeginCatcodeRegime\CatcodeTableLaTeX
+\EndCatcodeRegime
+\end
+%</test5>
 %    \end{macrocode}
 %
 %
-- 
cgit v1.2.3

