#![allow(clippy::unwrap_used, clippy::expect_used)]
use prism::pipeline::{validate_constrained_type, ConstrainedTypeShape};
use prism::std_types::FixedSites;
#[test]
fn site_count_is_const_evaluable() {
const N32: usize = <FixedSites<32> as ConstrainedTypeShape>::SITE_COUNT;
const N80: usize = <FixedSites<80> as ConstrainedTypeShape>::SITE_COUNT;
const N1: usize = <FixedSites<1> as ConstrainedTypeShape>::SITE_COUNT;
const EMPTY_CONSTRAINTS: usize = <FixedSites<32> as ConstrainedTypeShape>::CONSTRAINTS.len();
assert_eq!(N32, 32);
assert_eq!(N80, 80);
assert_eq!(N1, 1);
assert_eq!(EMPTY_CONSTRAINTS, 0);
}
#[test]
fn iri_is_shared_across_instantiations() {
assert_eq!(
<FixedSites<1> as ConstrainedTypeShape>::IRI,
<FixedSites<1024> as ConstrainedTypeShape>::IRI,
"IRI must identify the shape family, not the instance",
);
assert_eq!(
<FixedSites<32> as ConstrainedTypeShape>::IRI,
"https://uor.foundation/type/ConstrainedType",
"per ADR-017 closure: every empty-constraint stdlib type shares \
the foundation's `ConstrainedType` class IRI",
);
}
#[test]
fn validate_admits_a_spread_of_n() {
validate_constrained_type(FixedSites::<32>).expect("FixedSites<32> admissible");
validate_constrained_type(FixedSites::<80>).expect("FixedSites<80> admissible");
validate_constrained_type(FixedSites::<1>).expect("FixedSites<1> admissible");
validate_constrained_type(FixedSites::<256>).expect("FixedSites<256> admissible");
}
#[test]
fn distinct_n_resolve_to_distinct_site_counts() {
let n_a = <FixedSites<32> as ConstrainedTypeShape>::SITE_COUNT;
let n_b = <FixedSites<33> as ConstrainedTypeShape>::SITE_COUNT;
assert_ne!(n_a, n_b);
assert_eq!(
<FixedSites<32> as ConstrainedTypeShape>::IRI,
<FixedSites<33> as ConstrainedTypeShape>::IRI,
);
}