我正在尝试弄清楚如何测试我的xpeek
包(参见https://github.com/jcsalomon/xpeek)我偶然发现了关于 TeX 编程自动测试的民间传说是什么?和LaTeX 的测试框架 API. 这两处都提到了qstest
包,但我无法理解如何使用它。
具体来说,考虑这个测试xspace
(xpeek
可以用来实现\xspace
,所以这与我想要做的相差不远):
\documentclass{article}
\usepackage{xspace, qstest}
\begin{document}
\begin{qstest}{test xspace}{}
\Expect{foo\xspace.}{foo.}
\end{qstest}
\end{document}
失败,并产生以下错误消息:
! Package qstest Error: Failed: test xspace
\Expect: foo\xspace .
<foo.
>foo\xspace ..
See the qstest package documentation for explanation.
显然我在这里遗漏了一些基本知识,但阅读qstest
软件包文档并没有让我更清楚。有人能向我解释如何编写测试以使其成功吗?
答案1
“ foo\xspace.
”和“ foo.
”确实不同,因此测试一定失败。\Expect
如果参数前面带有星号,则可以展开这些参数:
\Expect*{foo\xspace.}{foo.}
但是,这也无济于事,因为\xspace
不可扩展(\futurelet
和其他任务一样)。但我们可以将参数放在一个框中并测量宽度。如果\xspace
插入一个空格,框的宽度会更大。
\begin{qstest}{test xspace}{}
\sbox0{foo\xspace.}
\sbox2{foo.}
\Expect*{\the\wd0}*{\the\wd2}
\end{qstest}