nes_rust_slim 0.2.0

NES emulator written in Rust
Documentation
pub struct Memory {
    pub data: Vec<u8>,
}

impl Memory {
    pub fn new(vec: Vec<u8>) -> Self {
        Memory { data: vec }
    }

    pub fn clear(&mut self) {
        for i in 0..self.capacity() {
            self.data[i as usize] = 0;
        }
    }

    pub fn capacity(&self) -> u32 {
        self.data.len() as u32
    }

    pub fn load(&self, address: u32) -> u8 {
        self.data[address as usize]
    }

    pub fn store(&mut self, address: u32, value: u8) {
        self.data[address as usize] = value;
    }
}

#[cfg(test)]
mod tests_memory {
    use super::*;

    #[test]
    fn initialize() {
        let m = Memory::new(vec![0; 1]);
        assert_eq!(0, m.load(0));
    }

    #[test]
    fn clear() {
        let mut m = Memory::new(vec![0; 16]);
        for i in 0..m.capacity() {
            m.store(i, 1);
        }
        m.clear();
        for i in 0..m.capacity() {
            assert_eq!(0, m.load(i));
        }
    }

    #[test]
    fn capacity() {
        let m = Memory::new(vec![0; 16]);
        assert_eq!(0x10, m.capacity());
    }

    #[test]
    fn store_and_load() {
        let mut m = Memory::new(vec![0; 16]);
        assert_eq!(0, m.load(1));
        m.store(1, 1);
        assert_eq!(1, m.load(1));
        assert_eq!(0, m.load(2));
    }
}