Skip to content

Commit

Permalink
Add test case distinguishing fully vs partially expanded cases
Browse files Browse the repository at this point in the history
  • Loading branch information
brucemiller committed Sep 23, 2024
1 parent 771953e commit 59fbb33
Show file tree
Hide file tree
Showing 4 changed files with 266 additions and 0 deletions.
3 changes: 3 additions & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -1250,6 +1250,9 @@ t/expansion/numexpr.xml
t/expansion/parindent.pdf
t/expansion/parindent.tex
t/expansion/parindent.xml
t/expansion/partial.pdf
t/expansion/partial.tex
t/expansion/partial.xml
t/expansion/pdftex_expanded.pdf
t/expansion/pdftex_expanded.tex
t/expansion/pdftex_expanded.xml
Expand Down
Binary file added t/expansion/partial.pdf
Binary file not shown.
106 changes: 106 additions & 0 deletions t/expansion/partial.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
\documentclass{article}
\title{Partial vs.~Full Expansion}
\def\foo{Foo}
\def\foofoo{\foo}
\protected\def\pfoo{\foo}
\DeclareRobustCommand\rfoo{\foo}

\newtoks\tfoo
\tfoo={\foo}

\newtoks\mysave

\let\notrelax\relax
\def\junk{ \relax \notrelax }
\def\junkjunk{ \junk \relax \junk }


\begin{document}

\section{Test Filler}
Uppercase:
\uppercase{letters},
\uppercase \relax {letters},
\uppercase \notrelax {letters},
\uppercase \junk {letters},
\uppercase \junkjunk {letters}.

strcmp: \pdfstrcmp{\foo}{\foo},
\pdfstrcmp \relax {\foo}{\foo},
\pdfstrcmp \junk {\foo} \junkjunk {\foo}.

\section{cmp to \string\foo (0=same)}
w/M=Macro, I=Indirect, P=Protected, R=Robust, T=The, X=expandafter

M \pdfstrcmp{\foo}{\foo};
I \pdfstrcmp{\foofoo}{\foo};
P \pdfstrcmp{\pfoo}{\foo};
R \pdfstrcmp{\rfoo}{\foo};
T \pdfstrcmp{\the\tfoo}{\foo};
XP \expandafter\pdfstrcmp\expandafter{\pfoo}{\foo};
XR \expandafter\pdfstrcmp\expandafter{\rfoo}{\foo};
XT \expandafter\pdfstrcmp\expandafter{\the\tfoo}{\foo}.


% Error: \expanded\foo
%\foo \foofoo \pfoo \rfoo \the\tfoo


\section{Test \string\expanded\ redefinition timing}

\begin{itemize}
\item[Normal:] {M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}

\item[Expanded:] \expanded{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}

{
\edef\stuff{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}
\def\foo{FOO}
\item[Edef:] \stuff
}

{
\mysave{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}
\def\foo{FOO}
\item[Tokens:] \the\mysave
}

{
\expandafter\mysave\expandafter{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}
\def\foo{FOO}
\item[Expandafter Tokens:] \the\mysave
}

{
\mysave={\expanded{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}}
\def\foo{FOO}
\item[Tokens Expanded:] \the\mysave
}

{
\expandafter\mysave\expandafter{\expanded{M \foo; I \foofoo; P \pfoo; R \rfoo; T \the\tfoo.}}
\def\foo{FOO}
\item[Expandafter Tokens Expanded:] \the\mysave
}


{
% OMIT Robust!!!
\item[CSName:] \expandafter\string\csname M \foo; I \foofoo; P \pfoo; T \the\tfoo.\endcsname
}
\end{itemize}

