netspd 0.1.3

A beautiful, modern, minimalistic network speed testing terminal application
Documentation
//! Unit tests for human-readable formatting.

use std::time::Duration;

use netspd::utils::format::{
    format_bps, format_bytes, format_duration, format_eta, format_millis, split_bps,
};

#[test]
fn bps_scales_units() {
    assert_eq!(format_bps(500.0), "500.0 bps");
    assert_eq!(format_bps(1_500.0), "1.5 Kbps");
    assert_eq!(format_bps(142_500_000.0), "142.5 Mbps");
    assert_eq!(format_bps(2_400_000_000.0), "2.4 Gbps");
}

#[test]
fn bps_never_negative() {
    assert_eq!(format_bps(-10.0), "0.0 bps");
}

#[test]
fn split_bps_separates_value_and_unit() {
    let (value, unit) = split_bps(142_500_000.0);
    assert_eq!(value, "142.5");
    assert_eq!(unit, "Mbps");
}

#[test]
fn bytes_scale_units() {
    assert_eq!(format_bytes(512), "512 B");
    assert_eq!(format_bytes(1_500), "1.50 KB");
    assert_eq!(format_bytes(1_240_000_000), "1.24 GB");
}

#[test]
fn durations_render_as_minutes_seconds() {
    assert_eq!(format_duration(Duration::from_secs(0)), "00:00");
    assert_eq!(format_duration(Duration::from_secs(83)), "01:23");
}

#[test]
fn eta_renders_compactly() {
    assert_eq!(format_eta(Duration::from_secs(8)), "8s");
    assert_eq!(format_eta(Duration::from_secs(65)), "1m 05s");
}

#[test]
fn millis_adapt_precision() {
    assert_eq!(format_millis(12.44), "12.4 ms");
    assert_eq!(format_millis(234.6), "235 ms");
}