69 lines
2.4 KiB
Rust
69 lines
2.4 KiB
Rust
//! Unit tests for the `sizing` module.
|
|
|
|
use ontoref_compute::sizing::{from_hetzner_name, hetzner_tier, tier_spec, SizeTier};
|
|
|
|
#[test]
|
|
fn next_tier_chain_full() {
|
|
assert_eq!(SizeTier::XS.next(), Some(SizeTier::S));
|
|
assert_eq!(SizeTier::S.next(), Some(SizeTier::M));
|
|
assert_eq!(SizeTier::M.next(), Some(SizeTier::L));
|
|
assert_eq!(SizeTier::L.next(), None);
|
|
}
|
|
|
|
#[test]
|
|
fn hetzner_tier_names_match_cax_line() {
|
|
assert_eq!(hetzner_tier(SizeTier::XS), "cax11");
|
|
assert_eq!(hetzner_tier(SizeTier::S), "cax21");
|
|
assert_eq!(hetzner_tier(SizeTier::M), "cax31");
|
|
assert_eq!(hetzner_tier(SizeTier::L), "cax41");
|
|
}
|
|
|
|
#[test]
|
|
fn from_hetzner_name_parses_all_known() {
|
|
assert_eq!(from_hetzner_name("cax11"), Some(SizeTier::XS));
|
|
assert_eq!(from_hetzner_name("cax21"), Some(SizeTier::S));
|
|
assert_eq!(from_hetzner_name("cax31"), Some(SizeTier::M));
|
|
assert_eq!(from_hetzner_name("cax41"), Some(SizeTier::L));
|
|
}
|
|
|
|
#[test]
|
|
fn from_hetzner_name_unknown_returns_none() {
|
|
assert_eq!(from_hetzner_name("cx11"), None);
|
|
assert_eq!(from_hetzner_name("cax99"), None);
|
|
assert_eq!(from_hetzner_name(""), None);
|
|
}
|
|
|
|
#[test]
|
|
fn tier_spec_vcpus_and_memory_are_ordered() {
|
|
let xs = tier_spec(SizeTier::XS);
|
|
let s = tier_spec(SizeTier::S);
|
|
let m = tier_spec(SizeTier::M);
|
|
let l = tier_spec(SizeTier::L);
|
|
|
|
assert!(xs.vcpus < s.vcpus, "XS vcpus < S vcpus");
|
|
assert!(s.vcpus < m.vcpus, "S vcpus < M vcpus");
|
|
assert!(m.vcpus < l.vcpus, "M vcpus < L vcpus");
|
|
|
|
assert!(xs.memory_mb < s.memory_mb, "XS mem < S mem");
|
|
assert!(s.memory_mb < m.memory_mb, "S mem < M mem");
|
|
assert!(m.memory_mb < l.memory_mb, "M mem < L mem");
|
|
}
|
|
|
|
#[test]
|
|
fn from_cpu_memory_finds_smallest_fitting_tier() {
|
|
assert_eq!(SizeTier::from_cpu_memory(1, 512), Some(SizeTier::XS));
|
|
assert_eq!(SizeTier::from_cpu_memory(2, 4_096), Some(SizeTier::XS));
|
|
assert_eq!(SizeTier::from_cpu_memory(3, 4_096), Some(SizeTier::S));
|
|
assert_eq!(SizeTier::from_cpu_memory(8, 16_384), Some(SizeTier::M));
|
|
assert_eq!(SizeTier::from_cpu_memory(16, 32_768), Some(SizeTier::L));
|
|
// Exceeds largest tier.
|
|
assert_eq!(SizeTier::from_cpu_memory(32, 64_000), None);
|
|
}
|
|
|
|
#[test]
|
|
fn hetzner_roundtrip_via_free_fns() {
|
|
for tier in [SizeTier::XS, SizeTier::S, SizeTier::M, SizeTier::L] {
|
|
let name = hetzner_tier(tier);
|
|
assert_eq!(from_hetzner_name(name), Some(tier));
|
|
}
|
|
}
|