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