xref: /netbsd-src/external/bsd/zstd/dist/tests/cli-tests/compression/levels.sh (revision 3117ece4fc4a4ca4489ba793710b60b0d26bab6c)
1*3117ece4Schristos#!/bin/sh
2*3117ece4Schristos
3*3117ece4Schristosset -e
4*3117ece4Schristosset -v
5*3117ece4Schristos
6*3117ece4Schristosdatagen > file
7*3117ece4Schristos
8*3117ece4Schristos# Compress with various levels and ensure that their sizes are ordered
9*3117ece4Schristoszstd --fast=10 file -o file-f10.zst -q
10*3117ece4Schristoszstd --fast=1 file -o file-f1.zst -q
11*3117ece4Schristoszstd -1 file -o file-1.zst -q
12*3117ece4Schristoszstd -19 file -o file-19.zst -q
13*3117ece4Schristos
14*3117ece4Schristoszstd -t file-f10.zst file-f1.zst file-1.zst file-19.zst
15*3117ece4Schristos
16*3117ece4Schristoscmp_size -lt file-19.zst file-1.zst
17*3117ece4Schristoscmp_size -lt file-1.zst file-f1.zst
18*3117ece4Schristoscmp_size -lt file-f1.zst file-f10.zst
19*3117ece4Schristos
20*3117ece4Schristos# Test default levels
21*3117ece4Schristoszstd --fast file -f -q
22*3117ece4Schristoscmp file.zst file-f1.zst || die "--fast is not level -1"
23*3117ece4Schristos
24*3117ece4Schristoszstd -0 file -o file-0.zst -q
25*3117ece4Schristoszstd -f file -q
26*3117ece4Schristoscmp file.zst file-0.zst || die "Level 0 is not the default level"
27*3117ece4Schristos
28*3117ece4Schristos# Test level clamping
29*3117ece4Schristoszstd -99 file -o file-99.zst -q
30*3117ece4Schristoscmp file-19.zst file-99.zst || die "Level 99 is clamped to 19"
31*3117ece4Schristoszstd --fast=200000 file -c | zstd -t
32*3117ece4Schristos
33*3117ece4Schristoszstd -5000000000 -f file       && die "Level too large, must fail" ||:
34*3117ece4Schristoszstd --fast=5000000000 -f file && die "Level too large, must fail" ||:
35*3117ece4Schristos
36*3117ece4Schristos# Test setting a level through the environment variable
37*3117ece4SchristosZSTD_CLEVEL=-10 zstd file -o file-f10-env.zst -q
38*3117ece4SchristosZSTD_CLEVEL=1 zstd file -o file-1-env.zst -q
39*3117ece4SchristosZSTD_CLEVEL=+19 zstd file -o file-19-env.zst -q
40*3117ece4SchristosZSTD_CLEVEL=+99 zstd file -o file-99-env.zst -q
41*3117ece4Schristos
42*3117ece4Schristoscmp file-f10.zst file-f10-env.zst || die "Environment variable failed to set level"
43*3117ece4Schristoscmp file-1.zst file-1-env.zst || die "Environment variable failed to set level"
44*3117ece4Schristoscmp file-19.zst file-19-env.zst || die "Environment variable failed to set level"
45*3117ece4Schristoscmp file-99.zst file-99-env.zst || die "Environment variable failed to set level"
46*3117ece4Schristos
47*3117ece4Schristos# Test invalid environment clevel is the default level
48*3117ece4Schristoszstd -f file -q
49*3117ece4SchristosZSTD_CLEVEL=- zstd -f file -o file-env.zst -q      ; cmp file.zst file-env.zst
50*3117ece4SchristosZSTD_CLEVEL=+ zstd -f file -o file-env.zst -q      ; cmp file.zst file-env.zst
51*3117ece4SchristosZSTD_CLEVEL=a zstd -f file -o file-env.zst -q      ; cmp file.zst file-env.zst
52*3117ece4SchristosZSTD_CLEVEL=-a zstd -f file -o file-env.zst -q     ; cmp file.zst file-env.zst
53*3117ece4SchristosZSTD_CLEVEL=+a zstd -f file -o file-env.zst -q     ; cmp file.zst file-env.zst
54*3117ece4SchristosZSTD_CLEVEL=3a7 zstd -f file -o file-env.zst -q    ; cmp file.zst file-env.zst
55*3117ece4SchristosZSTD_CLEVEL=5000000000 zstd -f file -o file-env.zst -q ; cmp file.zst file-env.zst
56*3117ece4Schristos
57*3117ece4Schristos# Test environment clevel is overridden by command line
58*3117ece4SchristosZSTD_CLEVEL=10 zstd -f file -1 -o file-1-env.zst -q
59*3117ece4SchristosZSTD_CLEVEL=10 zstd -f file --fast=1 -o file-f1-env.zst -q
60*3117ece4Schristos
61*3117ece4Schristoscmp file-1.zst file-1-env.zst  || die "Environment variable not overridden"
62*3117ece4Schristoscmp file-f1.zst file-f1-env.zst || die "Environment variable not overridden"
63