Skip to content

Commit 13f27f1

Browse files
committed
Update tests
1 parent c2b701f commit 13f27f1

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

‎tests/unit/out/unsafe/union_basic.rs‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,23 @@ unsafe fn main_0() -> i32 {
4141
assert!(((u.i) == (42)));
4242
u.f = 3.140000105E+0;
4343
assert!(((u.f) == (3.140000105E+0)));
44+
let mut buf: [u8; 4] = [0_u8; 4];
45+
{
46+
let byte_0 = (buf.as_mut_ptr() as *mut ::libc::c_void) as *mut u8;
47+
for offset in 0..::std::mem::size_of::<[u8; 4]>() {
48+
*byte_0.offset(offset as isize) = 0 as u8;
49+
}
50+
(buf.as_mut_ptr() as *mut ::libc::c_void)
51+
};
52+
let mut ru: *mut basic = (buf.as_mut_ptr() as *mut basic);
53+
let mut pi: *mut i32 = (&mut (*ru).i as *mut i32);
54+
let mut pf: *mut f32 = (&mut (*ru).f as *mut f32);
55+
(*ru).i = 7;
56+
assert!(((*pi) == (7)));
57+
(*pi) = 1065353216;
58+
assert!((((*ru).i) == (1065353216)));
59+
assert!(((*pf) == (1.0E+0)));
60+
assert!(((buf[(3) as usize] as i32) == (63)));
4461
return 0;
4562
}
4663
pub unsafe fn __cpp2rust_init_globals() {}

‎tests/unit/union_basic.cpp‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <assert.h>
2+
#include <string.h>
23

34
union basic {
45
int i;
@@ -18,5 +19,19 @@ int main(void) {
1819
u.f = 3.14f;
1920
assert(u.f == 3.14f);
2021

22+
unsigned char buf[sizeof(union basic)];
23+
memset(buf, 0, sizeof(buf));
24+
union basic *ru = reinterpret_cast<union basic *>(buf);
25+
int *pi = &ru->i;
26+
float *pf = &ru->f;
27+
28+
ru->i = 7;
29+
assert(*pi == 7);
30+
31+
*pi = 0x3F800000;
32+
assert(ru->i == 0x3F800000);
33+
assert(*pf == 1.0f);
34+
assert(buf[3] == 0x3F);
35+
2136
return 0;
2237
}

0 commit comments

Comments
 (0)