1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
all: test
CBIN=../build/tests
NODE=node
NODE_OPTS=--use-strict
TESTS=test_r4x8 test_r4x16 test_arith test_fqzcomp test_tok3
CORPUS=../tests
modules: node_modules/bzip2 node_modules/minimist
node_modules/bzip2:
-mkdir node_modules
npm install bzip2
node_modules/minimist:
-mkdir node_modules
npm install minimist
test check: modules ${TESTS}
test_r4x8:
@echo
@echo === Checking r4x8
@if [ ! -e ${CBIN}/rans4x8 ]; then echo "Set CBIN if you wish to validate against C version"; fi
@for i in ${CORPUS}/dat/r4x8/*; do \
echo $$i;\
base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
level=`echo $$i | sed 's/.*\.//'`;\
# Decode predefined data set\
a=`${NODE} ${NODE_OPTS} main_rans.js -d -r $$i 2>/dev/null | md5sum`; \
b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
# Round trip. \
cut -f 1 < $$base | tr -d '\012' > _nonl; \
${NODE} ${NODE_OPTS} main_rans.js -o $$level -r _nonl 2>/dev/null > _; \
a=`${NODE} ${NODE_OPTS} main_rans.js -d -r _ 2>/dev/null | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
if [ -e ${CBIN}/rans4x8 ]; \
then \
a=`${CBIN}/rans4x8 -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
fi; \
done
test_r4x16:
@echo
@echo === Checking r4x16
@if [ ! -e ${CBIN}/rans4x16pr ]; then echo "Set CBIN if you wish to validate against C version"; fi
@for i in ${CORPUS}/dat/r4x16/*; do \
echo $$i;\
base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
level=`echo $$i | sed 's/.*\.//'`;\
# Decode predefined data set\
a=`${NODE} ${NODE_OPTS} main_rans4x16.js -d -r $$i 2>/dev/null | md5sum`; \
b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
# Round trip. \
cut -f 1 < $$base | tr -d '\012' > _nonl; \
${NODE} ${NODE_OPTS} main_rans4x16.js -o $$level -r _nonl 2>/dev/null > _; \
a=`${NODE} ${NODE_OPTS} main_rans4x16.js -d -r _ 2>/dev/null | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
if [ -e ${CBIN}/rans4x16pr ]; \
then \
a=`${CBIN}/rans4x16pr -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
fi; \
done
test_arith:
@echo
@echo === Checking arith
@if [ ! -e ${CBIN}/arith_dynamic ]; then echo "Set CBIN if you wish to validate against C version"; fi
@for i in ${CORPUS}/dat/arith/*; do \
echo $$i;\
base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
level=`echo $$i | sed 's/.*\.//'`;\
# Decode predefined data set\
a=`${NODE} ${NODE_OPTS} main_arith_gen.js -d -r $$i 2>/dev/null | md5sum`; \
b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
# Round trip. \
cut -f 1 < $$base | tr -d '\012' > _nonl; \
${NODE} ${NODE_OPTS} main_arith_gen.js -o $$level -r _nonl 2>/dev/null > _; \
a=`${NODE} ${NODE_OPTS} main_arith_gen.js -d -r _ 2>/dev/null | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
if [ -e ${CBIN}/arith_dynamic ]; \
then \
a=`${CBIN}/arith_dynamic -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
fi; \
done
test_fqzcomp:
@echo
@echo === Checking fqzcomp
@if [ ! -e ${CBIN}/fqzcomp_qual ]; then echo "Set CBIN if you wish to validate against C version"; fi
@for i in ${CORPUS}/dat/fqzcomp/q*; do \
echo $$i;\
base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
level=`echo $$i | sed 's/.*\.//'`;\
# Decode predefined data set\
a=`${NODE} ${NODE_OPTS} main_fqzcomp.js -d -r $$i 2>/dev/null | md5sum`; \
b=`awk '{print $$1}' $$base | md5sum`; \
test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
# Round trip. \
${NODE} ${NODE_OPTS} main_fqzcomp.js -s $$level -r $$base 2>/dev/null > _; \
a=`${NODE} ${NODE_OPTS} main_fqzcomp -d -r _ 2>/dev/null | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
if [ -e ${CBIN}/fqzcomp_qual ]; \
then \
a=`${CBIN}/fqzcomp_qual -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
fi; \
done
test_tok3:
@echo
@echo === Checking tok3
@if [ ! -e ${CBIN}/tokenise_name3 ]; then echo "Set CBIN if you wish to validate against C version"; fi
@for base in ${CORPUS}/names/*.names; do \
echo -n "$$base ";\
${NODE} ${NODE_OPTS} main_tok3.js -a -r $$base 2>/dev/null > _; \
a=`${NODE} ${NODE_OPTS} main_tok3 -d -r _ 2>/dev/null | md5sum`; \
cat _ | wc -c;\
b=`cat $$base | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail round-trip for $$base; \
if [ -e ${CBIN}/tokenise_name3 ]; \
then \
a=`${CBIN}/tokenise_name3 -d -r < _ | tr '\000' '\012' | md5sum`; \
test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
fi; \
done;
@for i in ${CORPUS}/names/tok3/*; do \
echo $$i;\
base=`echo $$i | sed 's/\.[0-9]*$$//;s#/tok3##'`; \
level=`echo $$i | sed 's/.*\.//'`;\
# Decode predefined data set\
a=`${NODE} ${NODE_OPTS} main_tok3 -d -r $$i 2>/dev/null | md5sum`; \
b=`cat $$base | md5sum`; \
test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
done;
|