78 lines
1.7 KiB
Rust
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");
|
|
}
|