mod tests_common;
use rand::random;
use tests_common::*;
use ext2::OpenOptions;
use std::fs::File;
use std::io::{Read, Seek, SeekFrom, Write};
const NB_TESTS: usize = 2;
#[test]
fn read_write() {
fn read_write_of_size(size: usize) {
let filename = format!("/simple_file-{}", size);
let mut ext2 = new_ext2_instance::<File>();
let mut f = OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open(&filename, ext2.clone())
.unwrap();
let v: Vec<u8> = (0..(size)).map(|_| random::<u8>()).collect();
let count = f.write(&v).unwrap();
assert_eq!(count, size);
let mut buf = vec![42; size];
f.seek(SeekFrom::Start(0)).unwrap();
let count = f.read(&mut buf).unwrap();
assert_eq!(count, size);
assert_eq!(buf[..], v[..]);
ext2.remove_file(filename).unwrap();
}
let sizes: Vec<usize> = (0..NB_TESTS)
.map(|_| random::<usize>() % DOUBLY_MAX_SIZE)
.collect();
let sum: usize = sizes.iter().sum();
create_disk(sum + 1024 * 1024 * 10);
for size in sizes {
read_write_of_size(size);
}
}