]> git.draconx.ca Git - liblbx.git/blob - tests/regress.zsh
liblbx: Don't scale palette values internally.
[liblbx.git] / tests / regress.zsh
1 #!/usr/bin/env zsh
2 # Simple test which decodes some images from LBX archives and compares against
3 # known md5sums to find regressions.  Unforuntately depends on the output
4 # format of lbximg; this may change in the future.
5
6 # Image/tool paths.  Adjust to taste.  The DATADIR must contain the original
7 # Moo2 LBX archives, with filenames in lower case.
8 DATADIR=$HOME/.2oom/game
9 LBXTOOL=`readlink -f ../lbxtool`
10 LBXIMG=`readlink -f ../lbximg`
11
12 # Status vars
13 FAILED=0
14
15 if ! SCRATCH=`mktemp -d`; then
16         exit 1
17 fi
18
19 cd $SCRATCH || exit 1
20 echo "Working in $SCRATCH"
21
22 # Palettes
23 $LBXTOOL -xf $DATADIR/fonts.lbx
24
25 compare()
26 {
27         echo -n "  Frame $1 "
28
29         FILE=`printf 'out.%03d.png' $1`
30         MD5=`md5sum $FILE | cut -d ' ' -f 1`
31
32         if [[ $MD5 == $2 ]]; then
33                 echo OK
34                 rm -f $FILE
35         else
36                 echo FAILED
37                 FAILED=`expr $FAILED + 1`
38         fi
39 }
40
41 # Main menu
42 $LBXTOOL -xf $DATADIR/mainmenu.lbx mainmenu.lbx.{000,007,021}
43
44 echo "mainmenu.lbx.021: single frame, embedded palette:"
45 $LBXIMG -df mainmenu.lbx.021
46 compare 0 b5d488667bed557a089c5d8f8b0a3d64
47
48 echo "mainmenu.lbx.007: single frame, external palette:"
49 $LBXIMG -dp fonts.lbx.006 < mainmenu.lbx.007
50 compare 0 5b9a1a10e4979531e91a41f02ee40537
51
52 echo "mainmenu.lbx.000: multi frame, external palette:"
53 $LBXIMG -dp fonts.lbx.006 < mainmenu.lbx.000 0 15 49
54 compare  0 6556baafebe441498f33865f2e9eb0de
55 compare 15 76a6e8fe18614423f8780ee80f513e8c
56 compare 49 b5d488667bed557a089c5d8f8b0a3d64
57
58 # Logos
59 $LBXTOOL -xf $DATADIR/logo.lbx
60
61 echo "logo.lbx.000: single frame, embedded palette, transparency:"
62 $LBXIMG -df logo.lbx.000
63 compare 0 cf4cbcb834ef35890d1283928b0187bf
64
65 echo "logo.lbx.001: multi frame, embedded palette:"
66 $LBXIMG -df logo.lbx.001 0 30 63
67 compare  0 542778cde51dc821e225ddd4a16dc197
68 compare 30 609c2b9be5a1e18f5c36398554f9f2ec
69 compare 63 664b12c7259948900ded3ff93e1f4ec7
70
71 # Ships
72 $LBXTOOL -xf $DATADIR/ships.lbx ships.lbx.{042,049}
73
74 echo "ships.lbx.042: single frame, external+override palette, transparency:"
75 $LBXIMG -df ships.lbx.042 -p fonts.lbx.012 -O ships.lbx.049
76 compare 0 3426ef9c5c8e3dfbd1a95ed9211e2342
77
78 # Nebulae
79 $LBXTOOL -xf $DATADIR/starbg.lbx starbg.lbx.009
80
81 echo "starbg.lbx.009: single frame, raw data:"
82 $LBXIMG -df starbg.lbx.009 -p fonts.lbx.005
83 compare 0 2e430234f410ef208f78d99a64fa449f
84
85 # Monsters
86 $LBXTOOL -xf $DATADIR/monster.lbx monster.lbx.{007,014}
87
88 echo "monster.lbx.007: multi frame, chunked:"
89 $LBXIMG -df monster.lbx.007 -p fonts.lbx.004 -O monster.lbx.014 0 5 19
90 compare  0 20eb7d52abb3cd718426d4732d9e2286
91 compare  5 ea8c7a5fbeb9043fd8f30ae91b13550a
92 compare 19 d501ecf1599ea724846625a9711c6ccb
93
94 # Clean up
95 if [[ $FAILED -eq 0 ]]; then
96         echo "All tests completed successfully."
97         rm -rf -- $SCRATCH
98 else
99         echo "$FAILED test(s) FAILED"
100         exit 1
101 fi