Skip to content

Commit 606840f

Browse files
committed
resource: derive Debug for resource related structs
Add #[derive(Debug)] for resource related data structs, so we could use assert!() and assert_eq!() etc in unit test cases. Signed-off-by: Liu Jiang <[email protected]>
1 parent 415a712 commit 606840f

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

coverage_config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"coverage_score": 79.9,
2+
"coverage_score": 79.8,
33
"exclude_path": "",
44
"crate_features": ""
55
}

src/resources.rs

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::ops::Deref;
1616
use std::{u16, u32, u64};
1717

1818
/// Enumeration describing a device's resource constraints.
19+
#[derive(Copy, Clone, Debug, PartialEq)]
1920
pub enum ResourceConstraint {
2021
/// Constraint for an IO Port address range.
2122
PioAddress {
@@ -109,7 +110,7 @@ impl ResourceConstraint {
109110
}
110111

111112
/// Type of Message Singaled Interrupt
112-
#[derive(Copy, Clone, PartialEq)]
113+
#[derive(Copy, Clone, Debug, PartialEq)]
113114
pub enum MsiIrqType {
114115
/// PCI MSI IRQ numbers.
115116
PciMsi,
@@ -121,7 +122,7 @@ pub enum MsiIrqType {
121122

122123
/// Enumeration for device resources.
123124
#[allow(missing_docs)]
124-
#[derive(Clone)]
125+
#[derive(Clone, Debug, PartialEq)]
125126
pub enum Resource {
126127
/// IO Port address range.
127128
PioAddressRange { base: u16, size: u16 },
@@ -142,7 +143,7 @@ pub enum Resource {
142143
}
143144

144145
/// Newtype to store a set of device resources.
145-
#[derive(Default, Clone)]
146+
#[derive(Clone, Debug, Default)]
146147
pub struct DeviceResources(Vec<Resource>);
147148

148149
impl DeviceResources {
@@ -278,12 +279,16 @@ mod tests {
278279
size: PIO_ADDRESS_SIZE,
279280
};
280281
let mut resource = DeviceResources::new();
281-
resource.append(entry);
282+
resource.append(entry.clone());
283+
assert_eq!(entry, resource[0]);
284+
282285
let entry = Resource::MmioAddressRange {
283286
base: MMIO_ADDRESS_BASE,
284287
size: MMIO_ADDRESS_SIZE,
285288
};
286-
resource.append(entry);
289+
resource.append(entry.clone());
290+
assert_eq!(entry, resource[1]);
291+
287292
let entry = Resource::LegacyIrq(LEGACY_IRQ);
288293
resource.append(entry);
289294
let entry = Resource::MsiIrq {
@@ -319,6 +324,25 @@ mod tests {
319324
resources.get_pio_address_ranges()[0].0 == PIO_ADDRESS_BASE
320325
&& resources.get_pio_address_ranges()[0].1 == PIO_ADDRESS_SIZE
321326
);
327+
assert_eq!(
328+
resources[0],
329+
Resource::PioAddressRange {
330+
base: PIO_ADDRESS_BASE,
331+
size: PIO_ADDRESS_SIZE,
332+
}
333+
);
334+
assert_ne!(resources[0], resources[1]);
335+
336+
let resources2 = resources.clone();
337+
assert_eq!(resources.len(), resources2.len());
338+
drop(resources);
339+
assert_eq!(
340+
resources2[0],
341+
Resource::PioAddressRange {
342+
base: PIO_ADDRESS_BASE,
343+
size: PIO_ADDRESS_SIZE,
344+
}
345+
);
322346
}
323347

324348
#[test]
@@ -383,6 +407,13 @@ mod tests {
383407

384408
#[test]
385409
fn test_resource_constraint() {
410+
let pio = ResourceConstraint::new_pio(2);
411+
let pio2 = pio.clone();
412+
let mmio = ResourceConstraint::new_mmio(0x1000);
413+
assert_eq!(pio, pio2);
414+
drop(pio2);
415+
assert_ne!(pio, mmio);
416+
386417
if let ResourceConstraint::PioAddress { range, align, size } =
387418
ResourceConstraint::new_pio(2)
388419
{

0 commit comments

Comments
 (0)