From 3e2ca6f83691294fece17b00f8f08b203821c91f Mon Sep 17 00:00:00 2001 From: Ralph Corderoy Date: Mon, 15 Jan 2018 16:25:35 +0000 Subject: [PATCH] Add test-fmttest for cpstripped(), cptrimmed(), and cpnumber(). Many more tests could be done, and some, like those below, would produce known erroneous results, but this is a start and helps spot regressions. create mode 100755 test/format/test-fmttest --- Makefile.am | 1 + test/format/test-fmttest | 298 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 299 insertions(+) create mode 100755 test/format/test-fmttest diff --git a/Makefile.am b/Makefile.am index 587fe3f4..7694abc4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -65,6 +65,7 @@ TESTS = \ test/format/test-curses \ test/format/test-dp \ test/format/test-fmtdump \ + test/format/test-fmttest \ test/format/test-functions \ test/format/test-localmbox \ test/format/test-myhost \ diff --git a/test/format/test-fmttest b/test/format/test-fmttest new file mode 100755 index 00000000..c50304a5 --- /dev/null +++ b/test/format/test-fmttest @@ -0,0 +1,298 @@ +#! /bin/sh + +# Tests for fmttest(1). + +if test -z "${MH_OBJ_DIR}"; then + srcdir=`dirname "$0"`/../.. + MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR +fi + +. "$MH_OBJ_DIR/test/common.sh" + +setup_test + +# fmttest(1) doesn't accept `--' to mark the end of option processing. +# This is a bug. It also considers a string of `-3' to be an unknown +# option `3'; `-- -3' can't be used. One workaround is to give a +# string of `3' and use `%(void(minus 0))' in the format string to +# negate it, but this contains a space and makes parsing the here file +# tedious. Instead, pass the test value as the component `t', with a +# dummy string `unused' to satisfy the requirement of at least one thing +# to format. + +t="$MH_TEST_DIR/$$" +want_out="$t.want.1" want_err="$t.want.2" +got_out="$t.got.1" got_err="$t.got.2" +ok=true +while read -r fmt val size out; do + if test "$fmt" = '#'; then continue; fi + + if test -n "$out"; then printf -- "$out\n"; fi >$want_out + >$want_err + r=0 + fmttest -raw -format "$fmt" -outsize "$size" \ + --t "`printf -- $val`" unused >$got_out 2>$got_err || + r=$? + + label="of \"$fmt\", size \"$size\", with \"$val\"" + if test $r -ne 0; then + echo "$0: exit status $label is not 0: $r" + ok=false + fi + check $want_out $got_out : "output $label" || ok=false + check $want_err $got_err : "errors $label" || ok=false + $ok || break +done <<\E +# The `^' and `$' aren't used here as regexp meta-characters, but as +# bracketing characters around the escape that mnemonically stand for +# `before' and `after'. If parenthesis or similar are used then they +# trigger annoying behaviour in some editors. +# +# Test cpstripped() with FT_COMP. +# +%{t} foo max foo +%{t} foo 0 +%{t} foo 1 f +%{t} foo 2 fo +%{t} foo 3 foo +%{t} foo 4 foo +^%{t} foo max ^foo +^%{t} foo 0 +^%{t} foo 1 ^ +^%{t} foo 2 ^f +^%{t} foo 3 ^fo +^%{t} foo 4 ^foo +^%{t} foo 5 ^foo +%{t}$ foo max foo$ +%{t}$ foo 0 +%{t}$ foo 1 f +%{t}$ foo 2 fo +%{t}$ foo 3 foo +%{t}$ foo 4 foo$ +%{t}$ foo 5 foo$ +^%{t}$ foo max ^foo$ +^%{t}$ foo 0 +^%{t}$ foo 1 ^ +^%{t}$ foo 2 ^f +^%{t}$ foo 3 ^fo +^%{t}$ foo 4 ^foo +^%{t}$ foo 5 ^foo$ +^%{t}$ foo 6 ^foo$ +# +# zputlit only outputs if there's room for following content. +# This suggests a zputlit to cancel the effect of an earlier zputlit may +# not appear. +^%(zputlit{t})%{t}$ foo max ^foofoo$ +^%(zputlit{t})%{t}$ foo 5 ^foofoo$ +^%(zputlit{t})%{t}$ foo 4 ^foofoo +^%(zputlit{t})%{t}$ foo 3 ^foofo +^%(zputlit{t})%{t}$ foo 2 ^foof +^%(zputlit{t})%{t}$ foo 1 ^ +^%(zputlit{t})%{t}$ foo 0 +# +# Test leading whitespace is stripped, and intervening compressed. +%{t} \40foo 3 foo +%{t} \t\40foo 3 foo +%{t} \t\40f\n\vo\n\no 3 f o +%{t} \t\40f\n\vo\n\no 4 f o\40 +%{t} \t\40f\n\vo\n\no 5 f o o +# +# Test cptrimmed() with FT_COMPF. +%5{t} dum max dum \40 +%5{t} dumb max dumb\40 +%5{t} dumbw max dumbw +%5{t} dumbwa max dumbw +%5{t} dumbwai max dumbw +%5{t} dumbwai 6 dumbw +%5{t} dumbwai 5 dumbw +%5{t} dumbwai 4 dumb +^%5{t} dum max ^dum \40 +^%5{t} dumb max ^dumb\40 +^%5{t} dumbw max ^dumbw +^%5{t} dumbwa max ^dumbw +^%5{t} dumbwai max ^dumbw +^%5{t} dumbwai 6 ^dumbw +^%5{t} dumbwai 5 ^dumb +^%5{t} dumbwai 4 ^dum +%5{t}$ dum max dum $ +%5{t}$ dumb max dumb $ +%5{t}$ dumbw max dumbw$ +%5{t}$ dumbwa max dumbw$ +%5{t}$ dumbwai max dumbw$ +%5{t}$ dumbwai 7 dumbw$ +%5{t}$ dumbwai 6 dumbw$ +%5{t}$ dumbwai 5 dumbw +%5{t}$ dumbwai 4 dumb +^%5{t}$ dum max ^dum $ +^%5{t}$ dumb max ^dumb $ +^%5{t}$ dumbw max ^dumbw$ +^%5{t}$ dumbwa max ^dumbw$ +^%5{t}$ dumbwai max ^dumbw$ +^%5{t}$ dumbwai 8 ^dumbw$ +^%5{t}$ dumbwai 7 ^dumbw$ +^%5{t}$ dumbwai 6 ^dumbw +^%5{t}$ dumbwai 5 ^dumb +# +%-5{t} dum max \40 dum +%-5{t} dumb max \40dumb +%-5{t} dumbw max dumbw +%-5{t} dumbwa max dumbw +%-5{t} dumbwai max dumbw +%-5{t} dumbwai 6 dumbw +%-5{t} dumbwai 5 dumbw +%-5{t} dumbwai 4 dumb +^%-5{t} dum max ^ dum +^%-5{t} dumb max ^ dumb +^%-5{t} dumbw max ^dumbw +^%-5{t} dumbwa max ^dumbw +^%-5{t} dumbwai max ^dumbw +^%-5{t} dumbwai 7 ^dumbw +^%-5{t} dumbwai 6 ^dumbw +^%-5{t} dumbwai 5 ^dumb +%-5{t}$ dum max \40 dum$ +%-5{t}$ dumb max \40dumb$ +%-5{t}$ dumbw max dumbw$ +%-5{t}$ dumbwa max dumbw$ +%-5{t}$ dumbwai max dumbw$ +%-5{t}$ dumbwai 7 dumbw$ +%-5{t}$ dumbwai 6 dumbw$ +%-5{t}$ dumbwai 5 dumbw +%-5{t}$ dumbwai 4 dumb +^%-5{t}$ dum max ^ dum$ +^%-5{t}$ dumb max ^ dumb$ +^%-5{t}$ dumbw max ^dumbw$ +^%-5{t}$ dumbwa max ^dumbw$ +^%-5{t}$ dumbwai max ^dumbw$ +^%-5{t}$ dumbwai 8 ^dumbw$ +^%-5{t}$ dumbwai 7 ^dumbw$ +^%-5{t}$ dumbwai 6 ^dumbw +^%-5{t}$ dumbwai 5 ^dumb +# +# Test cpnumber(). +# +%(void(compval{t}))%0(putnumf) 3 max +%(void(compval{t}))%1(putnumf) 3 max 3 +%(void(compval{t}))%2(putnumf) 3 max \0403 +%(void(compval{t}))%3(putnumf) 3 max \040 3 +%(void(compval{t}))%00(putnumf) 3 max +%(void(compval{t}))%01(putnumf) 3 max 3 +%(void(compval{t}))%02(putnumf) 3 max 03 +%(void(compval{t}))%03(putnumf) 3 max 003 +%(void(compval{t}))%-0(putnumf) 3 max +%(void(compval{t}))%-1(putnumf) 3 max 3 +%(void(compval{t}))%-2(putnumf) 3 max 3\40 +%(void(compval{t}))%-3(putnumf) 3 max 3 \40 +%(void(compval{t}))%-00(putnumf) 3 max +%(void(compval{t}))%-01(putnumf) 3 max 3 +%(void(compval{t}))%-02(putnumf) 3 max 3\40 +%(void(compval{t}))%-03(putnumf) 3 max 3 \40 +# +%(void(compval{t}))%0(putnumf) -3 max +%(void(compval{t}))%1(putnumf) -3 max +%(void(compval{t}))%2(putnumf) -3 max -3 +%(void(compval{t}))%3(putnumf) -3 max \040-3 +%(void(compval{t}))%4(putnumf) -3 max \040 -3 +%(void(compval{t}))%00(putnumf) -3 max +%(void(compval{t}))%01(putnumf) -3 max +%(void(compval{t}))%02(putnumf) -3 max -3 +%(void(compval{t}))%03(putnumf) -3 max -03 +%(void(compval{t}))%04(putnumf) -3 max -003 +%(void(compval{t}))%-0(putnumf) -3 max +%(void(compval{t}))%-1(putnumf) -3 max +%(void(compval{t}))%-2(putnumf) -3 max -3 +%(void(compval{t}))%-3(putnumf) -3 max -3\40 +%(void(compval{t}))%-4(putnumf) -3 max -3 \40 +%(void(compval{t}))%-00(putnumf) -3 max +%(void(compval{t}))%-01(putnumf) -3 max +%(void(compval{t}))%-02(putnumf) -3 max -3 +%(void(compval{t}))%-03(putnumf) -3 max -3\40 +%(void(compval{t}))%-04(putnumf) -3 max -3 \40 +# +%(void(compval{t}))%0(putnumf) 42 max +%(void(compval{t}))%1(putnumf) 42 max ? +%(void(compval{t}))%2(putnumf) 42 max 42 +%(void(compval{t}))%3(putnumf) 42 max \04042 +%(void(compval{t}))%00(putnumf) 42 max +%(void(compval{t}))%01(putnumf) 42 max ? +%(void(compval{t}))%02(putnumf) 42 max 42 +%(void(compval{t}))%03(putnumf) 42 max 042 +%(void(compval{t}))%-0(putnumf) 42 max +%(void(compval{t}))%-1(putnumf) 42 max ? +%(void(compval{t}))%-2(putnumf) 42 max 42 +%(void(compval{t}))%-3(putnumf) 42 max 42\40 +%(void(compval{t}))%-00(putnumf) 42 max +%(void(compval{t}))%-01(putnumf) 42 max ? +%(void(compval{t}))%-02(putnumf) 42 max 42 +%(void(compval{t}))%-03(putnumf) 42 max 42\40 +# +%(void(compval{t}))%0(putnumf) -42 max +%(void(compval{t}))%1(putnumf) -42 max +%(void(compval{t}))%2(putnumf) -42 max -? +%(void(compval{t}))%3(putnumf) -42 max -42 +%(void(compval{t}))%4(putnumf) -42 max \40-42 +%(void(compval{t}))%00(putnumf) -42 max +%(void(compval{t}))%01(putnumf) -42 max +%(void(compval{t}))%02(putnumf) -42 max -? +%(void(compval{t}))%03(putnumf) -42 max -42 +%(void(compval{t}))%04(putnumf) -42 max -042 +%(void(compval{t}))%-0(putnumf) -42 max +%(void(compval{t}))%-1(putnumf) -42 max +%(void(compval{t}))%-2(putnumf) -42 max -? +%(void(compval{t}))%-3(putnumf) -42 max -42 +%(void(compval{t}))%-4(putnumf) -42 max -42\40 +%(void(compval{t}))%-00(putnumf) -42 max +%(void(compval{t}))%-01(putnumf) -42 max +%(void(compval{t}))%-02(putnumf) -42 max -? +%(void(compval{t}))%-03(putnumf) -42 max -42 +%(void(compval{t}))%-04(putnumf) -42 max -42\40 +# +%(void(compval{t}))%5(putnumf) 13579 0 +%(void(compval{t}))%5(putnumf) 13579 1 +%(void(compval{t}))%5(putnumf) 13579 2 +%(void(compval{t}))%5(putnumf) 13579 3 +%(void(compval{t}))%5(putnumf) 13579 4 +%(void(compval{t}))%5(putnumf) 13579 5 13579 +%(void(compval{t}))%5(putnumf) 13579 6 13579 +%(void(compval{t}))%6(putnumf) 13579 5 +%(void(compval{t}))%6(putnumf) 13579 6 \04013579 +%(void(compval{t}))^%5(putnumf) 13579 0 +%(void(compval{t}))^%5(putnumf) 13579 1 ^ +%(void(compval{t}))^%5(putnumf) 13579 2 ^ +%(void(compval{t}))^%5(putnumf) 13579 3 ^ +%(void(compval{t}))^%5(putnumf) 13579 4 ^ +%(void(compval{t}))^%5(putnumf) 13579 5 ^ +%(void(compval{t}))^%5(putnumf) 13579 6 ^13579 +%(void(compval{t}))^%5(putnumf) 13579 7 ^13579 +%(void(compval{t}))^%6(putnumf) 13579 6 ^ +%(void(compval{t}))^%6(putnumf) 13579 7 ^ 13579 +%(void(compval{t}))^%6(putnumf) 13579 8 ^ 13579 +%(void(compval{t}))%5(putnumf)$ 13579 0 +# FIXME: If output won't fit, stop; the `$' is wrong. +%(void(compval{t}))%5(putnumf)$ 13579 1 $ +%(void(compval{t}))%5(putnumf)$ 13579 2 $ +%(void(compval{t}))%5(putnumf)$ 13579 3 $ +%(void(compval{t}))%5(putnumf)$ 13579 4 $ +%(void(compval{t}))%5(putnumf)$ 13579 5 13579 +%(void(compval{t}))%5(putnumf)$ 13579 6 13579$ +%(void(compval{t}))%5(putnumf)$ 13579 7 13579$ +%(void(compval{t}))%6(putnumf)$ 13579 5 $ +%(void(compval{t}))%6(putnumf)$ 13579 6 \04013579 +%(void(compval{t}))%6(putnumf)$ 13579 7 \04013579$ +%(void(compval{t}))%6(putnumf)$ 13579 8 \04013579$ +%(void(compval{t}))^%5(putnumf)$ 13579 0 +%(void(compval{t}))^%5(putnumf)$ 13579 1 ^ +# FIXME: If output won't fit, stop; the `$' is wrong. +%(void(compval{t}))^%5(putnumf)$ 13579 2 ^$ +%(void(compval{t}))^%5(putnumf)$ 13579 3 ^$ +%(void(compval{t}))^%5(putnumf)$ 13579 4 ^$ +%(void(compval{t}))^%5(putnumf)$ 13579 5 ^$ +%(void(compval{t}))^%5(putnumf)$ 13579 6 ^13579 +%(void(compval{t}))^%5(putnumf)$ 13579 7 ^13579$ +%(void(compval{t}))^%5(putnumf)$ 13579 8 ^13579$ +%(void(compval{t}))^%6(putnumf)$ 13579 7 ^\04013579 +%(void(compval{t}))^%6(putnumf)$ 13579 8 ^\04013579$ +%(void(compval{t}))^%6(putnumf)$ 13579 9 ^\04013579$ +E + +$ok +finish_test -- 2.56.0