use bbg::storage::dim;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(u8)]
pub enum Namespace {
Particles = dim::PARTICLES,
AxonsOut = dim::AXONS_OUT,
AxonsIn = dim::AXONS_IN,
Neurons = dim::NEURONS,
Locations = dim::LOCATIONS,
Coins = dim::COINS,
Cards = dim::CARDS,
Files = dim::FILES,
Time = dim::TIME,
Signals = dim::SIGNALS,
Commitments = dim::COMMITMENTS,
Nullifiers = dim::NULLIFIERS,
Ephemeral = dim::EPHEMERAL,
}
impl Namespace {
pub const fn as_u8(self) -> u8 {
self as u8
}
pub const fn is_authenticated(self) -> bool {
!matches!(self, Namespace::Ephemeral)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn dim_constants_align() {
assert_eq!(Namespace::Particles.as_u8(), 0);
assert_eq!(Namespace::Ephemeral.as_u8(), 12);
}
#[test]
fn ephemeral_is_unauthenticated() {
assert!(!Namespace::Ephemeral.is_authenticated());
assert!(Namespace::Particles.is_authenticated());
assert!(Namespace::Coins.is_authenticated());
}
}