xref: /aosp_15_r20/external/lz4/tests/test-lz4-dict.sh (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1#!/bin/sh
2
3FPREFIX="tmp-dict"
4
5set -e
6
7remove () {
8    rm $FPREFIX*
9}
10
11trap remove EXIT
12
13set -x
14
15datagen -g16KB > $FPREFIX
16datagen -g32KB > $FPREFIX-sample-32k
17< $FPREFIX-sample-32k lz4 -D $FPREFIX | lz4 -dD $FPREFIX | diff - $FPREFIX-sample-32k
18datagen -g16MB > $FPREFIX-sample-16m
19lz4 -v -B5 $FPREFIX-sample-16m -D $FPREFIX -c | lz4 -d -D $FPREFIX | diff - $FPREFIX-sample-16m
20
21# Check dictionary compression efficiency
22size_dict=$( lz4 -3 -B4 $FPREFIX-sample-16m -D $FPREFIX -c | wc -c)
23size_nodict=$( lz4 -3 -B4 $FPREFIX-sample-16m -c | wc -c)
24if [ "$size_dict" -lt "$size_nodict" ]; then
25    echo "Test Passed: dictionary is effective."
26else
27    echo "Test Failed: dictionary wasn't effective."
28    exit 1
29fi
30
31touch $FPREFIX-sample-0
32< $FPREFIX-sample-0 lz4 -D $FPREFIX | lz4 -dD $FPREFIX | diff - $FPREFIX-sample-0
33
34< $FPREFIX-sample-32k lz4 -D $FPREFIX-sample-0 | lz4 -dD $FPREFIX-sample-0 | diff - $FPREFIX-sample-32k
35< $FPREFIX-sample-0 lz4 -D $FPREFIX-sample-0 | lz4 -dD $FPREFIX-sample-0 | diff - $FPREFIX-sample-0
36lz4 -bi0 -D $FPREFIX $FPREFIX-sample-32k $FPREFIX-sample-32k
37
38echo "---- test lz4 dictionary loading ----"
39datagen -g128KB > $FPREFIX-data-128KB
40set -e; \
41for l in 0 1 4 128 32767 32768 32769 65535 65536 65537 98303 98304 98305 131071 131072 131073; do \
42    datagen -g$$l > $FPREFIX-$$l; \
43    dd if=$FPREFIX-$$l of=$FPREFIX-$$l-tail bs=1 count=65536 skip=$((l > 65536 ? l - 65536 : 0)); \
44    < $FPREFIX-$$l      lz4 -D stdin $FPREFIX-data-128KB -c | lz4 -dD $FPREFIX-$$l-tail | diff - $FPREFIX-data-128KB; \
45    < $FPREFIX-$$l-tail lz4 -D stdin $FPREFIX-data-128KB -c | lz4 -dD $FPREFIX-$$l      | diff - $FPREFIX-data-128KB; \
46done
47