about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDevon Hollowood <devonhollowood@gmail.com>2016-03-07 12:26:00 -0800
committerDevon Hollowood <devonhollowood@gmail.com>2016-03-07 12:26:00 -0800
commitb5be09564188b39aa2fbc73b057c1e35e99ee99f (patch)
tree5ff26f26300841497cbfae158fb657f39b2da054
parentffe5162cd1605228a1dae798953a5ea6b8f2e97f (diff)
downloadrust-b5be09564188b39aa2fbc73b057c1e35e99ee99f.tar.gz
rust-b5be09564188b39aa2fbc73b057c1e35e99ee99f.zip
Improve tests for #26114
-rw-r--r--src/test/run-pass/enum-discrim-manual-sizing.rs27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/test/run-pass/enum-discrim-manual-sizing.rs b/src/test/run-pass/enum-discrim-manual-sizing.rs
index 377f52a62c5..3bbc107e0b9 100644
--- a/src/test/run-pass/enum-discrim-manual-sizing.rs
+++ b/src/test/run-pass/enum-discrim-manual-sizing.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 
-use std::mem::size_of;
+use std::mem::{size_of, align_of};
 
 #[repr(i8)]
 enum Ei8 {
@@ -71,14 +71,20 @@ enum Euint {
     Buint = 1
 }
 
+#[repr(u8)]
+enum Eu8NonCLike<T> {
+    _None,
+    _Some(T),
+}
+
 #[repr(i64)]
-enum Ei64_non_c_like<T> {
+enum Ei64NonCLike<T> {
     _None,
     _Some(T),
 }
 
 #[repr(u64)]
-enum Eu64_non_c_like<T> {
+enum Eu64NonCLike<T> {
     _None,
     _Some(T),
 }
@@ -94,6 +100,17 @@ pub fn main() {
     assert_eq!(size_of::<Eu64>(), 8);
     assert_eq!(size_of::<Eint>(), size_of::<isize>());
     assert_eq!(size_of::<Euint>(), size_of::<usize>());
-    assert_eq!(size_of::<Ei64_non_c_like<()>>(), 8);
-    assert_eq!(size_of::<Eu64_non_c_like<()>>(), 8);
+    assert_eq!(size_of::<Eu8NonCLike<()>>(), 1);
+    assert_eq!(size_of::<Ei64NonCLike<()>>(), 8);
+    assert_eq!(size_of::<Eu64NonCLike<()>>(), 8);
+    let u8_expected_size = round_up(9, align_of::<Eu64NonCLike<u8>>());
+    assert_eq!(size_of::<Eu64NonCLike<u8>>(), u8_expected_size);
+    let array_expected_size = round_up(28, align_of::<Eu64NonCLike<[u32; 5]>>());
+    assert_eq!(size_of::<Eu64NonCLike<[u32; 5]>>(), array_expected_size);
+    assert_eq!(size_of::<Eu64NonCLike<[u32; 6]>>(), 32);
+}
+
+// Rounds x up to the next multiple of a
+fn round_up(x: usize, a: usize) -> usize {
+    ((x + (a - 1)) / a) * a
 }