Factor test tools between store and fragment
Those need the driver to deal with the fact that the store is stateful. Those tests can't be moved to the test suite because they use private functions.
This commit is contained in:
@@ -1301,71 +1301,15 @@ fn is_write_needed(source: &[u8], target: &[u8]) -> StoreResult<bool> {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::BufferOptions;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct Config {
|
||||
word_size: usize,
|
||||
page_size: usize,
|
||||
num_pages: usize,
|
||||
max_word_writes: usize,
|
||||
max_page_erases: usize,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
fn new_driver(&self) -> StoreDriverOff {
|
||||
let options = BufferOptions {
|
||||
word_size: self.word_size,
|
||||
page_size: self.page_size,
|
||||
max_word_writes: self.max_word_writes,
|
||||
max_page_erases: self.max_page_erases,
|
||||
strict_mode: true,
|
||||
};
|
||||
StoreDriverOff::new(options, self.num_pages)
|
||||
}
|
||||
}
|
||||
|
||||
const MINIMAL: Config = Config {
|
||||
word_size: 4,
|
||||
page_size: 64,
|
||||
num_pages: 5,
|
||||
max_word_writes: 2,
|
||||
max_page_erases: 9,
|
||||
};
|
||||
|
||||
const NORDIC: Config = Config {
|
||||
word_size: 4,
|
||||
page_size: 0x1000,
|
||||
num_pages: 20,
|
||||
max_word_writes: 2,
|
||||
max_page_erases: 10000,
|
||||
};
|
||||
|
||||
const TITAN: Config = Config {
|
||||
word_size: 4,
|
||||
page_size: 0x800,
|
||||
num_pages: 10,
|
||||
max_word_writes: 2,
|
||||
max_page_erases: 10000,
|
||||
};
|
||||
use crate::test::MINIMAL;
|
||||
|
||||
#[test]
|
||||
fn nordic_capacity() {
|
||||
let driver = NORDIC.new_driver().power_on().unwrap();
|
||||
assert_eq!(driver.model().capacity().total, 19123);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn titan_capacity() {
|
||||
let driver = TITAN.new_driver().power_on().unwrap();
|
||||
assert_eq!(driver.model().capacity().total, 4315);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn minimal_virt_page_size() {
|
||||
// Make sure a virtual page has 14 words. We use this property in the other tests below to
|
||||
// know whether entries are spanning, starting, and ending pages.
|
||||
assert_eq!(MINIMAL.new_driver().model().format().virt_page_size(), 14);
|
||||
fn is_write_needed_ok() {
|
||||
assert_eq!(is_write_needed(&[], &[]), Ok(false));
|
||||
assert_eq!(is_write_needed(&[0], &[0]), Ok(false));
|
||||
assert_eq!(is_write_needed(&[0], &[1]), Err(StoreError::InvalidStorage));
|
||||
assert_eq!(is_write_needed(&[1], &[0]), Ok(true));
|
||||
assert_eq!(is_write_needed(&[1], &[1]), Ok(false));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user