Browse Source

Test BRK release.

ticki 8 years ago
parent
commit
8f357c4f2b
1 changed files with 20 additions and 5 deletions
  1. 20 5
      src/brk.rs

+ 20 - 5
src/brk.rs

@@ -194,16 +194,19 @@ fn current_brk() -> Pointer<u8> {
 mod test {
     use super;
 
+    use {block, ptr};
+
     #[test]
     fn ordered() {
-        let brk = brk::lock().canonical_brk(20, 1);
+        let brk = brk::lock().canonical_brk(block::Size(20), ptr::Align(2));
 
         assert!(brk.0 <= brk.1);
         assert!(brk.1 <= brk.2);
+        assert!(brk.1.aligned_to(ptr::Align(2)));
     }
 
     #[test]
-    fn brk_grow_up() {
+    fn grow_up() {
         unsafe {
             let brk1 = brk::lock().sbrk(5).unwrap();
             let brk2 = brk::lock().sbrk(100).unwrap();
@@ -213,14 +216,26 @@ mod test {
     }
 
     #[test]
-    fn brk_right_segment_change() {
+    fn right_segment_change() {
         unsafe {
             let brk1 = brk::lock().sbrk(5).unwrap();
             let brk2 = brk::lock().sbrk(100).unwrap();
 
             assert_eq!(brk1.offset(5), brk2);
-            assert_eq!(brk2.offset(100), current_brk());
-            assert_eq!(brk::lock().sbrk(0), current_brk());
+            assert_eq!(brk2.offset(100), brk::current_brk());
+            assert_eq!(brk::lock().sbrk(0), brk::current_brk());
         }
     }
+
+    #[test]
+    fn release() {
+        let lock = brk::lock();
+        let (_, _, b) = lock.canonical_brk(block::Size(0), ptr::Align(2));
+        lock.release(b).unwrap();
+        let (_, a, b) = lock.canonical_brk(block::Size(20), ptr::Align(2));
+        let a = lock.release(a).unwrap_err();
+        lock.release(b).unwrap();
+
+        assert_eq!(lock.current_brk(), Pointer::from(a.empty_right()));
+    }
 }