use ach_util::{AtomicMemoryRing, MemoryRing, MemoryState}; #[test] fn test() { assert!(AtomicMemoryRing::is_lock_free()); let mut cycle = MemoryRing::new(0, MemoryState::Uninitialized); assert_eq!(cycle.cycle(), 0); assert!(cycle.state().is_uninitialized()); cycle.set_cycle(1); assert_eq!(cycle.cycle(), 1); cycle.set_cycle(MemoryRing::max_cycle()); assert_eq!(cycle.cycle(), 0); cycle.set_state(MemoryState::Initialized); assert!(cycle.state().is_initialized()); cycle.set_cycle(MemoryRing::max_cycle() - 1); cycle.set_state(MemoryState::Erasing); let cycle_next = cycle.next(); assert_eq!(cycle_next.cycle(), 0); assert!(cycle_next.state().is_uninitialized()); assert!(cycle_next > cycle); assert!( MemoryRing::new(0, MemoryState::Uninitialized) < MemoryRing::new(0, MemoryState::Initializing) ); assert!( MemoryRing::new(0, MemoryState::Initializing) < MemoryRing::new(0, MemoryState::Initialized) ); assert!( MemoryRing::new(0, MemoryState::Initialized) < MemoryRing::new(0, MemoryState::Erasing) ); assert!( MemoryRing::new(0, MemoryState::Erasing) < MemoryRing::new(1, MemoryState::Uninitialized) ); }