use crate::io::dwg::dwg_stream_writers::DwgBitWriter;
use crate::io::dwg::dwg_version::DwgVersion;
use crate::io::dwg::file_headers::section_definition::{start_sentinels, end_sentinels};
use crate::types::DxfVersion;
pub fn write_preview(version: DxfVersion) -> Vec<u8> {
let dwg_version = DwgVersion::from_dxf_version(version)
.unwrap_or(DwgVersion::AC15);
let mut writer = DwgBitWriter::new(dwg_version, version);
writer.write_bytes(&start_sentinels::PREVIEW);
writer.write_raw_long(1);
writer.write_byte(0);
writer.write_bytes(&end_sentinels::PREVIEW);
writer.into_bytes()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_write_empty_preview() {
let data = write_preview(DxfVersion::AC1015);
assert_eq!(data.len(), 37);
assert_eq!(&data[0..16], &start_sentinels::PREVIEW);
assert_eq!(&data[16..20], &[1, 0, 0, 0]);
assert_eq!(data[20], 0);
assert_eq!(&data[21..37], &end_sentinels::PREVIEW);
}
#[test]
fn test_preview_sentinels_are_complement() {
for i in 0..16 {
assert_eq!(
start_sentinels::PREVIEW[i] ^ end_sentinels::PREVIEW[i],
0xFF,
);
}
}
}