Skip to content

Commit 0ac2b35

Browse files
[mmap]: Derive PartialEq for Error enum
Derive PartialEq and update tests to check for equality on error cases. Signed-off-by: Alexandru Cihodaru <[email protected]>
1 parent 80f6dc8 commit 0ac2b35

File tree

1 file changed

+53
-103
lines changed

1 file changed

+53
-103
lines changed

Diff for: src/mmap.rs

+53-103
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ pub(crate) trait AsSlice {
7171
}
7272

7373
/// Errors that can occur when creating a memory map.
74-
#[derive(Debug)]
74+
#[derive(Debug, PartialEq)]
7575
pub enum Error {
7676
/// Adding the guest base address to the length of the underlying mapping resulted
7777
/// in an overflow.
@@ -775,43 +775,21 @@ mod tests {
775775
#[test]
776776
fn test_no_memory_region() {
777777
let regions_summary = [];
778-
779778
assert_eq!(
780-
format!(
781-
"{:?}",
782-
new_guest_memory_mmap(&regions_summary).err().unwrap()
783-
),
784-
format!("{:?}", Error::NoMemoryRegion)
779+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
780+
Error::NoMemoryRegion
785781
);
786-
787782
assert_eq!(
788-
format!(
789-
"{:?}",
790-
new_guest_memory_mmap_with_files(&regions_summary)
791-
.err()
792-
.unwrap()
793-
),
794-
format!("{:?}", Error::NoMemoryRegion)
783+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
784+
Error::NoMemoryRegion
795785
);
796-
797786
assert_eq!(
798-
format!(
799-
"{:?}",
800-
new_guest_memory_mmap_from_regions(&regions_summary)
801-
.err()
802-
.unwrap()
803-
),
804-
format!("{:?}", Error::NoMemoryRegion)
787+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
788+
Error::NoMemoryRegion
805789
);
806-
807790
assert_eq!(
808-
format!(
809-
"{:?}",
810-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
811-
.err()
812-
.unwrap()
813-
),
814-
format!("{:?}", Error::NoMemoryRegion)
791+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
792+
Error::NoMemoryRegion
815793
);
816794
}
817795

@@ -820,41 +798,20 @@ mod tests {
820798
let regions_summary = [(GuestAddress(0), 100_usize), (GuestAddress(99), 100_usize)];
821799

822800
assert_eq!(
823-
format!(
824-
"{:?}",
825-
new_guest_memory_mmap(&regions_summary).err().unwrap()
826-
),
827-
format!("{:?}", Error::MemoryRegionOverlap)
801+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
802+
Error::MemoryRegionOverlap
828803
);
829-
830804
assert_eq!(
831-
format!(
832-
"{:?}",
833-
new_guest_memory_mmap_with_files(&regions_summary)
834-
.err()
835-
.unwrap()
836-
),
837-
format!("{:?}", Error::MemoryRegionOverlap)
805+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
806+
Error::MemoryRegionOverlap
838807
);
839-
840808
assert_eq!(
841-
format!(
842-
"{:?}",
843-
new_guest_memory_mmap_from_regions(&regions_summary)
844-
.err()
845-
.unwrap()
846-
),
847-
format!("{:?}", Error::MemoryRegionOverlap)
809+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
810+
Error::MemoryRegionOverlap
848811
);
849-
850812
assert_eq!(
851-
format!(
852-
"{:?}",
853-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
854-
.err()
855-
.unwrap()
856-
),
857-
format!("{:?}", Error::MemoryRegionOverlap)
813+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
814+
Error::MemoryRegionOverlap
858815
);
859816
}
860817

@@ -863,41 +820,20 @@ mod tests {
863820
let regions_summary = [(GuestAddress(100), 100_usize), (GuestAddress(0), 100_usize)];
864821

865822
assert_eq!(
866-
format!(
867-
"{:?}",
868-
new_guest_memory_mmap(&regions_summary).err().unwrap()
869-
),
870-
format!("{:?}", Error::UnsortedMemoryRegions)
823+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
824+
Error::UnsortedMemoryRegions
871825
);
872-
873826
assert_eq!(
874-
format!(
875-
"{:?}",
876-
new_guest_memory_mmap_with_files(&regions_summary)
877-
.err()
878-
.unwrap()
879-
),
880-
format!("{:?}", Error::UnsortedMemoryRegions)
827+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
828+
Error::UnsortedMemoryRegions
881829
);
882-
883830
assert_eq!(
884-
format!(
885-
"{:?}",
886-
new_guest_memory_mmap_from_regions(&regions_summary)
887-
.err()
888-
.unwrap()
889-
),
890-
format!("{:?}", Error::UnsortedMemoryRegions)
831+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
832+
Error::UnsortedMemoryRegions
891833
);
892-
893834
assert_eq!(
894-
format!(
895-
"{:?}",
896-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
897-
.err()
898-
.unwrap()
899-
),
900-
format!("{:?}", Error::UnsortedMemoryRegions)
835+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
836+
Error::UnsortedMemoryRegions
901837
);
902838
}
903839

@@ -1054,7 +990,10 @@ mod tests {
1054990

1055991
let guest_mem_list = vec![guest_mem, guest_mem_backed_by_file];
1056992
for guest_mem in guest_mem_list.iter() {
1057-
assert!(guest_mem.get_host_address(GuestAddress(0x600)).is_err());
993+
assert_eq!(
994+
guest_mem.get_host_address(GuestAddress(0x600)).unwrap_err(),
995+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0x600))
996+
);
1058997
let ptr0 = guest_mem.get_host_address(GuestAddress(0x800)).unwrap();
1059998
let ptr1 = guest_mem.get_host_address(GuestAddress(0xa00)).unwrap();
1060999
assert_eq!(
@@ -1122,18 +1061,16 @@ mod tests {
11221061
let val1: u64 = 0xaa55_aa55_aa55_aa55;
11231062
let val2: u64 = 0x55aa_55aa_55aa_55aa;
11241063
assert_eq!(
1125-
format!("{:?}", gm.write_obj(val1, bad_addr).err().unwrap()),
1126-
format!("InvalidGuestAddress({:?})", bad_addr,)
1064+
gm.write_obj(val1, bad_addr).unwrap_err(),
1065+
guest_memory::Error::InvalidGuestAddress(bad_addr)
11271066
);
11281067
assert_eq!(
1129-
format!("{:?}", gm.write_obj(val1, bad_addr2).err().unwrap()),
1130-
format!(
1131-
"PartialBuffer {{ expected: {:?}, completed: {:?} }}",
1132-
mem::size_of::<u64>(),
1133-
max_addr.checked_offset_from(bad_addr2).unwrap()
1134-
)
1068+
gm.write_obj(val1, bad_addr2).unwrap_err(),
1069+
guest_memory::Error::PartialBuffer {
1070+
expected: mem::size_of::<u64>(),
1071+
completed: max_addr.checked_offset_from(bad_addr2).unwrap() as usize
1072+
}
11351073
);
1136-
11371074
gm.write_obj(val1, GuestAddress(0x500)).unwrap();
11381075
gm.write_obj(val2, GuestAddress(0x1000 + 32)).unwrap();
11391076
let num1: u64 = gm.read_obj(GuestAddress(0x500)).unwrap();
@@ -1435,7 +1372,11 @@ mod tests {
14351372
// Error case when slice_size is beyond the boundary.
14361373
let slice_addr = MemoryRegionAddress(0x300);
14371374
let slice_size = 0x200;
1438-
assert!(region.get_slice(slice_addr, slice_size).is_err());
1375+
1376+
assert_eq!(
1377+
region.get_slice(slice_addr, slice_size).unwrap_err(),
1378+
guest_memory::Error::InvalidBackendAddress
1379+
);
14391380
}
14401381

14411382
#[test]
@@ -1483,9 +1424,18 @@ mod tests {
14831424
.is_empty());
14841425

14851426
// Error cases, wrong size or base address.
1486-
assert!(guest_mem.get_slice(GuestAddress(0), 0x500).is_err());
1487-
assert!(guest_mem.get_slice(GuestAddress(0x600), 0x100).is_err());
1488-
assert!(guest_mem.get_slice(GuestAddress(0xc00), 0x100).is_err());
1427+
assert_eq!(
1428+
guest_mem.get_slice(GuestAddress(0), 0x500).unwrap_err(),
1429+
guest_memory::Error::InvalidBackendAddress
1430+
);
1431+
assert_eq!(
1432+
guest_mem.get_slice(GuestAddress(0x600), 0x100).unwrap_err(),
1433+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0x600))
1434+
);
1435+
assert_eq!(
1436+
guest_mem.get_slice(GuestAddress(0xc00), 0x100).unwrap_err(),
1437+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0xc00))
1438+
);
14891439
}
14901440

14911441
#[test]

0 commit comments

Comments
 (0)