#! /bin/bash # This script tests: pbmtext # Also requires: pamfile tmpdir=${tmpdir:-/tmp} # Test 1: # Should print 3898818212 967 twice pbmtext UNIX Philosophy: Do one thing and do it well. | cksum echo -n "UNIX Philosophy: Do one thing and do it well." | pbmtext | cksum # Should print 2506052117 1354 twice pbmtext -builtin fixed \ For truth is always strange. Stranger than fiction. Lord Byron | cksum echo -n "For truth is always strange. Stranger than fiction. Lord Byron" | \ pbmtext -builtin fixed | cksum text="The quick brown fog jumps over the lazy docs." # Test 2: for flags in "" "-nomargins" "-builtin fixed" do echo ${text} | pbmtext ${flags} | cksum done temp_pbm=${tmpdir}/temp.pbm # Test 3: Check if image is produced unaltered when -width is specified # Should print 1028079028 967 twice, then 1305436978 1018 twice for flags in "" "-builtin fixed" do pbmtext ${flags} ${text} | tee ${temp_pbm} | cksum width1=`pamfile ${temp_pbm} | awk '$2=="PBM" && NR==1 {w=$4}; END {print w}' ` width2=`pbmtext ${flags} ${text} --dry-run | awk '{print $1}' ` if [ ${width1} -eq ${width2} ]; then pbmtext ${flags} -width=${width1} ${text} | cksum else echo ${width1} ${width2} fi rm ${temp_pbm} done # Test 4: Should print 1647614653 2027 three times # Note: backslashes inserted in 3 locations in the rectange to make # possible input as a here document. fontRectangle_txt=${tmpdir}/fontRectangle.txt font_pbm=${tmpdir}/font.pbm cat > ${fontRectangle_txt} << EOF M ",/^_[\`jpqy| M / !"#$%&'()*+ / < ,-./01234567 < > 89:;<=>?@ABC > @ DEFGHIJKLMNO @ _ PQRSTUVWXYZ[ _ { \\]^_\`abcdefg { } hijklmnopqrs } ~ tuvwxyz{|}~ ~ M ",/^_[\`jpqy| M EOF pbmtext -dump-sheet -builtin fixed | tee ${font_pbm} | cksum cat ${fontRectangle_txt} | pbmtext -nom -builtin fixed | cksum cat ${fontRectangle_txt} | pbmtext -nom -font ${font_pbm} | cksum rm ${fontRectangle_txt} ${font_pbm} # Test 5: Print all characters defined in the built-in bdf font # One long row # Should print 3233136020 4535 LC_CTYPE=C \ awk 'BEGIN { for (i=32; i<=125;++i) printf("%c",i); for (i=160;i<=255;++i) printf("%c",i); }' | \ pbmtext -builtin bdf | cksum # One tall column # Should print 1216262214 5711 LC_CTYPE=C \ awk 'BEGIN { for (i=32; i<=125;++i) printf("%c\n",i); for (i=160;i<=255;++i) printf("%c\n",i); }' | \ pbmtext -nomargins -builtin bdf | cksum # Test 6: # Test corruptions in BDF font file. font_bdf=${tmpdir}/font.bdf font_corrupt_bdf=${tmpdir}/fontcorrupt.bdf # Though this BDF font file defines only three letters, it is valid. cat > ${font_bdf} << EOF STARTFONT 2.1 COMMENT $XFree86: xc/fonts/bdf/misc/micro.bdf,v 1.1 1999/09/25 14:36:34 dawes Exp $ - Modified for test FONT micro SIZE 4 75 75 FONTBOUNDINGBOX 4 5 0 0 STARTPROPERTIES 3 FONT_DESCENT 0 FONT_ASCENT 5 CHARSET_REGISTRY "ISO88591" CHARSET_ENCODING "1" COPYRIGHT "Public domain font. Share and enjoy." ENDPROPERTIES CHARS 3 STARTCHAR A ENCODING 65 SWIDTH 1000 0 DWIDTH 4 0 BBX 4 5 0 0 BITMAP e0 a0 e0 a0 a0 ENDCHAR STARTCHAR B ENCODING 66 SWIDTH 1000 0 DWIDTH 4 0 BBX 4 5 0 0 BITMAP e0 a0 c0 a0 e0 ENDCHAR STARTCHAR C ENCODING 67 SWIDTH 1000 0 DWIDTH 4 0 BBX 4 5 0 0 BITMAP e0 80 80 80 e0 ENDCHAR ENDFONT EOF # This should succeed and produce 386826492 35 pbmtext -font ${font_bdf} ABC | cksum # The rest should all fail. Writes 1 seven times. pbmtext -font ${font_bdf} BCD echo $? sed 's/FONTBOUNDINGBOX 4 5 0 0/FONTBOUNDINGBOX 4 4 0 0/' \ ${font_bdf} > ${font_corrupt_bdf} pbmtext -font ${font_corrupt_bdf} ABC > /dev/null echo $? rm ${font_corrupt_bdf} sed 's/BBX 4 5 0 0/BBX 4 6 0 0/' \ ${font_bdf} > ${font_corrupt_bdf} pbmtext -font ${font_corrupt_bdf} ABC > /dev/null echo $? rm ${font_corrupt_bdf} for delete_line in 14 16 18 20 do sed "${delete_line}"d ${font_bdf} > ${font_corrupt_bdf} pbmtext -font ${font_corrupt_bdf} ABC > /dev/null echo $? rm ${font_corrupt_bdf} done