Fixed typo reported by Ralph.
[mmh] / test / format / test-fmtdump
1 #!/bin/sh
2 ######################################################
3 #
4 # Test fmtdump
5 #
6 ######################################################
7
8 set -e
9
10 if test -z "${MH_OBJ_DIR}"; then
11     srcdir=`dirname $0`/../..
12     MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
13 fi
14
15 . "$MH_OBJ_DIR/test/common.sh"
16
17 setup_test
18
19 # Use proper program, likely not the first one on PATH.
20 fmtdump="${MH_LIB_DIR}/fmtdump"
21
22 expected=$MH_TEST_DIR/$$.expected
23 expected_err=$MH_TEST_DIR/$$.expected_err
24 actual=$MH_TEST_DIR/$$.actual
25 actual_err=$MH_TEST_DIR/$$.actual_err
26
27
28 # check -help
29 cat >$expected <<EOF
30 Usage: fmtdump [switches]
31   switches are:
32   -form formatfile
33   -(forma)t string
34   -version
35   -help
36 EOF
37
38 $fmtdump -help >$actual 2>&1
39 check $expected $actual
40
41 # check -version
42 case `$fmtdump -v` in
43   fmtdump\ --*) ;;
44   *           ) printf '%s: fmtdump -v generated unexpected output\n' "$0" >&2
45                 failed=`expr ${failed:-0} + 1`;;
46 esac
47
48 # check unknown switch
49 run_test "$fmtdump -nonexistent" 'fmtdump: -nonexistent unknown'
50
51 # check with no switches
52 cat >$expected <<EOF
53         LV_DAT, value dat[0]
54         NUMF, width 4, fill ' '
55         LV_DAT, value dat[1]
56         IF_V_NE 0 continue else goto L0
57         CHAR '+'
58         GOTO L1
59 L0:     CHAR ' '
60 L1:     LS_COMP, comp "replied"
61         IF_S continue else goto L2
62         CHAR '-'
63         GOTO L3
64 L2:     LS_COMP, comp "encrypted"
65         IF_S continue else goto L4
66         CHAR 'E'
67 L3:     GOTO L5
68 L4:     CHAR ' '
69 L5:     PARSEDATE, c_name "date", c_type <DATE>
70         LV_MON, c_name "date", c_type <DATE>
71         NUMF, width 2, fill '0'
72         CHAR '/'
73         PARSEDATE, c_name "date", c_type <DATE>
74         LV_MDAY, c_name "date", c_type <DATE>
75         NUMF, width 2, fill '0'
76         LS_COMP, comp "date", c_type <DATE>
77         IF_S continue else goto L6
78         CHAR ' '
79         GOTO L7
80 L6:     CHAR '*'
81 L7:     MYMBOX, c_name "from", c_type <ADDR>
82         LV_COMPFLAG, comp "from", c_type <ADDR>
83         IF_V_NE 0 continue else goto L8
84         LS_COMP, comp "to", c_type <ADDR>
85         IF_S continue else goto L8
86         LIT "To:"
87         PARSEADDR, c_name "to", c_type <ADDR>
88         LS_FRIENDLY, c_name "to", c_type <ADDR>
89         FT_LS_DECODE
90         STRF, width 14, fill ' '
91 L8:     IF_V_EQ 0 continue else goto L9
92         PARSEADDR, c_name "from", c_type <ADDR>
93         LS_FRIENDLY, c_name "from", c_type <ADDR>
94         FT_LS_DECODE
95         STRF, width 17, fill ' '
96 L9:     LIT "  "
97         LS_COMP, comp "subject"
98         FT_LS_DECODE
99         STR
100         LS_COMP, comp "body"
101         IF_S continue else goto L10
102         LIT "<<"
103         COMP, comp "body"
104         LIT ">>"
105 L10:    CHAR '\n'
106         DONE
107 EOF
108
109 $fmtdump >$actual 2>&1
110 check $expected $actual 'keep first'
111
112 # check -form
113 $fmtdump -form "$MH_TEST_DIR/Mail/scan.default" >$actual 2>&1
114 check $expected $actual
115
116 # check -format
117 cat >$expected <<EOF
118         LS_LIT str "1234567890"
119         IF_S continue else goto L0
120         LV_STRLEN
121         NUM
122 L0:     DONE
123 EOF
124
125 $fmtdump -format '%<(lit 1234567890)%(strlen)%>' >$actual 2>&1
126 check $expected $actual
127
128
129 exit ${failed:-0}