summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/euptexdir/tests
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2024-04-14 05:29:13 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2024-04-14 05:29:13 +0000
commit406b2b73ed325a7138057ee90cc5ea7f026a6e68 (patch)
tree46f8d7f372bb90b62be391387a9cedfb93bb8688 /Build/source/texk/web2c/euptexdir/tests
parentd0f3e54f7deda0e587d231083c9bafd55e1b8ccc (diff)
eptex: Remove web2c/eptexdir
git-svn-id: svn://tug.org/texlive/trunk@70943 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/euptexdir/tests')
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/tests/fontchar.sh2
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/fontchar.tex61
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/lastnodefont.tex24
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/lastnodesubtype_math.tex29
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/tests/pdforigin.sh10
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pdforigin.tex40
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pdfpagewidth.tex24
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pdfsavepos.tex12
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/printkanji-eptex.tex68
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/suppress_errors.tex76
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/uchar.tex127
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/zero_search.tex72
12 files changed, 545 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/euptexdir/tests/fontchar.sh b/Build/source/texk/web2c/euptexdir/tests/fontchar.sh
new file mode 100755
index 00000000000..6430e83ca83
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/fontchar.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+luatex zero_search.tex && ppltotf zero_search.pl && eptex fontchar
diff --git a/Build/source/texk/web2c/euptexdir/tests/fontchar.tex b/Build/source/texk/web2c/euptexdir/tests/fontchar.tex
new file mode 100644
index 00000000000..1df91d27cd1
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/fontchar.tex
@@ -0,0 +1,61 @@
+%#!eptex
+
+\catcode`\_=12 \catcode`\@=11
+\def\typeout{\immediate\write17}
+\begingroup
+ \catcode`\P=12 \catcode`\T=12
+ \lowercase{
+ \gdef\rem@pt#1.#2PT{#1\ifnum#2>\z@.#2\fi}
+ }
+\endgroup
+\def\strip@pt{\expandafter\rem@pt\the}
+
+\def\TFC#1{\typeout{code #1: \iffontchar\jfont#1 T\else F\fi}}
+\def\TFT#1#2{\typeout{type \the\numexpr-#1-1\relax:
+ \iffontchar#2#1
+ (\strip@pt\fontcharht#2#1+\strip@pt\fontchardp#2#1)*\strip@pt\fontcharwd#2#1
+ \else F\fi
+}}
+
+\TFC{"A1A1}
+\TFC{"FEFE}
+\TFC{"E0A1}
+\TFC{"FCFC}
+\TFC{"8140}
+\TFC{"9FFC}
+
+\typeout{TEST: \string\jfont: \fontname\sevenmin}
+\sevenmin
+\count@=-1
+\loop \ifnum\count@>-15
+ \TFT\count@\jfont\advance\count@\m@ne
+\repeat
+
+\typeout{TEST: \string\tfont: \fontname\tfont}
+\count@=-1
+\loop \ifnum\count@>-15
+ \TFT\count@\tfont\advance\count@\m@ne
+\repeat
+
+\protected\def\NEXT{\ten=1
+ \loop\ifnum\ten<95
+ \ifdim\fontcharwd\zs\kuten\numexpr\ku*256+\ten=10pt
+ \global\count@=\kuten\numexpr\ku*256+\ten
+ \global\count0\ku \global\count2\ten
+ \global\ku=95 \ten=95
+ \fi
+ \advance\ten1
+ \repeat}
+\count@=0
+\jfont\zs=zero_search
+\newcount\ku
+\newcount\ten
+\ku=1
+\loop\ifnum\ku<95
+ {\ifnum11=\ifnum\ku>8 1\else0\fi\ifnum\ku<16 1\else 0\fi\else\NEXT\fi}%
+ \advance\ku1
+\repeat
+\kansujichar1=\count@
+\typeout{\kansuji1(internal code: \the\count@, \the\count0-ku \the\count2-ten)}
+
+\bye
diff --git a/Build/source/texk/web2c/euptexdir/tests/lastnodefont.tex b/Build/source/texk/web2c/euptexdir/tests/lastnodefont.tex
new file mode 100644
index 00000000000..a9c8e91fe29
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/lastnodefont.tex
@@ -0,0 +1,24 @@
+\newcount\res
+\def\test#1{%
+ \setbox0\hbox{#1\global\res=\lastnodechar\global\xdef\rf{\the\lastnodefont}}%
+ \leavevmode\hbox to 5em{\hss \the\res}, \hbox to 10em{\tentt\meaning\rf\hss}%
+ \copy0\par}
+
+\global\res=\lastnodechar\xdef\rf{\the\lastnodefont}\the\res. {\tentt \meaning\rf}
+
+\ybaselineshift-10pt
+\setbox0\vbox{\vskip10pt\global\res=\lastnodechar\global\xdef\rf{\the\lastnodefont}}%
+\leavevmode\hbox to 5em{\hss \the\res}, \hbox to 10em{\tentt\meaning\rf\hss}%
+
+\test{}
+\test{a}
+\test{ffi}
+\test{漢)}
+\test{漢字}
+\hbox{\tate \test{漢字}}
+\test{あ\kern-1pt}
+\test{あ\hskip10pt}
+\test{あ\/}
+
+
+\bye
diff --git a/Build/source/texk/web2c/euptexdir/tests/lastnodesubtype_math.tex b/Build/source/texk/web2c/euptexdir/tests/lastnodesubtype_math.tex
new file mode 100644
index 00000000000..fd1d0c2d4cd
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/lastnodesubtype_math.tex
@@ -0,0 +1,29 @@
+\def\typeout{\immediate\write17}
+\newcount\CNT\newcount\CNTs
+\def\TEST#1#2#3{\par$#1{xyz}#2\CNT=\lastnodetype\CNTs=\lastnodesubtype\typeout{\string #1: (\the\CNT,\the\CNTs)}#3$}
+
+\TEST\displaystyle\displaystyle{}
+\TEST\textstyle\textstyle{}
+\TEST\mathchoice{{a}{a}{a}}{}
+\TEST\mathord{}{}
+\TEST\mathop\displaylimits{}
+\TEST\mathop\limits{}
+\TEST\mathop\nolimits{}
+\TEST\mathbin{}{}
+\TEST\mathrel{}{}
+\TEST\mathopen{}{}
+\TEST\mathclose{}{}
+\TEST\mathpunct{}{}
+\TEST\mathinner{}{}
+\TEST\sqrt{}{}% radical
+\TEST\underline{}{}
+\TEST\overline{}{}
+\TEST\vcenter{}{}
+\TEST\dot{}{}% accent
+
+\TEST{left}{\left[}{\right]}
+\TEST{middle}{\left(\middle|}{\right)}
+\TEST{\left[\right]}{}{}
+% TODO: right, fraction
+
+\bye
diff --git a/Build/source/texk/web2c/euptexdir/tests/pdforigin.sh b/Build/source/texk/web2c/euptexdir/tests/pdforigin.sh
new file mode 100755
index 00000000000..0889a39508b
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pdforigin.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+etex pdforigin.tex && etex pdforigin.tex
+dvips pdforigin
+ps2pdf pdforigin.ps && mv pdforigin.pdf pdforigin_etex_dvips.pdf
+dvipdfmx pdforigin && mv pdforigin.pdf pdforigin_etex_dvipdfmx.pdf
+eptex pdforigin.tex && eptex pdforigin.tex
+dvipdfmx pdforigin && mv pdforigin.pdf pdforigin_eptex_dvipdfmx.pdf
+pdftex pdforigin.tex && pdftex pdforigin.tex && mv pdforigin.pdf pdforigin_pdftex.pdf
+xetex pdforigin.tex && xetex pdforigin.tex && mv pdforigin.pdf pdforigin_xetex.pdf
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/pdforigin.tex b/Build/source/texk/web2c/euptexdir/tests/pdforigin.tex
new file mode 100644
index 00000000000..ab64ac932b9
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pdforigin.tex
@@ -0,0 +1,40 @@
+\mag=3000
+
+\newdimen\XPOS\newdimen\YPOS\newread\TMP
+\openin\TMP=\jobname.tmp
+\ifeof\TMP\else\closein\TMP\input \jobname.tmp\fi
+\immediate\openout\TMP=\jobname.tmp
+\topskip0pt
+\ifdefined\pagewidth
+ \pagewidth=10truein\pageheight=10truein
+\else\ifdefined\pdfpagewidth
+ \pdfpagewidth=10truein\pdfpageheight=10truein
+\fi\fi
+
+\shipout\hbox{%
+ \special{papersize=10truein,10truein}%
+ \pdfsavepos%
+ \write\TMP{\noexpand\XPOS=\the\pdflastxpos sp\noexpand\YPOS=\the\pdflastypos sp}%
+ \smash{%
+ \llap{\hss\vrule height 1pt depth 0pt width \XPOS}%
+ \llap{\hss\vrule height 2.4pt depth -2pt width 1in}%
+ \llap{\hss\vrule height 4pt depth -3.2pt width 1truein}%
+ \llap{\vrule height 1in depth 0pt width 0.4pt\kern.8pt%
+ \vrule height 1truein depth 0pt width 0.8pt}%
+ \rlap{%
+ \vrule height 0pt depth \dimexpr\YPOS+5truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS+4truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS+3truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS+2truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS+1truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS width .8pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS-1truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS-2truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS-3truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS-4truept width .4pt\kern.8pt
+ \vrule height 0pt depth \dimexpr\YPOS-5truept width .4pt\kern.8pt%
+ }%
+ }%
+}
+\end
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/pdfpagewidth.tex b/Build/source/texk/web2c/euptexdir/tests/pdfpagewidth.tex
new file mode 100644
index 00000000000..c285d7601db
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pdfpagewidth.tex
@@ -0,0 +1,24 @@
+%#!eptex
+
+\def\TEST#1{%
+ \pdfpagewidth0pt\pdfpageheight0pt
+ \shipout\hbox{\special{#1}}%
+ \message{<\the\pdfpagewidth, \the\pdfpageheight>}%
+}
+\count0=0
+\readpapersizespecial=1
+\TEST{papersize=10pt,20pt} % OK
+\TEST{papersize=10pt,20zw} % `zw' is not supported
+\TEST{papersize=10pt,20ex} % `ex' is neither
+\TEST{papersize=1pt,2} % no unit
+\TEST{papersize 10pc,20pc} % there is no `='
+\TEST{papersize=10pcA,20pc}%
+\TEST{papersize=10pc,20pcs}%
+\TEST{papersize=10pt,-20pt}% negative value
+\TEST{papersize=0pt,20000.6sp}% OK
+\TEST{papersize=30.2pt,665pt}% OK
+
+\readpapersizespecial=0
+\TEST{papersize=10pt,20pt}
+
+\end
diff --git a/Build/source/texk/web2c/euptexdir/tests/pdfsavepos.tex b/Build/source/texk/web2c/euptexdir/tests/pdfsavepos.tex
new file mode 100644
index 00000000000..7bde48aa574
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pdfsavepos.tex
@@ -0,0 +1,12 @@
+\documentclass[dvipdfmx]{tarticle}
+\setlength{\pdfpagewidth}{\paperwidth}
+\setlength{\pdfpageheight}{\paperheight}
+% 以下二行をコメントアウトしたりしなかったりして試してみる.
+\special{papersize=\the\paperwidth,\the\paperheight}% (a)
+\AtBeginDvi{\special{papersize=\the\paperwidth, \the\paperheight}}% (b)
+\begin{document}
+A\pdfsavepos
+\newpage
+\message{pdflatexpos = \the\dimexpr\pdflastxpos sp, pdflastypos = \the\dimexpr\pdflastypos sp,
+ pdfpagewidth = \the\pdfpagewidth, pdfpageheight = \the\pdfpageheight}
+\end{document} \ No newline at end of file
diff --git a/Build/source/texk/web2c/euptexdir/tests/printkanji-eptex.tex b/Build/source/texk/web2c/euptexdir/tests/printkanji-eptex.tex
new file mode 100644
index 00000000000..67c795e7d80
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/printkanji-eptex.tex
@@ -0,0 +1,68 @@
+%あaª
+\tracingstats=1000
+\noautoxspacing\scrollmode
+\tracingscantokens=1
+\everyeof{\noexpand}
+\font\x=ec-lmtt10 \x
+\immediate\openout1=\jobname.out
+\def\MSG#1{%
+ \message{\string{MSG #1\string}}%
+ \immediate\write17{\string{TOT #1\string}}%
+ \immediate\write1{#1}%
+}
+\def\head#1{\message{■#1.}\par\noindent\hbox{■\null}#1.\par}
+\message{^^J}
+\count255="80
+\loop\ifnum\count255<"100
+ \catcode\count255=11\relax
+ \advance\count255 1\relax
+\repeat
+
+%========
+\head{detokenize}
+\def\A{^^c5^^bf ſ 顛 }
+
+\detokenize\expandafter{\meaning\A}
+\MSG{\detokenize\expandafter{\meaning\A}}
+
+%========
+\head{scantokens}
+\def\c{捉^^c2^^aaª}
+
+\scantokens{\noexpand\^^a4^^a2あ^^e3^^81^^82.^^a4^^a2あ^^e3^^81^^82.\c}
+\def\a{\scantokens{\noexpand\^^a4^^a2あ^^e3^^81^^82.^^a4^^a2あ^^e3^^81^^82.\c}}
+
+\edef\b{\scantokens{\noexpand\^^a4^^a2あ^^e3^^81^^82.^^a4^^a2あ^^e3^^81^^82.\c}}
+\MSG{\a:\b:\meaning\b}
+
+\def\あ{a}
+\MSG{
+ \ifcsname あ\endcsname Y\csname あ\endcsname\else n\fi,
+ \ifcsname ^^e3^^81^^82\endcsname Y\csname ^^e3^^81^^82\endcsname\else n\fi,
+ \ifcsname ^^a4^^a2\endcsname Y\csname ^^a4^^a2\endcsname\else n\fi}
+
+%========
+\head{pdfstrcmp}
+
+\MSG{あ \pdfstrcmp{あ}{^^e3^^81^^82} ^^e3^^81^^82}
+\MSG{あ \pdfstrcmp{あ}{^^a4^^a2} ^^a4^^a2}
+\MSG{捉 \pdfstrcmp{捉}{^^c2^^aa} ^^c2^^aa}
+\MSG{捉 \pdfstrcmp{捉}{ª} ^^c2^^aa}
+\MSG{ª \pdfstrcmp{ª}{^^c2^^aa} ^^c2^^aa}
+
+%========
+\head{other pdf* util.}
+
+\MSG{\detokenize\expandafter{\pdffiledump length 20{\jobname.tex}}}
+
+\MSG{\pdfmdfivesum{}}
+\MSG{\pdfmdfivesum{あ}}
+\MSG{\pdfmdfivesum{^^e3^^81^^82}}
+\MSG{\pdfcreationdate}
+\MSG{\pdffilemoddate{\jobname.tex}}
+\MSG{\pdffilesize{\jobname.tex}}
+\MSG{\the\pdfelapsedtime}
+\MSG{\expanded{^^c2^^aaª捉.^^e3^^81^^82あ^^a4^^a2}}
+
+\immediate\closeout1
+\bye
diff --git a/Build/source/texk/web2c/euptexdir/tests/suppress_errors.tex b/Build/source/texk/web2c/euptexdir/tests/suppress_errors.tex
new file mode 100644
index 00000000000..6b116350fdf
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/suppress_errors.tex
@@ -0,0 +1,76 @@
+\batchmode
+\long\def\typeout#1{\immediate\write-1{#1}}
+\def\ { }%
+\output{\deadcycles0\setbox0\box255}
+\def\E#1{}
+\typeout{*** \string\par\ in non-\string\long\ cmd.}
+\E{a
+
+b}
+\E{c\par d}
+
+\outer\def\F{hoge}
+\typeout{*** \string\outer\ cmd in \string\message\ and \string\write.}
+\immediate\write-1{\F}
+\message{\F}
+
+\typeout{*** \string\outer\ cmd in conditionals.}
+\iftrue a\F
+\else b\F
+\fi
+
+\typeout{*** \string\outer\ cmd in alignment preambles.}
+\halign{#\F&#\cr a&d\cr}
+
+\typeout{*** \string\par\ in math mode.}
+$ x+1 =
+
+a\par b$
+
+$$\eqno{a}\par$$
+
+$$ aaa\par$$
+
+\typeout{*** \string\pdfprimitive\ and non-primitive.}
+\ifdefined\primitive
+ \primitive\batchmode
+ \primitive\hoge
+\else
+ \pdfprimitive\batchmode
+ \pdfprimitive\hoge
+\fi
+
+\typeout{===============}
+\suppresslongerror=1
+\suppressoutererror=1
+\suppressmathparerror=1
+
+\typeout{*** \string\par\ in non-\string\long\ cmd.}
+\E{a
+
+b}
+\E{c\par d}
+
+\typeout{*** \string\outer\ cmd in \string\message\ and \string\write.}
+\immediate\write-1{\F}
+\message{\F}
+
+\typeout{*** \string\outer\ cmd in conditionals.}
+\iftrue a\F
+\else b\F
+\fi
+
+\typeout{*** \string\outer\ cmd in alignment preambles.}
+\halign{#\F&#\cr a&d\cr}
+
+\typeout{*** \string\par\ in math mode.}
+$ x+1 =
+
+a\par b$
+
+$$\eqno{a}\par$$
+
+$$ aaa\par$$
+
+\bye
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/uchar.tex b/Build/source/texk/web2c/euptexdir/tests/uchar.tex
new file mode 100644
index 00000000000..0c5bb56c4a0
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/uchar.tex
@@ -0,0 +1,127 @@
+% eptex
+
+% \Uchar <chr_code>
+% 0--255:常に欧文文字トークン
+% 256以上の,内部コードで許される値:常に和文文字トークン
+% \Ucharcat <chr_code> <catcode>
+% <chr_code> in [0,128): 欧文文字トークンを生成.<catcode> in {1..4, 6..8, 10..13}
+% <chr_code> in [128,256)
+% e-pTeX の場合:欧文文字トークンを生成.<catcode> in {1..4, 6..8, 10..13}
+% e-upTeX の場合:欧文/和文文字トークンを生成.<catcode> in {1..4, 6..8, 10..13, 16..19}
+% <chr_code> >=256: 和文文字トークンを生成.
+% e-pTeX の場合: <catcode> in {16..18}
+% e-upTeX の場合:<catcode> in {16..19}
+
+
+% e-upTeX:
+
+
+\let\bg={ \let\eg=}
+{\catcode`\ =9\relax
+\gdef\KCAT{%
+ \immediate\write17{%
+ [\expandafter\string\x\space
+ \expandafter\ifcat\x$ math\space shift\fi
+ \expandafter\ifcat\x& alignment\fi
+ \expandafter\ifcat\x^ superscript\fi
+ \expandafter\ifcat\x_ subscript\fi
+ \expandafter\ifcat\x\space space\fi
+ \expandafter\ifcat\x a letter\fi
+ \expandafter\ifcat\x 1 other\space char\fi
+ \expandafter\ifcat\x ~ active\fi
+ \expandafter\ifcat\x 空 kanji\fi
+ \expandafter\ifcat\x ア kana\fi
+ \expandafter\ifcat\x { other\space kchar\fi
+ \ifdefined\ucs
+ \expandafter\ifcat\x 한 hangul\fi
+ \fi]}%
+}}
+\let\sharp=#
+\font\x=ec-lmtt10 \x
+\scrollmode
+
+\edef\x{\Uchar`\{}\KCAT
+\edef\x{\Uchar`\}}\KCAT
+\edef\x{\Uchar`\$}\KCAT
+\edef\x{\Uchar`\&}\KCAT
+\edef\x{\Uchar`\#}\KCAT
+\edef\x{\Uchar`\^}\KCAT
+\edef\x{\Uchar`\_}\KCAT
+\edef\x{\Uchar`\ }\KCAT
+\edef\x{\Uchar`\a}\KCAT
+\edef\x{\Uchar`\1}\KCAT
+\edef\x{\Uchar`~}\KCAT
+\edef\x{\Uchar`漢}\KCAT
+\edef\x{\Uchar`あ}\KCAT
+\edef\x{\Uchar`)}\KCAT
+
+\ifdefined\ucs %======
+\immediate\write0{■\string\Uchar\space and \string\kcatcode}
+{\kcatcode"03B1=15 \kcatcode"FF=15
+\edef\x{\Uchar"FF}\KCAT%"
+\edef\x{\Uchar"03B1}\KCAT%"
+}
+
+{\kcatcode"03B1=17 \kcatcode"FF=17
+\edef\x{\Uchar"FF}\KCAT%"
+\edef\x{\Uchar"03B1}\KCAT%"
+}
+\fi %======
+
+\immediate\write0{■\string\Ucharcat.}
+
+\edef\x{\Ucharcat`\# 0}\KCAT % error "! Invalid code"
+\edef\x{\Ucharcat`\# 3}\KCAT
+\edef\x{\Ucharcat`\# 4}\KCAT
+\edef\x{\Ucharcat`\# 5}\KCAT % error "! Invalid code"
+\edef\x{\Ucharcat`\# 7}\KCAT
+\edef\x{\Ucharcat`\# 8}\KCAT
+\edef\x{\Ucharcat`\# 9}\KCAT % error "! Invalid code"
+\edef\x{\Ucharcat`\# 10}\KCAT
+\edef\x{\Ucharcat`\# 11}\KCAT
+\edef\x{\Ucharcat`\# 12}\KCAT
+\edef\x{\unexpanded\expandafter{\Ucharcat`\# 13}}
+\message{\expandafter\meaning\unexpanded\expandafter{\x}} % undefined
+\edef\x{\Ucharcat`\# 14}\KCAT % error "! Invalid code"
+\edef\x{\Ucharcat`\# 15}\KCAT % error "! Invalid code"
+
+\edef\x{\Ucharcat`\# 16} % error "! Invalid code (16)"
+\KCAT
+
+\ifdefined\enablecjktoken %======
+\edef\x{\Ucharcat`漢 3} % error "! Invalid code (3)"
+\KCAT
+
+\edef\x{\Ucharcat`$ 16}\KCAT
+\edef\x{\Ucharcat`: 17}\KCAT
+\edef\x{\Ucharcat`あ 18}\KCAT
+\edef\x{\Ucharcat`漢 19}\KCAT
+
+{\kcatcode"03B1=15 %"
+\edef\x{\Ucharcat"03B1 12}\KCAT%" error "! Invalid code (12)"
+\edef\x{\Ucharcat"03B1 17}\KCAT%"
+}
+
+{\kcatcode"03B1=16 %"
+\edef\x{\Ucharcat"03B1 12}\KCAT%" error "! Invalid code (12)"
+\edef\x{\Ucharcat"03B1 17}\KCAT%"
+}
+
+{\kcatcode"FF=15 %"
+\edef\x{\Ucharcat"FF 12}\KCAT%"
+\edef\x{\Ucharcat"FF 17}\KCAT%"
+}
+
+{\kcatcode"FF=16 %"
+\edef\x{\Ucharcat"FF 12}\KCAT%"
+\edef\x{\Ucharcat"FF 17}\KCAT%"
+}
+\else
+
+\edef\x{\Ucharcat`漢 3} % error "! Bad character code" in eptex
+
+\fi % ======
+
+
+\end
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/zero_search.tex b/Build/source/texk/web2c/euptexdir/tests/zero_search.tex
new file mode 100644
index 00000000000..02b0df3929c
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/zero_search.tex
@@ -0,0 +1,72 @@
+%#!luatex
+\input luatexja.sty
+
+\catcode\endlinechar=12
+\catcode`\ =12
+\catcode`\%=12
+\catcode`\#=12
+\directlua{
+local f = io.open("zero_search.pl", "w")
+if f then
+ function OUT(s) f:write(s .. string.char(10)) end
+else
+ function OUT(s) end
+end
+local jisx0208 = luatexja.base.load_cache('ltj-jisx0208',
+ function() return false end)
+local utf = unicode.utf8
+OUT([[
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.0)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.0)
+ (EXTRASTRETCH R 0.0)
+ (EXTRASHRINK R 0.0)
+ )]])
+local CNT=96
+local r = {}
+for i=1,94 do
+ for j=1,94 do
+ if not ((i>0x08 and i<0x10) or i>0x54) then
+ local t = math.random( ((i>0x40) and 0 or 1), CNT-1)
+ r[t] = r[t] or {}
+ table.insert(r[t],0x2020+i*256+j)
+ end
+ end
+end
+local floor = math.floor
+for i=1,CNT-1 do
+ if #(r[i])>0 then
+ table.sort(r[i])
+ OUT("(CHARSINTYPE D " .. tostring(i))
+ local s, k = " ", 0
+ for j=1,#(r[i]) do
+ local f = r[i][j]
+ k, s = k+1, s .. 'J ' .. string.format("%04X",f)
+ if k%10==0 then OUT(s); s = " " else s = s .. " " end
+ end
+ if k%10>0 then OUT(s) end
+ OUT(" )")
+ end
+end
+for i=0,CNT-1 do
+ if #(r[i])>0 then
+ OUT("(TYPE D " .. tostring(i))
+ OUT(" (CHARWD R " .. tostring(1+i/100) .. ")")
+ OUT(" (CHARHT R 0.88)")
+ OUT(" (CHARDP R 0.12)")
+ OUT(" )")
+ end
+end
+f:close()
+}
+\bye