Untitled
Anonymous
plain_text
02/13/2026 2:53 AM
3.9 KB
11
Indexable
import student.TestCase;
/**
* Test class for the MemManager.
* Verifies buddy allocation behavior, merging,
* and proper free list ordering.
*
* @author Leguejou Awunganyi
* @author Ishita Punna
* @version 2026-02-12
*/
public class MemManagerTest extends TestCase {
/**
* Setup method executed before each test.
* No shared fixture required.
*/
public void setUp() {
// Nothing to initialize globally.
}
/**
* Test that free list maintains sorted addresses
* when blocks are released out of order.
*/
public void testFreeListWithSortedAddresses() {
MemManager mm = new MemManager(32);
Handle[] h = new Handle[8];
for (int i = 0; i < 8; i++) {
h[i] = mm.insert(new byte[4]);
}
assertEquals("No free blocks are available.", mm.printBlocks());
mm.release(h[5]); // addr 20
mm.release(h[1]); // addr 4
mm.release(h[3]); // addr 12
assertEquals("4: 4 12 20", mm.printBlocks());
}
/**
* Test adding a block into an empty free list.
*/
public void testFreeListAddIntoEmptyList() {
MemManager mm = new MemManager(32);
Handle h = mm.insert(new byte[32]);
assertEquals("No free blocks are available.", mm.printBlocks());
mm.release(h);
assertEquals("32: 0", mm.printBlocks());
}
/**
* Test removing buddy when it is at head of list.
*/
public void testRemoveBuddyAtHeadPrevNull() {
MemManager mm = new MemManager(32);
Handle h0 = mm.insert(new byte[16]);
Handle h1 = mm.insert(new byte[16]);
assertEquals("No free blocks are available.", mm.printBlocks());
mm.release(h1);
assertEquals("16: 16", mm.printBlocks());
mm.release(h0);
assertEquals("32: 0", mm.printBlocks());
}
/**
* Test removing buddy when it is not head
* (prev not null case).
*/
public void testRemoveBuddyNotHeadPrevNotNull() {
MemManager mm = new MemManager(32);
Handle[] h = new Handle[8];
for (int i = 0; i < 8; i++) {
h[i] = mm.insert(new byte[4]);
}
assertEquals("No free blocks are available.", mm.printBlocks());
mm.release(h[1]);
mm.release(h[5]);
mm.release(h[7]);
assertEquals("4: 4 20 28", mm.printBlocks());
mm.release(h[4]);
assertEquals("4: 4 28\r\n8: 16", mm.printBlocks());
}
/**
* Test that no merge occurs when buddy is not free.
*/
public void testRemoveBuddyNotFoundReturnsFalse() {
MemManager mm = new MemManager(32);
Handle[] h = new Handle[8];
for (int i = 0; i < 8; i++) {
h[i] = mm.insert(new byte[4]);
}
mm.release(h[0]);
assertEquals("4: 0", mm.printBlocks());
}
}Editor is loading...
Leave a Comment