Files
coracle-rust/coracle-lib/tests/kinds.rs
T
2026-04-16 17:37:21 -07:00

78 lines
1.7 KiB
Rust

use coracle_lib::kinds::{is_addressable, is_ephemeral, is_regular, is_replaceable};
use coracle_lib::kinds::KindError;
// --- Free function classification tests ---
#[test]
fn regular_kind_1() {
assert!(is_regular(1));
}
#[test]
fn regular_kind_9999() {
assert!(is_regular(9999));
}
#[test]
fn kind_0_is_replaceable_not_regular() {
assert!(!is_regular(0));
assert!(is_replaceable(0));
}
#[test]
fn kind_3_is_replaceable_not_regular() {
assert!(!is_regular(3));
assert!(is_replaceable(3));
}
#[test]
fn replaceable_range() {
assert!(is_replaceable(10_000));
assert!(is_replaceable(19_999));
assert!(!is_replaceable(20_000));
}
#[test]
fn ephemeral_range() {
assert!(is_ephemeral(20_000));
assert!(is_ephemeral(29_999));
assert!(!is_ephemeral(30_000));
}
#[test]
fn addressable_range() {
assert!(is_addressable(30_000));
assert!(is_addressable(39_999));
assert!(!is_addressable(40_000));
}
#[test]
fn ranges_are_mutually_exclusive_for_regular() {
for k in [1, 100, 5000, 9999] {
assert!(is_regular(k));
assert!(!is_replaceable(k));
assert!(!is_ephemeral(k));
assert!(!is_addressable(k));
}
}
#[test]
fn high_kinds_are_none_of_the_above() {
assert!(!is_regular(40_000));
assert!(!is_replaceable(40_000));
assert!(!is_ephemeral(40_000));
assert!(!is_addressable(40_000));
}
#[test]
fn kind_error_display() {
let err = KindError::WrongKind {
expected: 5,
got: 1,
};
assert_eq!(err.to_string(), "expected kind 5, got 1");
let err = KindError::InvalidContent("bad json".into());
assert_eq!(err.to_string(), "invalid content for kind: bad json");
}