TeX tests: Use the shell instead of wc to test for maximum line length.
[pspp] / tests / output / tex.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2020 Free Software Foundation, Inc.
3 dnl
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
8 dnl
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 dnl GNU General Public License for more details.
13 dnl
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 dnl
17
18 AT_BANNER([tex driver])
19
20 dnl By passing --xdvi=xdvi to TESTSUITEFLAGS, one can view the rendered dvi from
21 dnl tests defined in this file.
22 AT_ARG_OPTION_ARG([xdvi],[AS_HELP_STRING([--xdvi],
23   [the xdvi program to show show TeX output (default none)])])
24
25 AT_SETUP([tex glyphs])
26
27 AT_CHECK([tex-glyphs pspp.tex], [0], [ignore], [ignore])
28
29 AT_SKIP_IF([test "$TEX" = no])
30
31 dnl  The wasy10 font and its associated .tex file must be installed.
32 dnl  in order to run this test.  On Debian based systems this is found
33 dnl  in the texlive-fonts-recommended package.
34 AT_SKIP_IF([! kpsewhich wasyfont.tex])
35 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
36
37 dnl There should be no overfull boxes
38 AT_CHECK([grep '^Overfull ' pspp.log], [1])
39 dnl nor any underful ones
40 AT_CHECK([grep '^Underfull ' pspp.log], [1])
41
42 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
43
44 AT_CLEANUP
45
46
47
48 AT_SETUP([tex utf8-strings])
49
50 mkdir sample-texts
51
52 dnl The following UTF-8 texts are a collection of snippets harvested
53 dnl from various Wikipedia sites.  Wikipedia articles are
54 dnl copyright and licenced under the GFDL (unversioned)
55 AT_DATA([sample-texts/en.txt], [[The
56 Battle of Artaza (Acción de Artaza) was
57 a battle that occurred on April 20–22, 1835 during the First
58 Carlist War.
59
60 Jerónimo Valdés, at the time Minister of War, arrived at the area known as
61 Las Amescoas with 22,000 men with the intention of
62 definitively destroying the Carlist forces.[1] Zumalacárregui had 5,000 men,
63 but had the advantage of knowing the terrain and practicing guerrilla tactics.
64 ]])
65
66 AT_DATA([sample-texts/pl.txt], [[The Giszowiec składa się z budynków
67 wielorodzinnych z wielkiej płyty oraz
68 zabytkowych domów, przeważnie jedno- i dwurodzinnych, stanowiących
69 niegdyś zwarte osiedle górnicze, które do dziś jest unikatowe w skali
70 europejskiej i znajduje się na Szlaku Zabytków Techniki Województwa
71 Śląskiego. Zostało ono wybudowane dla górników pracujących w kopalni
72 Giesche (późniejszej kopalni Wieczorek) przez koncern Georg von
73 Giesches Erben na zlecenie dyrektora spółki Antona Uthemanna w latach
74 1907–1910. Projektantami osiedla byli Zillmannowie: Georg i
75 go dwa szlaki komunikacyjne: droga krajowa nr 86 oraz autostrada A4, a
76 także rozpoczyna swój bieg droga krajowa nr 81. Dzielnica ma
77 powierzchnię 12,03 km² (7,30% powierzchni miasta) i liczyła w 2007
78 roku 18 475 mieszkańców (5,9% ludności Katowic).
79 ]])
80
81 AT_DATA([sample-texts/el.txt], [[Η πόλη των Σερρών υπήρξε η πιο
82 οχυρωμένη πόλη της περιοχής λόγω της στρατηγικής γεωγραφικής της
83 θέσης. Στα βόρεια της πόλης των Σερρών, πάνω σε λόφο γνωστό με την
84 επωνυμία Κουλάς, βρίσκεται η αρχαία και βυζαντινή ακρόπολη. Η ακρόπολη
85 όπως σώζεται σήμερα αποτελεί έργο των βυζαντινών χρόνων, αλλά
86 θεμελιώθηκε πάνω σε αρχαίο φρούριο  του 7ου και  6ου π. Χ. αιώνα. Η
87 κατασκευή της ακρόπολης χρονολογείται στον 9ο μ. Χ. αιώνα, πιθανότατα,
88 επί Αυτοκράτορα Νικηφόρου Φωκά και αναφέρεται σε πολλά βυζαντινά
89 χρυσόβουλα ως «κάστρο» με γνωστότερο καστροφύλακα τον Λέοντα τον
90 Αζανίτη. [1] Με την πάροδο των χρόνων ολόκληρη η πόλη χαρακτηριζόταν
91 ως «κάστρο» και οι Σερραίοι, «καστρινοί».
92 ]])
93
94 AT_DATA([sample-texts/is.txt], [[Saloth Sar, betur þekktur sem Pol Pot,
95 var fæddur 19. maí 1925 og dó
96 15. apríl 1998. Hann var leiðtogi Rauðu khmeranna í Kambódíu frá 1963
97 til 1979 og er þekktastur fyrir dauða óhemjumargs fólks í stjórnartíð
98 sinni, sem var frá 1975 til 1979. Rauðu khmerarnir reyndu að
99 framfylgja sýn sinni um eins konar samyrkjuvæðingu, en meðal þess sem
100 hún átti að fela í sér var að borgarbúar flyttu út í sveitir og ynnu
101 þar við landbúnað eða í betrunarvinnu. Þeir töldu sig geta byrjað
102 siðmenninguna upp á nýtt og tóku því upp tímatal sem átti að hefjast
103 með valdatíð þeirra. Sú valdatíð var ekki löng, en því
104 mannskæðari. Þrælkunarvinna, vannæring, hrun í heilbrigðiskerfinu og
105 beinar aftökur kostuðu á bilinu 750.000 - 1.700.000 manns lífið (sumir
106 segja á bilinu).
107 ]])
108
109 AT_DATA([sample-texts/hr.txt], [[Nakon što je film završen početkom
110 1984., autori su krenuli tražiti distributera. Odnijeli su film u Los
111 Angeles i pokazali ga velikim studijima. Svi su odbili izuzev Oriona
112 koji je prihvatio distribuciju, ali uz uvjet da ne bi ništa platio
113 unaprijed, što je investitorima bilo neprihvatljivo. Joel Coen
114 napominje da se dogovorio sa agentom za prodaju prava u inozemstvu
115 kako bi se napokon film počeo prikazivati negdje, no to je bio
116 riskantan potez jer to ubija zanimanje domaćih distributera.
117 ]])
118
119 AT_DATA([sample-texts/cz.txt], [[Volarský dům alpského typu (německy
120 Wallerer Haus) je na území České
121 republiky ojedinělý typ venkovského dřevěného domu, jenž se vyskytuje
122 v šumavském městě Volary, které proto někdy bylo nazýváno „alpským
123 městečkem na Šumavě“. Mimo Volary se vyskytuje ještě v sousední obci
124 Dobrá a další jeden dům se nachází v Železné Rudě.[1] Další, do
125 současnosti nedochované domy, se nacházely v Českých Žlebech, Lenoře,
126 Hůrce a Vimperku. V širším okolí Šumavy (Chodsko, Klatovsko, Plánicko)
127 se vyskytují domy volarským stylem více nebo méně ovlivněné.[2]
128 ]])
129
130 AT_DATA([sample-texts/de.txt], [[Urkundlich wurde Rehme 753 erstmals
131 in den fränkischen Reichsannalen erwähnt, als sich die fränkischen
132 Könige Pippin der Jüngere und sein Nachfolger Karl der Große auf
133 Feldzügen dorthin begaben.[2] Seit ca. 800 ist Rehme Sitz einer
134 Kirchengemeinde. Die romanische Laurentiuskirche stammt aus dem
135 12. Jahrhundert und wurde 1890–1892 im neoromanischen Stil erweitert.
136 ]])
137
138 AT_DATA([sample-texts/ang.txt], [[Regn is ƿǣt æðmhēap, nā heard cynn
139 æðmhēapes sƿilce snāƿ, hægel, and īsregn. Tō regnenne, hit is nȳdmicel
140 þæt þicce dǣl þæs lyfthelmes sīe ƿearmra þonne his hāt meltunge, nēah
141 þǣm andƿlitan þǣre eorðan and ēac ofer him. Hē is sēo gæderung þæs
142 lyfthelmes æðmes on lyfte oþþæt hē is sƿā hefig þæt hē fealle, oft
143 full tō þǣre eorðan þǣm andƿlitan. Tū ƿeorc cunnon fyllan þā lyfte
144 oþþæt hire ƿæter beflōƿe: sēo acēlung þǣre lyfte and sēo settung
145 ƿæteres æðmes on þā lyfte.
146 ]])
147
148 AT_DATA([sample-texts/sv.txt], [[Årsmedeltemperaturen i trakten är 18
149 °C. Den varmaste månaden är januari, då medeltemperaturen är 20 °C,
150 och den kallaste är juni, med 16 °C.[5] Genomsnittlig årsnederbörd är
151 2 874 millimeter. Den regnigaste månaden är februari, med i genomsnitt
152 421 mm nederbörd, och den torraste är augusti, med 79 mm nederbörd.[6]
153 ]])
154
155
156 AT_CHECK([tex-strings -o pspp.tex sample-texts/*], [0], [ignore], [ignore])
157
158 AT_SKIP_IF([test "$TEX" = no])
159 AT_SKIP_IF([! kpsewhich wasyfont.tex])
160 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
161
162 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
163
164 AT_CLEANUP
165
166 dnl Check that no line exceeds 79 characters
167 m4_define([CHECK_MAX_LINE_LENGTH],
168 [[(while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80)]][ < $1])
169
170 AT_SETUP([tex simple example])
171
172 AT_DATA([simple.sps], [dnl
173 data list list /name (a16) score *.
174 begin data
175 alfred   34.0
176 bertram  12.2
177 charlie  12.1
178 david    54.1
179 end data.
180
181 descriptives /score.
182 ])
183
184
185 AT_CHECK([pspp -O format=tex simple.sps], [0], [])
186 AT_CHECK([CHECK_MAX_LINE_LENGTH([pspp.tex])],[0],[ignore])
187
188 AT_SKIP_IF([test "$TEX" = no])
189 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
190
191 dnl There should be no overfull boxes
192 AT_CHECK([grep '^Overfull ' pspp.log], [1])
193 dnl nor any underful ones
194 AT_CHECK([grep '^Underfull ' pspp.log], [1])
195
196 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
197
198 AT_CLEANUP
199
200
201
202 AT_SETUP([tex another example])
203
204 AT_CHECK([pspp -O format=tex "$abs_top_srcdir/examples/regress.sps"], [0], [])
205 AT_CHECK([CHECK_MAX_LINE_LENGTH([pspp.tex])],[0],[ignore])
206
207
208 AT_SKIP_IF([test "$TEX" = no])
209 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
210
211 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
212
213 AT_CLEANUP
214
215
216 dnl This example emits a table footnote
217 AT_SETUP([tex table footnotes])
218
219 AT_DATA([footnote.sps], [dnl
220 set format = F11.3.
221 data list notable list /foo * bar * wiz * bang *.
222 begin data.
223 1   0   3   1
224 3   9 -50   5
225 3   4   3 203
226 4  -9   0  -4
227 98 78 104   2
228 3  50 -49 200
229 .   4   4   4
230 5   3   0   .
231 end data.
232
233 correlations
234         variables = foo bar wiz bang
235         /print nosig
236         .
237 ])
238
239 AT_CHECK([pspp -O format=tex footnote.sps], [0], [])
240 AT_CHECK([CHECK_MAX_LINE_LENGTH([pspp.tex])],[0],[ignore])
241
242 AT_SKIP_IF([test "$TEX" = no])
243 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
244
245 dnl There should be no overfull boxes
246 AT_CHECK([grep '^Overfull ' pspp.log], [1])
247 dnl nor any underful ones
248 AT_CHECK([grep '^Underfull ' pspp.log], [1])
249
250 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
251
252
253 AT_CLEANUP
254
255
256 dnl An example with non-ascii characters
257 AT_SETUP([tex non-ascii])
258
259 AT_DATA([utf8.sps], [dnl
260 set format = F11.3.
261 data list notable list /items (a16).
262 begin data.
263 Äpfeln
264 Öl
265 Üter
266 Tschüß
267 école
268 côte
269 français
270 þekktastur
271 landbúnað
272 16°C
273 powierzchnię
274 12.03km²
275 end data.
276
277 frequencies items.
278 ])
279
280 AT_CHECK([LC_ALL=C.UTF-8 pspp -O format=tex utf8.sps], [0], [])
281 AT_CHECK([CHECK_MAX_LINE_LENGTH([pspp.tex])],[0],[ignore])
282
283 dnl The string "??" should not be present in pspp.tex
284 AT_CHECK([grep -F '??' pspp.tex], [1])
285
286 AT_SKIP_IF([test "$TEX" = no])
287 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
288
289 dnl There should be no overfull boxes
290 AT_CHECK([grep '^Overfull ' pspp.log], [1])
291 dnl nor any underful ones
292 AT_CHECK([grep '^Underfull ' pspp.log], [1])
293
294 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
295
296 AT_CLEANUP
297
298
299 dnl This example emits a table which is rather more complicated
300 dnl It has cells which span multiple columns
301 AT_SETUP([tex multispan])
302
303 AT_DATA([t-test.sps], [dnl
304 set format = F11.3.
305 data list notable list /score * group (a20).
306 begin data.
307 1 this
308 2 this
309 3 this
310 4 this
311 5 that
312 6 that
313 7 that
314 8 that
315 end data.
316
317 t-test /variables=score /group=group("this", "that").
318 ])
319
320 AT_CHECK([pspp -O format=tex t-test.sps], [0], [])
321 AT_CHECK([CHECK_MAX_LINE_LENGTH([pspp.tex])],[0],[ignore])
322
323 AT_SKIP_IF([test "$TEX" = no])
324 AT_CHECK([$TEX --halt-on-error pspp.tex], [0], [ignore])
325
326 dnl There should be no overfull boxes
327 AT_CHECK([grep '^Overfull ' pspp.log], [1])
328 dnl nor any underful ones
329 AT_CHECK([grep '^Underfull ' pspp.log], [1])
330
331 test -z "$at_arg_xdvi" || AT_CHECK([$at_arg_xdvi -s 3 pspp.dvi], [0], [ignore])
332
333
334 AT_CLEANUP
335