1# $OpenBSD: regress.sh,v 1.9 2020/12/20 21:59:37 tb Exp $
2# $FreeBSD: head/usr.bin/jot/tests/regress.sh 208728 2010-06-02 07:47:29Z brian $
3
4JOT=${JOT-jot}
5echo "# JOT is ${JOT}"
6echo "# SRCDIR is ${SRCDIR}"
7
8REGRESSION_START(`pwd`)
9
10# A: test all 16 possibilities for reps, begin, end, s with omissions
11REGRESSION_TEST([[hhhh]], [[${JOT} 50 20 120 2]])
12REGRESSION_TEST([[hhhd]], [[${JOT} 50 20 120 -]])
13REGRESSION_TEST([[hhdh]], [[${JOT} 50 20 - 2]])
14REGRESSION_TEST([[hhdd]], [[${JOT} 50 20 - -]])
15REGRESSION_TEST([[hdhh]], [[${JOT} 50 - 120 2]])
16REGRESSION_TEST([[hdhd]], [[${JOT} 50 - 120 -]])
17REGRESSION_TEST([[hddh]], [[${JOT} 50 - - 2]])
18REGRESSION_TEST([[hddd]], [[${JOT} 50 - - -]])
19REGRESSION_TEST([[dhhh]], [[${JOT} - 20 120 2]])
20REGRESSION_TEST([[dhhd]], [[${JOT} - 20 120 -]])
21REGRESSION_TEST([[dhdh]], [[${JOT} - 20 - 2]])
22REGRESSION_TEST([[dhdd]], [[${JOT} - 20 - -]])
23REGRESSION_TEST([[ddhh]], [[${JOT} - - 120 2]])
24REGRESSION_TEST([[ddhd]], [[${JOT} - - 120 -]])
25REGRESSION_TEST([[dddh]], [[${JOT} - - - 2]])
26REGRESSION_TEST([[dddd]], [[${JOT} - - - -]])
27
28# B: same as A, but different numbers, only 12 because of 4 duplicates
29REGRESSION_TEST([[hhhh2]], [[${JOT} 30 20 160 2]])
30REGRESSION_TEST([[hhhd2]], [[${JOT} 30 20 160 -]])
31REGRESSION_TEST([[hhdh2]], [[${JOT} 30 20 - 2]])
32REGRESSION_TEST([[hhdd2]], [[${JOT} 30 20 - -]])
33REGRESSION_TEST([[hdhh2]], [[${JOT} 30 - 160 2]])
34REGRESSION_TEST([[hdhd2]], [[${JOT} 30 - 160 -]])
35REGRESSION_TEST([[hddh2]], [[${JOT} 30 - - 2]])
36REGRESSION_TEST([[hddd2]], [[${JOT} 30 - - -]])
37REGRESSION_TEST([[dhhh2]], [[${JOT} - 20 160 2]])
38REGRESSION_TEST([[dhhd2]], [[${JOT} - 20 160 -]])
39REGRESSION_TEST([[ddhh2]], [[${JOT} - - 160 2]])
40REGRESSION_TEST([[ddhd2]], [[${JOT} - - 160 -]])
41
42# C: reverse roles of begin and end in A.
43REGRESSION_TEST([[hhhh3]], [[${JOT} 50 120 20 -2]])
44REGRESSION_TEST([[hhhd3]], [[${JOT} 50 120 20 -]])
45REGRESSION_TEST([[hhdh3]], [[${JOT} 50 120 - -2]])
46REGRESSION_TEST([[hhdd3]], [[${JOT} 50 120 - -]])
47REGRESSION_TEST([[hdhh3]], [[${JOT} 50 - 20 -2]])
48REGRESSION_TEST([[hdhd3]], [[${JOT} 50 - 20 -]])
49REGRESSION_TEST([[dhhh3]], [[${JOT} - 120 20 -2]])
50REGRESSION_TEST([[dhhd3]], [[${JOT} - 120 20 -]])
51REGRESSION_TEST([[dhdh3]], [[${JOT} - 120 - -2]])
52REGRESSION_TEST([[dhdd3]], [[${JOT} - 120 - -]])
53REGRESSION_TEST([[ddhh3]], [[${JOT} - - 20 -2]])
54REGRESSION_TEST([[ddhd3]], [[${JOT} - - 20 -]])
55
56# D: reverse roles of begin and end in B.
57REGRESSION_TEST([[hhhh4]], [[${JOT} 30 160 20 -2]])
58REGRESSION_TEST([[hhhd4]], [[${JOT} 30 160 20 -]])
59REGRESSION_TEST([[hhdh4]], [[${JOT} 30 160 - -2]])
60REGRESSION_TEST([[hhdd4]], [[${JOT} 30 160 - -]])
61REGRESSION_TEST([[hdhh4]], [[${JOT} 30 - 20 -2]])
62REGRESSION_TEST([[hdhd4]], [[${JOT} 30 - 20 -]])
63REGRESSION_TEST([[dhhh4]], [[${JOT} - 160 20 -2]])
64REGRESSION_TEST([[dhhd4]], [[${JOT} - 160 20 -]])
65
66# E: what happens if begin and end are equal?
67REGRESSION_TEST([[dbbd]], [[${JOT} - 10 10 -]])
68REGRESSION_TEST([[hbbd]], [[${JOT} 15 10 10 -]])
69REGRESSION_TEST([[dbbh]], [[${JOT} - 10 10 2]])
70REGRESSION_TEST([[hbbh]], [[${JOT} 15 10 10 2]])
71
72# F: random output
73# rand1 and rand2 test coverage (10000 is way too big: 200 should be enough)
74REGRESSION_TEST([[rand1]], [[${JOT} -r 10000 0 9 | sort -u]])
75REGRESSION_TEST([[rand2]], [[${JOT} -r 10000 9 0 | sort -u]])
76# same thing again, but divide by 10
77REGRESSION_TEST([[rand1p1]], [[${JOT} -p 1 -r 10000 0 0.9 | sort -u]])
78REGRESSION_TEST([[rand2p1]], [[${JOT} -p 1 -r 10000 0.9 0 | sort -u]])
79# rdhhh and rhdhh test if begin and ender are set to the default with jot -r
80REGRESSION_TEST([[rdhhh]], [[${JOT} -r 100 - 10 2 2>/dev/null | sort -n | head -1]])
81REGRESSION_TEST([[rhdhh]], [[${JOT} -r 100 90 - 2 2>/dev/null | sort -n | tail -1]])
82# test variant of old manpage example, as it exercises the 'use_unif = 0' path
83REGRESSION_TEST([[nonunif]], [[${JOT} -p0 -r 10000 0.5 9.5 | sort -u]])
84
85# G: Examples from the FreeBSD manual
86REGRESSION_TEST([[n21]], [[${JOT} 21 -1 1.00]])
87REGRESSION_TEST([[ascii]], [[${JOT} -c 128 0]])
88REGRESSION_TEST([[xaa]], [[${JOT} -w xa%c 26 a]])
89REGRESSION_TEST([[yes]], [[${JOT} -b yes 10]])
90REGRESSION_TEST([[ed]], [[${JOT} -w %ds/old/new/ 30 2 - 5]])
91REGRESSION_TEST([[stutter]], [[${JOT} - 9 0 -.5]])
92REGRESSION_TEST([[stutter2]], [[${JOT} -w %d - 9.5 0 -.5]])
93REGRESSION_TEST([[block]], [[${JOT} -b x 512]])
94REGRESSION_TEST([[tabs]], [[${JOT} -s, - 10 132 4]])
95REGRESSION_TEST([[grep]], [[${JOT} -s "" -b . 80]])
96
97# H: various format strings
98REGRESSION_TEST([[wf]], [[${JOT} -w "a%.1fb" 10]])
99REGRESSION_TEST([[we]], [[${JOT} -w "a%eb" 10]])
100REGRESSION_TEST([[wwe]], [[${JOT} -w "a%-15eb" 10]])
101REGRESSION_TEST([[wg]], [[${JOT} -w "a%20gb" 10]])
102REGRESSION_TEST([[wc]], [[${JOT} -w "a%cb" 10 33 43]])
103REGRESSION_TEST([[wgd]], [[${JOT} -w "a%gb" 10 .2]])
104REGRESSION_TEST([[wu]], [[${JOT} -w "a%ub" 10]])
105REGRESSION_TEST([[wUn]], [[${JOT} -w "a%Ub" 10 1]])
106REGRESSION_TEST([[wlu]], [[${JOT} -w "a%lub" 10]])
107REGRESSION_TEST([[wo]], [[${JOT} -w "a%ob" 10]])
108REGRESSION_TEST([[wOn]], [[${JOT} -w "a%Ob" 10 1]])
109REGRESSION_TEST([[wlo]], [[${JOT} -w "a%lob" 10]])
110REGRESSION_TEST([[wx]], [[${JOT} -w "a%xb" 10]])
111REGRESSION_TEST([[wX1]], [[${JOT} -w "a%Xb" 10]])
112REGRESSION_TEST([[wXl]], [[${JOT} -w "a%Xb" 10 2147483648]])
113REGRESSION_TEST([[wdl]], [[${JOT} -w "a%db" 10 2147483648 2>/dev/null]])
114REGRESSION_TEST([[wxn]], [[${JOT} -w "a%xb" 10 -5 2>/dev/null]])
115REGRESSION_TEST([[wdn]], [[${JOT} -w "a%db" 10 -5]])
116REGRESSION_TEST([[wDnn]], [[${JOT} -w "a%Db" 10 -5 4]])
117REGRESSION_TEST([[wldn]], [[${JOT} -w "a%ldb" 10 -5]])
118REGRESSION_TEST([[wp1]], [[${JOT} -w "%%%d%%%%" 10]])
119REGRESSION_TEST([[wp2]], [[${JOT} -w "%d%%d%%" 10]])
120REGRESSION_TEST([[wp3]], [[${JOT} -w "a%%A%%%d%%B%%b" 10]])
121REGRESSION_TEST([[wp4]], [[${JOT} -w "%%d%d%%d%%" 10]])
122REGRESSION_TEST([[wp5]], [[${JOT} -w ftp://www.example.com/pub/uploaded%%20files/disk%03d.iso 10]])
123REGRESSION_TEST([[wp6]], [[${JOT} -w "%d%" 10]])
124REGRESSION_TEST([[x]], [[${JOT} -w "%X" -s , 100 1 200]])
125
126# I: Examples from the OpenBSD manual
127REGRESSION_TEST([[man1]], [[${JOT} 6 1 10 0.5]])
128REGRESSION_TEST([[man2]], [[${JOT} -p 1 6 1 10 0.5]])
129REGRESSION_TEST([[man3]], [[${JOT} -p 0 6 .9999999999 10 0.5]])
130REGRESSION_TEST([[man4]], [[${JOT} -w %d 6 1 10 0.5]])
131REGRESSION_TEST([[man5]], [[${JOT} 21 -1 1.00]])
132REGRESSION_TEST([[man6]], [[${JOT} -w xa%c 26 a]])
133REGRESSION_TEST([[man7]], [[${JOT} -w %ds/old/new/ 30 2 - 5]])
134REGRESSION_TEST([[man8]], [[${JOT} -b x 512]])
135REGRESSION_TEST([[man9]], [[${JOT} -s, - 10 132 4]])
136REGRESSION_TEST([[man10]], [[${JOT} -s "" -b. 80]])
137
138# J: Misc tests
139REGRESSION_TEST([[nb1]], [[{ ${JOT} -n -b1 1 && echo; }]])
140REGRESSION_TEST([[noargs]], [[${JOT}]])
141
142REGRESSION_END()
143