| 6 | |
| 7 | #[test] |
| 8 | fn test_binary_reader_seek() { |
| 9 | let _session = Session::new().expect("Failed to initialize session"); |
| 10 | let out_dir = env!("OUT_DIR").parse::<PathBuf>().unwrap(); |
| 11 | let view = binaryninja::load(out_dir.join("atox.obj")).expect("Failed to create view"); |
| 12 | let mut reader = BinaryReader::new(&view); |
| 13 | let end_offset = view.len(); |
| 14 | |
| 15 | // Test seeking to a specific position |
| 16 | reader |
| 17 | .seek(SeekFrom::Start(0)) |
| 18 | .expect("Failed to seek to start"); |
| 19 | assert_eq!(reader.offset(), 0, "Reader failed to seek to the start"); |
| 20 | |
| 21 | reader |
| 22 | .seek(SeekFrom::End(0)) |
| 23 | .expect("Failed to seek to end"); |
| 24 | assert_eq!( |
| 25 | reader.offset(), |
| 26 | end_offset, |
| 27 | "Reader failed to seek to the end" |
| 28 | ); |
| 29 | |
| 30 | // Test relative seeking |
| 31 | reader |
| 32 | .seek(SeekFrom::Start(10)) |
| 33 | .expect("Failed to seek to position 10"); |
| 34 | assert_eq!(reader.offset(), 10, "Reader failed to seek to position 10"); |
| 35 | |
| 36 | reader |
| 37 | .seek(SeekFrom::Current(-5)) |
| 38 | .expect("Failed to perform relative seek"); |
| 39 | assert_eq!( |
| 40 | reader.offset(), |
| 41 | 5, |
| 42 | "Reader failed to perform relative seek correctly" |
| 43 | ); |
| 44 | } |
| 45 | |
| 46 | #[test] |
| 47 | fn test_binary_reader_read() { |