Unit testing. MemoryRange work.

This commit is contained in:
Seth J. Morabito committed 2008-12-08 20:40:27 -08:00
1 parent 541e7c609c
commit 5bbd72d44e
7 files changed
+289 -88

No files matched your search

@@ -0,0 +1,132 @@
package com.loomcom.lm6502;
import junit.framework.*;
import java.util.HashMap;
import java.util.Map;
/**
*
*/
public class MemoryRangeTest extends TestCase {
public MemoryRangeTest(String testName) {
super(testName);
}
public static Test suite() {
return new TestSuite(MemoryRangeTest.class);
}
public void testConstructorThrowsWhenInvalid() {
// All of these should raise MemoryRangeException
doInvalidMemoryRangeTest(0, -1);
doInvalidMemoryRangeTest(-1, 0);
doInvalidMemoryRangeTest(0, 0);
doInvalidMemoryRangeTest(1, 1);
doInvalidMemoryRangeTest(1, 0);
doInvalidMemoryRangeTest(2, 1);
}
public void testConstructorShouldNotThrow() throws MemoryRangeException {
// None of these should throw.
new MemoryRange(0, 1);
new MemoryRange(0, 2);
new MemoryRange(1, 2);
new MemoryRange(2, 10);
}
public void testGetStartAddress() throws MemoryRangeException {
MemoryRange r = new MemoryRange(0x101, 0x202);
assertEquals(0x101, r.getStartAddress());
}
public void testGetEndAddress() throws MemoryRangeException {
MemoryRange r = new MemoryRange(0x101, 0x202);
assertEquals(0x202, r.getEndAddress());
}
public void testOverlapsWith() throws MemoryRangeException {
MemoryRange a = new MemoryRange(0x0000, 0x0fff);
MemoryRange b = new MemoryRange(0x2000, 0x2fff);
MemoryRange c = new MemoryRange(0x1000, 0x1fff); // fits between a and b
MemoryRange d = new MemoryRange(0x0f00, 0x10ff); // overlaps with a
MemoryRange e = new MemoryRange(0x1fff, 0x20ff); // overlaps with b
MemoryRange f = new MemoryRange(0x0fff, 0x2000); // overlaps a and b
MemoryRange g = new MemoryRange(0x00ff, 0x0100); // Overlaps (inside) a, below b
MemoryRange h = new MemoryRange(0x20ff, 0x2100); // Overlaps (inside) b, above a
assertFalse(c.overlapsWith(a));
assertFalse(c.overlapsWith(b));
assertFalse(a.overlapsWith(c));
assertFalse(b.overlapsWith(c));
assertFalse(a.overlapsWith(b));
assertFalse(b.overlapsWith(a));
assertTrue(d.overlapsWith(a));
assertTrue(a.overlapsWith(d));
assertTrue(e.overlapsWith(b));
assertTrue(b.overlapsWith(e));
assertTrue(f.overlapsWith(a));
assertTrue(a.overlapsWith(f));
assertTrue(f.overlapsWith(b));
assertTrue(b.overlapsWith(f));
assertTrue(a.overlapsWith(g));
assertTrue(g.overlapsWith(a));
assertFalse(b.overlapsWith(g));
assertFalse(g.overlapsWith(b));
assertFalse(a.overlapsWith(h));
assertFalse(h.overlapsWith(a));
assertTrue(b.overlapsWith(h));
assertTrue(h.overlapsWith(b));
}
public void testIncluded() throws MemoryRangeException {
MemoryRange a = new MemoryRange(0x0100, 0x0fff);
assertFalse(a.includes(0x0000));
assertFalse(a.includes(0x00ff));
assertTrue(a.includes(0x0100));
assertTrue(a.includes(0x0fff));
assertFalse(a.includes(0x1000));
assertFalse(a.includes(0xffff));
}
public void testCompareTo() throws MemoryRangeException {
MemoryRange a = new MemoryRange(0x0000, 0x0100);
MemoryRange b = new MemoryRange(0x0200, 0x0300);
MemoryRange c = new MemoryRange(0x0200, 0x0300);
// a < b
assertTrue(a.compareTo(b) == -1);
// b > a
assertTrue(b.compareTo(a) == 1);
// Identity
assertTrue(a.compareTo(a) == 0);
assertTrue(b.compareTo(b) == 0);
// Equality
assertTrue(b.compareTo(c) == 0);
assertTrue(c.compareTo(b) == 0);
// Null
try {
a.compareTo(null);
fail("Should have thrown NullPointerException");
} catch (NullPointerException ex) {
// expected
}
}
// Helper method.
public void doInvalidMemoryRangeTest(int start, int end) {
try {
new MemoryRange(start, end);
fail("MemoryRangeException should have been thrown.");
} catch (MemoryRangeException e) {
// Expected.
}
}
}