summaryrefslogtreecommitdiff
path: root/regress/usr.bin/jot/regress.sh
blob: f9620a64a76fa4a4d60fbcb9208ec6d0ddf3ef8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# $OpenBSD: regress.sh,v 1.6 2017/12/15 12:19:01 tb Exp $
# $FreeBSD: head/usr.bin/jot/tests/regress.sh 208728 2010-06-02 07:47:29Z brian $

JOT=${JOT-jot}
echo "# JOT is ${JOT}"
echo "# SRCDIR is ${SRCDIR}"

REGRESSION_START(`pwd`)

# A: test all 16 possibilities for reps, begin, end, s with omissions
REGRESSION_TEST([[hhhh]], [[${JOT} 50 20 120 2]])
REGRESSION_TEST([[hhhd]], [[${JOT} 50 20 120 -]])
REGRESSION_TEST([[hhdh]], [[${JOT} 50 20 - 2]])
REGRESSION_TEST([[hhdd]], [[${JOT} 50 20 - -]])
REGRESSION_TEST([[hdhh]], [[${JOT} 50 - 120 2]])
REGRESSION_TEST([[hdhd]], [[${JOT} 50 - 120 -]])
REGRESSION_TEST([[hddh]], [[${JOT} 50 - - 2]])
REGRESSION_TEST([[hddd]], [[${JOT} 50 - - -]])
REGRESSION_TEST([[dhhh]], [[${JOT} - 20 120 2]])
REGRESSION_TEST([[dhhd]], [[${JOT} - 20 120 -]])
REGRESSION_TEST([[dhdh]], [[${JOT} - 20 - 2]])
REGRESSION_TEST([[dhdd]], [[${JOT} - 20 - -]])
REGRESSION_TEST([[ddhh]], [[${JOT} - - 120 2]])
REGRESSION_TEST([[ddhd]], [[${JOT} - - 120 -]])
REGRESSION_TEST([[dddh]], [[${JOT} - - - 2]])
REGRESSION_TEST([[dddd]], [[${JOT} - - - -]])

# B: same as A, but different numbers, only 12 because of 4 duplicates
REGRESSION_TEST([[hhhh2]], [[${JOT} 30 20 160 2]])
REGRESSION_TEST([[hhhd2]], [[${JOT} 30 20 160 -]])
REGRESSION_TEST([[hhdh2]], [[${JOT} 30 20 - 2]])
REGRESSION_TEST([[hhdd2]], [[${JOT} 30 20 - -]])
REGRESSION_TEST([[hdhh2]], [[${JOT} 30 - 160 2]])
REGRESSION_TEST([[hdhd2]], [[${JOT} 30 - 160 -]])
REGRESSION_TEST([[hddh2]], [[${JOT} 30 - - 2]])
REGRESSION_TEST([[hddd2]], [[${JOT} 30 - - -]])
REGRESSION_TEST([[dhhh2]], [[${JOT} - 20 160 2]])
REGRESSION_TEST([[dhhd2]], [[${JOT} - 20 160 -]])
REGRESSION_TEST([[ddhh2]], [[${JOT} - - 160 2]])
REGRESSION_TEST([[ddhd2]], [[${JOT} - - 160 -]])

# C: reverse roles of begin and end in A.
REGRESSION_TEST([[hhhh3]], [[${JOT} 50 120 20 -2]])
REGRESSION_TEST([[hhhd3]], [[${JOT} 50 120 20 -]])
REGRESSION_TEST([[hhdh3]], [[${JOT} 50 120 - -2]])
REGRESSION_TEST([[hhdd3]], [[${JOT} 50 120 - -]])
REGRESSION_TEST([[hdhh3]], [[${JOT} 50 - 20 -2]])
REGRESSION_TEST([[hdhd3]], [[${JOT} 50 - 20 -]])
REGRESSION_TEST([[dhhh3]], [[${JOT} - 120 20 -2]])
REGRESSION_TEST([[dhhd3]], [[${JOT} - 120 20 -]])
REGRESSION_TEST([[dhdh3]], [[${JOT} - 120 - -2]])
REGRESSION_TEST([[dhdd3]], [[${JOT} - 120 - -]])
REGRESSION_TEST([[ddhh3]], [[${JOT} - - 20 -2]])
REGRESSION_TEST([[ddhd3]], [[${JOT} - - 20 -]])

# D: reverse roles of begin and end in B.
REGRESSION_TEST([[hhhh4]], [[${JOT} 30 160 20 -2]])
REGRESSION_TEST([[hhhd4]], [[${JOT} 30 160 20 -]])
REGRESSION_TEST([[hhdh4]], [[${JOT} 30 160 - -2]])
REGRESSION_TEST([[hhdd4]], [[${JOT} 30 160 - -]])
REGRESSION_TEST([[hdhh4]], [[${JOT} 30 - 20 -2]])
REGRESSION_TEST([[hdhd4]], [[${JOT} 30 - 20 -]])
REGRESSION_TEST([[dhhh4]], [[${JOT} - 160 20 -2]])
REGRESSION_TEST([[dhhd4]], [[${JOT} - 160 20 -]])

# E: what happens if begin and end are equal?
REGRESSION_TEST([[dbbd]], [[${JOT} - 10 10 -]])
REGRESSION_TEST([[hbbd]], [[${JOT} 15 10 10 -]])
REGRESSION_TEST([[dbbh]], [[${JOT} - 10 10 2]])
REGRESSION_TEST([[hbbh]], [[${JOT} 15 10 10 2]])

