mod common;
use fluxfox::{diskimage::RwSectorScope, DiskCh, DiskChs, DiskImage, DiskImageError};
#[test]
fn test_bitstream_write() {
use std::io::Cursor;
let disk_image_buf = std::fs::read(".\\tests\\images\\Transylvania.86f").unwrap();
let mut in_buffer = Cursor::new(disk_image_buf);
let mut f86_image = DiskImage::load(&mut in_buffer, None, None, None).unwrap();
println!("Loaded 86F image of geometry {}...", f86_image.image_format().geometry);
let mut read_sector_result = match f86_image.read_sector(
DiskCh::new(0, 0),
DiskChs::new(0, 0, 1),
None,
RwSectorScope::DataOnly,
false,
) {
Ok(result) => result,
Err(DiskImageError::DataError) => {
panic!("Data error reading sector.");
}
Err(e) => panic!("Error reading sector: {:?}", e),
};
let sector_data = read_sector_result.read_buf;
println!(
"Read sector data: {:02X?} of length {}",
§or_data[0..8],
sector_data.len()
);
assert_eq!(sector_data.len(), 512);
let original_data = sector_data.clone();
let _write_sector_result = match f86_image.write_sector(
DiskCh::new(0, 0),
DiskChs::new(0, 0, 1),
None,
§or_data,
RwSectorScope::DataOnly,
false,
false,
) {
Ok(result) => result,
Err(DiskImageError::DataError) => {
panic!("Data error writing sector.");
}
Err(e) => panic!("Error writing sector: {:?}", e),
};
read_sector_result = match f86_image.read_sector(
DiskCh::new(0, 0),
DiskChs::new(0, 0, 1),
None,
RwSectorScope::DataOnly,
false,
) {
Ok(result) => result,
Err(DiskImageError::DataError) => {
panic!("Data error reading sector.");
}
Err(e) => panic!("Error reading sector: {:?}", e),
};
let sector_data = read_sector_result.read_buf;
if sector_data != original_data {
println!("Original data: {:02X?}", &original_data[0..8]);
println!("Post-write data: {:02X?}", §or_data[0..8]);
panic!("Data read back from disk does not match written data!");
}
}