File: zstd-window-size.rs

package info (click to toggle)
rust-async-compression 0.4.13-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 928 kB
  • sloc: makefile: 2
file content (45 lines) | stat: -rw-r--r-- 1,728 bytes parent folder | download
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
#![cfg(not(windows))]

use async_compression::zstd::DParameter;
use tokio::io::AsyncWriteExt as _;

#[tokio::test]
async fn zstd_decode_large_window_size_default() {
    let compressed = include_bytes!("./artifacts/long-window-size-lib.rs.zst");

    // Default decoder should throw with an error, window size maximum is too low.
    let mut decoder = async_compression::tokio::write::ZstdDecoder::new(Vec::new());
    decoder.write_all(compressed).await.unwrap_err();
}

#[tokio::test]
async fn zstd_decode_large_window_size_explicit_small_window_size() {
    let compressed = include_bytes!("./artifacts/long-window-size-lib.rs.zst");

    // Short window decoder should throw with an error, window size maximum is too low.
    let mut decoder = async_compression::tokio::write::ZstdDecoder::with_params(
        Vec::new(),
        &[DParameter::window_log_max(16)],
    );
    decoder.write_all(compressed).await.unwrap_err();
}

#[tokio::test]
async fn zstd_decode_large_window_size_explicit_large_window_size() {
    let compressed = include_bytes!("./artifacts/long-window-size-lib.rs.zst");
    let source = include_bytes!("./artifacts/lib.rs");

    // Long window decoder should succeed as the window size is large enough to decompress the given input.
    let mut long_window_size_decoder = async_compression::tokio::write::ZstdDecoder::with_params(
        Vec::new(),
        &[DParameter::window_log_max(31)],
    );
    // Long window size decoder should successfully decode the given input data.
    long_window_size_decoder
        .write_all(compressed)
        .await
        .unwrap();
    long_window_size_decoder.shutdown().await.unwrap();

    assert_eq!(long_window_size_decoder.into_inner(), source);
}