]> git.lizzy.rs Git - rust.git/blob - library/std/src/sys/sgx/abi/usercalls/tests.rs
cbf7d7d54f7a2f0dd475261a1a7dad74c84a4df4
[rust.git] / library / std / src / sys / sgx / abi / usercalls / tests.rs
1 use super::alloc::copy_to_userspace;
2 use super::alloc::User;
3
4 #[test]
5 fn test_copy_function() {
6     let mut src = [0u8; 100];
7     let mut dst = User::<[u8]>::uninitialized(100);
8
9     for i in 0..src.len() {
10         src[i] = i as _;
11     }
12
13     for size in 0..48 {
14         // For all possible alignment
15         for offset in 0..8 {
16             // overwrite complete dst
17             dst.copy_from_enclave(&[0u8; 100]);
18
19             // Copy src[0..size] to dst + offset
20             unsafe { copy_to_userspace(src.as_ptr(), dst.as_mut_ptr().offset(offset), size) };
21
22             // Verify copy
23             for byte in 0..size {
24                 unsafe {
25                     assert_eq!(*dst.as_ptr().offset(offset + byte as isize), src[byte as usize]);
26                 }
27             }
28         }
29     }
30 }