#! /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