about summary refs log tree commit diff
path: root/library/alloc/tests/alloc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/alloc/tests/alloc.rs')
-rw-r--r--library/alloc/tests/alloc.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/library/alloc/tests/alloc.rs b/library/alloc/tests/alloc.rs
new file mode 100644
index 00000000000..1e722d66795
--- /dev/null
+++ b/library/alloc/tests/alloc.rs
@@ -0,0 +1,29 @@
+use alloc::alloc::*;
+use alloc::boxed::Box;
+
+extern crate test;
+use test::Bencher;
+
+#[test]
+fn allocate_zeroed() {
+    unsafe {
+        let layout = Layout::from_size_align(1024, 1).unwrap();
+        let ptr =
+            Global.allocate_zeroed(layout.clone()).unwrap_or_else(|_| handle_alloc_error(layout));
+
+        let mut i = ptr.as_non_null_ptr().as_ptr();
+        let end = i.add(layout.size());
+        while i < end {
+            assert_eq!(*i, 0);
+            i = i.add(1);
+        }
+        Global.deallocate(ptr.as_non_null_ptr(), layout);
+    }
+}
+
+#[bench]
+fn alloc_owned_small(b: &mut Bencher) {
+    b.iter(|| {
+        let _: Box<_> = Box::new(10);
+    })
+}