\section{Environments}
\newenvironment{bracketed}{[}{]\par}
\newtoks\mytestname
\mytestname={bracketed}
\def\testname{bracketed}
\protected\def\ptestname{bracketed}
\DeclareRobustCommand{\Ptestname}{bracketed}
Normal: \begin{bracketed}stuff\end{bracketed}
Macro: \begin{\testname}stuff\end{\testname}
Protected: \begin{\ptestname}stuff\end{\ptestname}
%Robust: \begin{\Ptestname}stuff\end{\Ptestname}
Robust: Error!\par
The: \begin{\the\mytestname}stuff\end{\the\mytestname}
\end{document}
157 changes: 157 additions & 0 deletions t/expansion/partial.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<?latexml class="article"?>
<?latexml RelaxNGSchema="LaTeXML"?>
<document xmlns="http://dlmf.nist.gov/LaTeXML">
<resource src="LaTeXML.css" type="text/css"/>
<resource src="ltx-article.css" type="text/css"/>
<title>Partial vs. Full Expansion</title>
<section inlist="toc" xml:id="S1">
<tags>
<tag>1</tag>
<tag role="refnum">1</tag>
<tag role="typerefnum">§1</tag>
</tags>
<title><tag close=" ">1</tag>Test Filler</title>
<para xml:id="S1.p1">
<p>Uppercase:
LETTERS,
LETTERS,
LETTERS,
LETTERS,
LETTERS.</p>
</para>
<para xml:id="S1.p2">
<p>strcmp: 0,
0,
0.</p>
</para>
</section>
<section inlist="toc" xml:id="S2">
<tags>
<tag>2</tag>
<tag role="refnum">2</tag>
<tag role="typerefnum">§2</tag>
</tags>
<title><tag close=" ">2</tag>cmp to “foo(0=same)</title>
<para xml:id="S2.p1">
<p>w/M=Macro, I=Indirect, P=Protected, R=Robust, T=The, X=expandafter</p>
</para>
<para xml:id="S2.p2">
<p>M 0;
I 0;
P 1;
R 1;
T 1;
XP 0;
XR 1;
XT 0.</p>
</para>
</section>
<section inlist="toc" xml:id="S3">
<tags>
<tag>3</tag>
<tag role="refnum">3</tag>
<tag role="typerefnum">§3</tag>
</tags>
<title><tag close=" ">3</tag>Test “expanded redefinition timing</title>
<para xml:id="S3.p1">
<itemize xml:id="S3.I1">
<item xml:id="S3.I1.ix1">
<tags>
<tag>Normal:</tag>
<tag role="typerefnum">item Normal:</tag>
</tags>
<para xml:id="S3.I1.ix1.p1">
<p>M Foo; I Foo; P Foo; R Foo; T Foo.</p>
</para>
</item>
<item xml:id="S3.I1.ix2">
<tags>
<tag>Expanded:</tag>
<tag role="typerefnum">item Expanded:</tag>
</tags>
<para xml:id="S3.I1.ix2.p1">
<p>M Foo; I Foo; P Foo; R Foo; T Foo.</p>
</para>
</item>
<item xml:id="S3.I1.ix3">
<tags>
<tag>Edef:</tag>
<tag role="typerefnum">item Edef:</tag>
</tags>
<para xml:id="S3.I1.ix3.p1">
<p>M Foo; I Foo; P FOO; R Foo; T FOO.</p>
</para>
</item>
<item xml:id="S3.I1.ix4">
<tags>
<tag>Tokens:</tag>
<tag role="typerefnum">item Tokens:</tag>
</tags>
<para xml:id="S3.I1.ix4.p1">
<p>M FOO; I FOO; P FOO; R FOO; T FOO.</p>
</para>
</item>
<item xml:id="S3.I1.ix5">
<tags>
<tag>Expandafter Tokens:</tag>
<tag role="typerefnum">item Expandafter Tokens:</tag>
</tags>
<para xml:id="S3.I1.ix5.p1">
<p>M FOO; I FOO; P FOO; R FOO; T FOO.</p>
</para>
</item>
<item xml:id="S3.I1.ix6">
<tags>
<tag>Tokens Expanded:</tag>
<tag role="typerefnum">item Tokens Expanded:</tag>
</tags>
<para xml:id="S3.I1.ix6.p1">
<p>M FOO; I FOO; P FOO; R FOO; T FOO.</p>
</para>
</item>
<item xml:id="S3.I1.ix7">
<tags>
<tag>Expandafter Tokens Expanded:</tag>
<tag role="typerefnum">item Expandafter Tokens Expanded:</tag>
</tags>
<para xml:id="S3.I1.ix7.p1">
<p>M Foo; I Foo; P FOO; R Foo; T FOO.</p>
</para>
</item>
<item xml:id="S3.I1.ix8">
<tags>
<tag>CSName:</tag>
<tag role="typerefnum">item CSName:</tag>
</tags>
<para xml:id="S3.I1.ix8.p1">
<p>“M Foo; I Foo; P Foo; T Foo.</p>
</para>
</item>
</itemize>
</para>
</section>
<section inlist="toc" xml:id="S4">
<tags>
<tag>4</tag>
<tag role="refnum">4</tag>
<tag role="typerefnum">§4</tag>
</tags>
<title><tag close=" ">4</tag>Environments</title>
<para xml:id="S4.p1">
<p>Normal: [stuff]</p>
</para>
<para xml:id="S4.p2">
<p>Macro: [stuff]</p>
</para>
<para xml:id="S4.p3">
<p>Protected: [stuff]</p>
</para>
<para xml:id="S4.p4">
<p>Robust: Error!</p>
</para>
<para xml:id="S4.p5">
<p>The: [stuff]</p>
</para>
</section>
</document>

0 comments on commit 59fbb33

Please sign in to comment.