# F: random output
# rand1 and rand2 test coverage (10000 is way too big: 200 should be enough)
REGRESSION_TEST([[rand1]], [[${JOT} -r 10000 0 9 | sort -u]])
REGRESSION_TEST([[rand2]], [[${JOT} -r 10000 9 0 | sort -u]])
# same thing again, but divide by 10
REGRESSION_TEST([[rand1p1]], [[${JOT} -p 1 -r 10000 0 0.9 | sort -u]])
REGRESSION_TEST([[rand2p1]], [[${JOT} -p 1 -r 10000 0.9 0 | sort -u]])
# rdhhh and rhdhh test if begin and ender are set to the default with jot -r
REGRESSION_TEST([[rdhhh]], [[${JOT} -r 100 - 10 2 2>/dev/null | sort -n | head -1]])
REGRESSION_TEST([[rhdhh]], [[${JOT} -r 100 90 - 2 2>/dev/null | sort -n | tail -1]])
# test variant of old manpage example, as it exercises the 'use_unif = 0' path
REGRESSION_TEST([[nonunif]], [[jot -p0 -r 10000 0.5 9.5 | sort -u]])

# G: Examples from the FreeBSD manual
REGRESSION_TEST([[n21]], [[${JOT} 21 -1 1.00]])
REGRESSION_TEST([[ascii]], [[${JOT} -c 128 0]])
REGRESSION_TEST([[xaa]], [[${JOT} -w xa%c 26 a]])
REGRESSION_TEST([[yes]], [[${JOT} -b yes 10]])
REGRESSION_TEST([[ed]], [[${JOT} -w %ds/old/new/ 30 2 - 5]])
REGRESSION_TEST([[stutter]], [[${JOT} - 9 0 -.5]])
REGRESSION_TEST([[stutter2]], [[${JOT} -w %d - 9.5 0 -.5]])
REGRESSION_TEST([[block]], [[${JOT} -b x 512]])
REGRESSION_TEST([[tabs]], [[${JOT} -s, - 10 132 4]])
REGRESSION_TEST([[grep]], [[${JOT} -s "" -b . 80]])

# H: various format strings
REGRESSION_TEST([[wf]], [[${JOT} -w "a%.1fb" 10]])
REGRESSION_TEST([[we]], [[${JOT} -w "a%eb" 10]])
REGRESSION_TEST([[wwe]], [[${JOT} -w "a%-15eb" 10]])
REGRESSION_TEST([[wg]], [[${JOT} -w "a%20gb" 10]])
REGRESSION_TEST([[wc]], [[${JOT} -w "a%cb" 10 33 43]])
REGRESSION_TEST([[wgd]], [[${JOT} -w "a%gb" 10 .2]])
REGRESSION_TEST([[wu]], [[${JOT} -w "a%ub" 10]])
REGRESSION_TEST([[wU]], [[${JOT} -w "a%Ub" 10]])
REGRESSION_TEST([[wlu]], [[${JOT} -w "a%lub" 10]])
REGRESSION_TEST([[wo]], [[${JOT} -w "a%ob" 10]])
REGRESSION_TEST([[wO]], [[${JOT} -w "a%Ob" 10]])
REGRESSION_TEST([[wlo]], [[${JOT} -w "a%lob" 10]])
REGRESSION_TEST([[wx]], [[${JOT} -w "a%xb" 10]])
REGRESSION_TEST([[wX1]], [[${JOT} -w "a%Xb" 10]])
REGRESSION_TEST([[wXl]], [[${JOT} -w "a%Xb" 10 2147483648]])
REGRESSION_TEST([[wdl]], [[${JOT} -w "a%db" 10 2147483648 2>/dev/null]])
REGRESSION_TEST([[wxn]], [[${JOT} -w "a%xb" 10 -5 2>/dev/null]])
REGRESSION_TEST([[wdn]], [[${JOT} -w "a%db" 10 -5]])
REGRESSION_TEST([[wDn]], [[${JOT} -w "a%Db" 10 -5]])
REGRESSION_TEST([[wldn]], [[${JOT} -w "a%ldb" 10 -5]])
REGRESSION_TEST([[wp1]], [[${JOT} -w "%%%d%%%%" 10]])
REGRESSION_TEST([[wp2]], [[${JOT} -w "%d%%d%%" 10]])
REGRESSION_TEST([[wp3]], [[${JOT} -w "a%%A%%%d%%B%%b" 10]])
REGRESSION_TEST([[wp4]], [[${JOT} -w "%%d%d%%d%%" 10]])
REGRESSION_TEST([[wp5]], [[${JOT} -w ftp://www.example.com/pub/uploaded%%20files/disk%03d.iso 10]])
REGRESSION_TEST([[wp6]], [[${JOT} -w "%d%" 10]])
REGRESSION_TEST([[x]], [[${JOT} -w "%X" -s , 100 1 200]])

# I: Examples from the OpenBSD manual
REGRESSION_TEST([[man1]], [[${JOT} 6 1 10 0.5]])
REGRESSION_TEST([[man2]], [[${JOT} -p 1 6 1 10 0.5]])
REGRESSION_TEST([[man3]], [[${JOT} -p 0 6 .9999999999 10 0.5]])
REGRESSION_TEST([[man4]], [[${JOT} -w %d 6 1 10 0.5]])
REGRESSION_TEST([[man5]], [[${JOT} 21 -1 1.00]])
REGRESSION_TEST([[man6]], [[${JOT} -w xa%c 26 a]])
REGRESSION_TEST([[man7]], [[${JOT} -w %ds/old/new/ 30 2 - 5]])
REGRESSION_TEST([[man8]], [[${JOT} -b x 512]])
REGRESSION_TEST([[man9]], [[${JOT} -s, - 10 132 4]])
REGRESSION_TEST([[man10]], [[${JOT} -s "" -b. 80]])

# J: Misc tests
REGRESSION_TEST([[nb1]], [[{ ${JOT} -n -b1 1 && echo; }]])

REGRESSION_END()