xref: /aosp_15_r20/external/lz4/tests/test-lz4-basic.sh (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1*27162e4eSAndroid Build Coastguard Worker#!/bin/sh
2*27162e4eSAndroid Build Coastguard Worker
3*27162e4eSAndroid Build Coastguard WorkerFPREFIX="tmp-tlb"
4*27162e4eSAndroid Build Coastguard Worker
5*27162e4eSAndroid Build Coastguard Workerset -e
6*27162e4eSAndroid Build Coastguard Worker
7*27162e4eSAndroid Build Coastguard Workerremove () {
8*27162e4eSAndroid Build Coastguard Worker    rm -rf $FPREFIX*
9*27162e4eSAndroid Build Coastguard Worker}
10*27162e4eSAndroid Build Coastguard Worker
11*27162e4eSAndroid Build Coastguard Workertrap remove EXIT
12*27162e4eSAndroid Build Coastguard Worker
13*27162e4eSAndroid Build Coastguard Workerset -x
14*27162e4eSAndroid Build Coastguard Worker
15*27162e4eSAndroid Build Coastguard Workerdatagen -g0       | lz4 -v     | lz4 -t
16*27162e4eSAndroid Build Coastguard Workerdatagen -g16KB    | lz4 -9     | lz4 -t
17*27162e4eSAndroid Build Coastguard Workerdatagen -g20KB > $FPREFIX-dg20k
18*27162e4eSAndroid Build Coastguard Workerlz4 < $FPREFIX-dg20k | lz4 -d > $FPREFIX-dec
19*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-dg20k $FPREFIX-dec
20*27162e4eSAndroid Build Coastguard Workerlz4 --no-frame-crc < $FPREFIX-dg20k | lz4 -d > $FPREFIX-dec
21*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-dg20k $FPREFIX-dec
22*27162e4eSAndroid Build Coastguard Workerdatagen           | lz4 -BI    | lz4 -t
23*27162e4eSAndroid Build Coastguard Workerdatagen           | lz4 --no-crc | lz4 -t
24*27162e4eSAndroid Build Coastguard Workerdatagen -g6M -P99 | lz4 -9BD   | lz4 -t
25*27162e4eSAndroid Build Coastguard Workerdatagen -g17M     | lz4 -9v    | lz4 -qt
26*27162e4eSAndroid Build Coastguard Workerdatagen -g33M     | lz4 --no-frame-crc | lz4 -t
27*27162e4eSAndroid Build Coastguard Workerdatagen -g256MB   | lz4 -vqB4D | lz4 -t --no-crc
28*27162e4eSAndroid Build Coastguard Workerecho "hello world" > $FPREFIX-hw
29*27162e4eSAndroid Build Coastguard Workerlz4 --rm -f $FPREFIX-hw $FPREFIX-hw.lz4
30*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw                   # must fail (--rm)
31*27162e4eSAndroid Build Coastguard Workertest   -f $FPREFIX-hw.lz4
32*27162e4eSAndroid Build Coastguard Workerlz4 -d --rm -f $FPREFIX-hw.lz4
33*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4
34*27162e4eSAndroid Build Coastguard Workerlz4 --rm -f $FPREFIX-hw > /dev/null
35*27162e4eSAndroid Build Coastguard Workertest   -f $FPREFIX-hw.lz4               # no more implicit stdout
36*27162e4eSAndroid Build Coastguard Workerlz4cat $FPREFIX-hw.lz4 | grep "hello world"
37*27162e4eSAndroid Build Coastguard Workerunlz4 --rm $FPREFIX-hw.lz4 $FPREFIX-hw
38*27162e4eSAndroid Build Coastguard Workertest   -f $FPREFIX-hw
39*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4               # must fail (--rm)
40*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4.lz4           # must fail (unlz4)
41*27162e4eSAndroid Build Coastguard Workerlz4cat $FPREFIX-hw                      # pass-through mode
42*27162e4eSAndroid Build Coastguard Workertest   -f $FPREFIX-hw
43*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4               # must fail (lz4cat)
44*27162e4eSAndroid Build Coastguard Workerlz4 $FPREFIX-hw $FPREFIX-hw.lz4         # creates $FPREFIX-hw.lz4
45*27162e4eSAndroid Build Coastguard Workerlz4cat < $FPREFIX-hw.lz4 > ${FPREFIX}3  # checks lz4cat works with stdin (#285)
46*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}3
47*27162e4eSAndroid Build Coastguard Workerlz4cat < $FPREFIX-hw > ${FPREFIX}2      # checks lz4cat works in pass-through mode
48*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}2
49*27162e4eSAndroid Build Coastguard Workercp $FPREFIX-hw ./-d
50*27162e4eSAndroid Build Coastguard Workerlz4 --rm -- -d -d.lz4                   # compresses ./d into ./-d.lz4
51*27162e4eSAndroid Build Coastguard Workertest   -f ./-d.lz4
52*27162e4eSAndroid Build Coastguard Workertest ! -f ./-d
53*27162e4eSAndroid Build Coastguard Workermv ./-d.lz4 ./-z
54*27162e4eSAndroid Build Coastguard Workerlz4 -d --rm -- -z ${FPREFIX}4           # uncompresses ./-z into $FPREFIX4
55*27162e4eSAndroid Build Coastguard Workertest ! -f ./-z
56*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}4
57*27162e4eSAndroid Build Coastguard Workerlz4 ${FPREFIX}2 ${FPREFIX}3 ${FPREFIX}4 && exit 1  # must fail: refuse to handle 3+ file names
58*27162e4eSAndroid Build Coastguard Workermkdir -p ${FPREFIX}-dir
59*27162e4eSAndroid Build Coastguard Workerlz4 ${FPREFIX}-dir && exit 1          # must fail: refuse to compress directory
60*27162e4eSAndroid Build Coastguard Workertest ! -f ${FPREFIX}-dir.lz4          # must not create artifact (#1211)
61*27162e4eSAndroid Build Coastguard Workerlz4 -f $FPREFIX-hw                    # create $FPREFIX-hw.lz4, for next tests
62*27162e4eSAndroid Build Coastguard Workerlz4 --list $FPREFIX-hw.lz4            # test --list on valid single-frame file
63*27162e4eSAndroid Build Coastguard Workerlz4 --list < $FPREFIX-hw.lz4          # test --list from stdin (file only)
64*27162e4eSAndroid Build Coastguard Workercat $FPREFIX-hw >> $FPREFIX-hw.lz4
65*27162e4eSAndroid Build Coastguard Workerlz4 -f $FPREFIX-hw.lz4 && exit 1      # uncompress valid frame followed by invalid data (must fail now)
66*27162e4eSAndroid Build Coastguard Workerlz4 -BX $FPREFIX-hw -c -q | lz4 -tv   # test block checksum
67*27162e4eSAndroid Build Coastguard Worker# datagen -g20KB generates the same file every single time
68*27162e4eSAndroid Build Coastguard Worker# cannot save output of datagen -g20KB as input file to lz4 because the following shell commands are run before datagen -g20KB
69*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c --fast | wc -c)" -lt "$(datagen -g20KB | lz4 -c --fast=9 | wc -c)" # -1 vs -9
70*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c -1 | wc -c)" -lt "$(datagen -g20KB| lz4 -c --fast=1 | wc -c)" # 1 vs -1
71*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c --fast=1 | wc -c)" -eq "$(datagen -g20KB| lz4 -c --fast| wc -c)" # checks default fast compression is -1
72*27162e4eSAndroid Build Coastguard Workerlz4 -c --fast=0 $FPREFIX-dg20K && exit 1  # lz4 should fail when fast=0
73*27162e4eSAndroid Build Coastguard Workerlz4 -c --fast=-1 $FPREFIX-dg20K && exit 1 # lz4 should fail when fast=-1
74*27162e4eSAndroid Build Coastguard Worker# Multithreading commands
75*27162e4eSAndroid Build Coastguard Workerdatagen -g16M | lz4 -T2 | lz4 -t
76*27162e4eSAndroid Build Coastguard Workerdatagen -g16M | lz4 --threads=2 | lz4 -t
77*27162e4eSAndroid Build Coastguard Worker# High --fast values can result in out-of-bound dereferences #876
78*27162e4eSAndroid Build Coastguard Workerdatagen -g1M | lz4 -c --fast=999999999 > $FPREFIX-trash
79*27162e4eSAndroid Build Coastguard Worker# Test for #596
80*27162e4eSAndroid Build Coastguard Workerecho "TEST" > $FPREFIX-test
81*27162e4eSAndroid Build Coastguard Workerlz4 -m $FPREFIX-test
82*27162e4eSAndroid Build Coastguard Workerlz4 $FPREFIX-test.lz4 $FPREFIX-test2
83*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-test $FPREFIX-test2
84*27162e4eSAndroid Build Coastguard Worker# bug #1374
85*27162e4eSAndroid Build Coastguard Workerdatagen -g4194302 | lz4 -B4 -c > $FPREFIX-test3
86