Skip to content

Commit fbfc3b2

Browse files
committed
Add tests for IOMMU functionality
Signed-off-by: Hanna Czenczek <[email protected]>
1 parent fc57744 commit fbfc3b2

File tree

3 files changed

+831
-0
lines changed

3 files changed

+831
-0
lines changed

src/io_memory.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,54 @@ impl<M: GuestMemory> IoMemory for M {
181181
Some(self)
182182
}
183183
}
184+
185+
#[cfg(test)]
186+
mod tests {
187+
use super::Permissions;
188+
189+
// Note that `IoMemory` is tested primarily in src/iommu.rs via `IommuMemory`.
190+
191+
/// Test `Permissions & Permissions`.
192+
#[test]
193+
fn test_perm_and() {
194+
use Permissions::*;
195+
196+
for p in [No, Read, Write, ReadWrite] {
197+
assert_eq!(p & p, p);
198+
}
199+
for p1 in [No, Read, Write, ReadWrite] {
200+
for p2 in [No, Read, Write, ReadWrite] {
201+
assert_eq!(p1 & p2, p2 & p1);
202+
}
203+
}
204+
for p in [No, Read, Write, ReadWrite] {
205+
assert_eq!(No & p, No);
206+
}
207+
for p in [No, Read, Write, ReadWrite] {
208+
assert_eq!(ReadWrite & p, p);
209+
}
210+
assert_eq!(Read & Write, No);
211+
}
212+
213+
/// Test `Permissions | Permissions`.
214+
#[test]
215+
fn test_perm_or() {
216+
use Permissions::*;
217+
218+
for p in [No, Read, Write, ReadWrite] {
219+
assert_eq!(p | p, p);
220+
}
221+
for p1 in [No, Read, Write, ReadWrite] {
222+
for p2 in [No, Read, Write, ReadWrite] {
223+
assert_eq!(p1 | p2, p2 | p1);
224+
}
225+
}
226+
for p in [No, Read, Write, ReadWrite] {
227+
assert_eq!(No | p, p);
228+
}
229+
for p in [No, Read, Write, ReadWrite] {
230+
assert_eq!(ReadWrite | p, ReadWrite);
231+
}
232+
assert_eq!(Read | Write, ReadWrite);
233+
}
234+
}

0 commit comments

Comments
 (0)