Nothing to see here, move along meow
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 2.3 kB View raw
1use lancer_core::ring::*; 2use zerocopy::{FromBytes, IntoBytes}; 3 4#[test] 5fn submission_entry_size_32() { 6 assert_eq!(core::mem::size_of::<SubmissionEntry>(), 32); 7} 8 9#[test] 10fn completion_entry_size_24() { 11 assert_eq!(core::mem::size_of::<CompletionEntry>(), 24); 12} 13 14#[test] 15fn ring_total_fits_in_page() { 16 assert!(ring_total_size() <= 4096); 17} 18 19#[test] 20fn sq_offset_after_header() { 21 assert_eq!(ring_sq_offset(), core::mem::size_of::<RingHeader>()); 22} 23 24#[test] 25fn cq_offset_after_sq() { 26 let expected = 27 ring_sq_offset() + (MAX_SQ_ENTRIES as usize) * core::mem::size_of::<SubmissionEntry>(); 28 assert_eq!(ring_cq_offset(), expected); 29} 30 31#[test] 32fn zeroed_entries_all_zero() { 33 let sq = SubmissionEntry::zeroed(); 34 assert_eq!(sq.arg0, 0); 35 assert_eq!(sq.arg1, 0); 36 assert_eq!(sq.arg2, 0); 37 assert_eq!(sq.user_data, 0); 38 assert_eq!(sq.cap_slot, 0); 39 assert_eq!(sq.opcode, 0); 40 assert_eq!(sq.flags, 0); 41 42 let cq = CompletionEntry::zeroed(); 43 assert_eq!(cq.result, 0); 44 assert_eq!(cq.user_data, 0); 45 assert_eq!(cq.extra, 0); 46} 47 48mod zerocopy_roundtrip { 49 use super::*; 50 use proptest::prelude::*; 51 52 proptest! { 53 #[test] 54 fn submission_entry_from_bytes_roundtrip(bytes in proptest::collection::vec(any::<u8>(), 32)) { 55 let entry = SubmissionEntry::read_from_bytes(&bytes).expect("32 bytes must parse"); 56 let out = entry.as_bytes(); 57 prop_assert_eq!(out, &bytes[..]); 58 } 59 60 #[test] 61 fn completion_entry_from_bytes_roundtrip(bytes in proptest::collection::vec(any::<u8>(), 24)) { 62 let entry = CompletionEntry::read_from_bytes(&bytes).expect("24 bytes must parse"); 63 let out = entry.as_bytes(); 64 prop_assert_eq!(out, &bytes[..]); 65 } 66 67 #[test] 68 fn submission_entry_short_buffer_fails(len in 0..32usize) { 69 let bytes: Vec<u8> = (0..len).map(|i| i as u8).collect(); 70 prop_assert!(SubmissionEntry::read_from_bytes(&bytes).is_err()); 71 } 72 73 #[test] 74 fn completion_entry_short_buffer_fails(len in 0..24usize) { 75 let bytes: Vec<u8> = (0..len).map(|i| i as u8).collect(); 76 prop_assert!(CompletionEntry::read_from_bytes(&bytes).is_err()); 77 } 78 } 79}