extern crate mmap_storage;
use std::io::Write;
use std::fs;
use mmap_storage::file::Storage;
#[test]
fn test_it_works() {
const STORAGE_PATH: &'static str = "test_file.bin";
let _ = fs::remove_file(STORAGE_PATH);
{
let mut storage = Storage::open(STORAGE_PATH).expect("To create storage");
assert_eq!(storage.capacity(), 1);
storage.resize(1).expect("Reduce file size");
assert_eq!(storage.capacity(), 1);
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1];
storage.write(&data).expect("To extend with 10 bytes");
assert_eq!(storage.capacity(), data.len());
assert_eq!(storage.as_slice(), data);
storage.write_all(&data).expect("To extend with another 10 bytes");
assert_eq!(storage.capacity(), data.len() + data.len());
assert_eq!(storage.as_slice()[..data.len()], data);
assert_eq!(storage.as_slice()[data.len()..], data);
storage.resize(data.len()).expect("To resize to 10 bytes");
assert_eq!(storage.capacity(), data.len());
let data = [10, 9, 8, 1, 2, 3, 4, 5, 6, 7];
storage.copy_from_slice(&data);
assert_eq!(storage.capacity(), data.len());
assert_eq!(storage.as_slice(), data);
let data = [2, 3, 4, 5, 6, 7];
storage.put_data(&data).expect("To put data");
assert_eq!(storage.capacity(), data.len());
assert_eq!(storage.as_slice(), data);
let vec_data = storage.to_vec();
assert_eq!(vec_data, data);
drop(storage);
let storage = Storage::open(STORAGE_PATH).expect("To open storage");
assert_eq!(storage.capacity(), data.len());
assert_eq!(storage.as_slice(), data);
}
let _ = fs::remove_file(STORAGE_PATH);
}