decdn-common 0.0.4

Shared types for deCDN binaries: config schema, identity, CLI args
Documentation
use super::*;

#[test]
fn parses_bare_bytes() {
    assert_eq!(parse_byte_size("1048576").unwrap(), 1_048_576);
}

#[test]
fn parses_binary_units() {
    assert_eq!(parse_byte_size("4MiB").unwrap(), 4 * 1024 * 1024);
    assert_eq!(parse_byte_size("1M").unwrap(), 1024 * 1024);
    assert_eq!(parse_byte_size("2KB").unwrap(), 2048);
    assert_eq!(parse_byte_size("1G").unwrap(), 1024 * 1024 * 1024);
}

#[test]
fn parses_with_internal_whitespace_trimmed() {
    assert_eq!(parse_byte_size(" 4 MiB ").unwrap(), 4 * 1024 * 1024);
}

#[test]
fn rejects_empty() {
    assert!(parse_byte_size("").is_err());
    assert!(parse_byte_size("   ").is_err());
}

#[test]
fn rejects_garbage() {
    assert!(parse_byte_size("abc").is_err());
    assert!(parse_byte_size("4XiB").is_err());
    assert!(parse_byte_size("4.5MiB").is_err());
}

#[test]
fn rejects_overflow() {
    assert!(parse_byte_size("99999999999999999999G").is_err());
}