use lz4::cli::constants::{
display_level, lz4c_legacy_commands, set_display_level, set_lz4c_legacy_commands, AUTHOR,
COMPRESSOR_NAME, GB, IO_MT, KB, LZ4CAT, LZ4_EXTENSION, LZ4_LEGACY, MB, UNLZ4,
WELCOME_MESSAGE_FMT,
};
#[test]
fn compressor_name_is_lz4() {
assert_eq!(COMPRESSOR_NAME, "lz4");
}
#[test]
fn author_is_yann_collet() {
assert_eq!(AUTHOR, "Yann Collet");
}
#[test]
fn lz4_extension_is_dot_lz4() {
assert_eq!(LZ4_EXTENSION, ".lz4");
}
#[test]
fn lz4cat_constant() {
assert_eq!(LZ4CAT, "lz4cat");
}
#[test]
fn unlz4_constant() {
assert_eq!(UNLZ4, "unlz4");
}
#[test]
fn lz4_legacy_constant() {
assert_eq!(LZ4_LEGACY, "lz4c");
}
#[test]
fn welcome_message_fmt_contains_placeholders() {
let count = WELCOME_MESSAGE_FMT.matches("{}").count();
assert_eq!(
count, 5,
"WELCOME_MESSAGE_FMT must have 5 {{}} placeholders"
);
}
#[test]
fn welcome_message_fmt_ends_with_newline() {
assert!(WELCOME_MESSAGE_FMT.ends_with('\n'));
}
#[test]
fn welcome_message_fmt_format_produces_expected_output() {
let result = WELCOME_MESSAGE_FMT
.replacen("{}", "lz4", 1)
.replacen("{}", "1.10.0", 1)
.replacen("{}", "64", 1)
.replacen("{}", "single-thread", 1)
.replacen("{}", "Yann Collet", 1);
assert!(result.starts_with("***"));
assert!(result.contains("lz4"));
assert!(result.contains("1.10.0"));
assert!(result.contains("Yann Collet"));
}
#[test]
fn kb_is_1024() {
assert_eq!(KB, 1_024u64);
}
#[test]
fn mb_is_1048576() {
assert_eq!(MB, 1_048_576u64);
}
#[test]
fn gb_is_1073741824() {
assert_eq!(GB, 1_073_741_824u64);
}
#[test]
fn size_constant_relationships() {
assert_eq!(MB, 1024 * KB);
assert_eq!(GB, 1024 * MB);
}
#[test]
fn io_mt_is_valid_threading_label() {
assert!(
IO_MT == "multithread" || IO_MT == "single-thread",
"IO_MT must be 'multithread' or 'single-thread', got: {IO_MT}"
);
}
#[test]
#[cfg(feature = "multithread")]
fn io_mt_is_multithread_when_feature_enabled() {
assert_eq!(IO_MT, "multithread");
}
#[test]
#[cfg(not(feature = "multithread"))]
fn io_mt_is_single_thread_when_feature_disabled() {
assert_eq!(IO_MT, "single-thread");
}
#[test]
fn display_level_accessor_returns_u32() {
let level = display_level();
assert!(level <= 4, "display_level must be at most 4, got {level}");
}
#[test]
fn set_display_level_round_trips() {
let original = display_level();
set_display_level(0);
assert_eq!(display_level(), 0);
set_display_level(1);
assert_eq!(display_level(), 1);
set_display_level(4);
assert_eq!(display_level(), 4);
set_display_level(original);
assert_eq!(display_level(), original);
}
#[test]
fn set_display_level_zero_disables_output() {
let original = display_level();
set_display_level(0);
assert_eq!(display_level(), 0);
set_display_level(original);
}
#[test]
fn set_display_level_to_verbose() {
let original = display_level();
set_display_level(4);
assert_eq!(display_level(), 4);
set_display_level(original);
}
#[test]
fn lz4c_legacy_commands_get_set_round_trip() {
let original = lz4c_legacy_commands();
set_lz4c_legacy_commands(true);
assert!(lz4c_legacy_commands());
set_lz4c_legacy_commands(false);
assert!(!lz4c_legacy_commands());
set_lz4c_legacy_commands(original);
}
#[test]
fn lz4c_legacy_commands_disable() {
set_lz4c_legacy_commands(false);
assert!(!lz4c_legacy_commands());
}
#[test]
fn lz4c_legacy_commands_enable() {
let original = lz4c_legacy_commands();
set_lz4c_legacy_commands(true);
assert!(lz4c_legacy_commands());
set_lz4c_legacy_commands(original);
}