use crate::persist::NoPersist;
use crate::policy::{AccessPolicy, AllowAllPolicy, NoPersistPolicy};
use crate::staged::PatchStagingBuffer;
use crate::storage::ShadowStorage;
use crate::table::ShadowTable;
pub type TestTable = ShadowTable<64, 16, 4>;
pub type TestStorage = ShadowStorage<64, 16, 4, AllowAllPolicy, NoPersistPolicy, NoPersist, ()>;
pub type TestStage = PatchStagingBuffer<64, 8>;
pub struct DenyAllPolicy;
impl AccessPolicy for DenyAllPolicy {
fn can_read(&self, _addr: u16, _len: usize) -> bool {
false
}
fn can_write(&self, _addr: u16, _len: usize) -> bool {
false
}
}
pub struct ReadOnlyBelow32;
impl AccessPolicy for ReadOnlyBelow32 {
fn can_read(&self, _addr: u16, _len: usize) -> bool {
true
}
fn can_write(&self, addr: u16, len: usize) -> bool {
addr >= 32 && (addr as usize + len) <= 64
}
}
pub fn test_storage() -> TestStorage {
ShadowStorage::new(
AllowAllPolicy::default(),
NoPersistPolicy::default(),
NoPersist,
)
}