@@ -181,3 +181,54 @@ impl<M: GuestMemory> IoMemory for M {
181
181
Some ( self )
182
182
}
183
183
}
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