mirror of
https://codeberg.org/sethm/symon.git
synced 2026-11-07 19:12:23 +00:00
Tests for AddressDecoder. Fixed a bug in isComplete().
This commit is contained in:
1 parent
af7743b385
commit
0e212e71e5
7 files changed
+229
-32
No files matched your search
@@ -0,0 +1,125 @@
|
||||
package com.loomcom.lm6502;
|
||||
|
||||
import junit.framework.*;
|
||||
|
||||
import com.loomcom.lm6502.devices.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class AddressDecoderTest extends TestCase {
|
||||
|
||||
public AddressDecoderTest(String testName) {
|
||||
super(testName);
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return new TestSuite(AddressDecoderTest.class);
|
||||
}
|
||||
|
||||
public void testCreatingWithTopAndBottom() {
|
||||
AddressDecoder ad = null;
|
||||
|
||||
ad = new AddressDecoder(0x00, 0xff);
|
||||
assertEquals(0x00, ad.bottom());
|
||||
assertEquals(0xff, ad.top());
|
||||
|
||||
ad = new AddressDecoder(0x20, 0xea);
|
||||
assertEquals(0x20, ad.bottom());
|
||||
assertEquals(0xea, ad.top());
|
||||
}
|
||||
|
||||
public void testCreatingWithSize() {
|
||||
AddressDecoder ad = null;
|
||||
|
||||
ad = new AddressDecoder(256);
|
||||
assertEquals(0x00, ad.bottom());
|
||||
assertEquals(0xff, ad.top());
|
||||
|
||||
ad = new AddressDecoder(4096);
|
||||
assertEquals(0x000, ad.bottom());
|
||||
assertEquals(0xfff, ad.top());
|
||||
|
||||
ad = new AddressDecoder(65536);
|
||||
assertEquals(0x0000, ad.bottom());
|
||||
assertEquals(0xffff, ad.top());
|
||||
}
|
||||
|
||||
public void testAddDevice() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x0000, 0x0100, null, true);
|
||||
Device rom = new Memory(0x0100, 0x0200, null, false);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
|
||||
assertEquals(0, ad.getDevices().size());
|
||||
ad.addDevice(memory);
|
||||
assertEquals(1, ad.getDevices().size());
|
||||
ad.addDevice(rom);
|
||||
assertEquals(2, ad.getDevices().size());
|
||||
}
|
||||
|
||||
public void testOverlappingDevicesShouldFail() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x0000, 0x0100, null, true);
|
||||
Device rom = new Memory(0x00ff, 0x0200, null, false);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
|
||||
ad.addDevice(memory);
|
||||
|
||||
try {
|
||||
ad.addDevice(rom);
|
||||
fail("Should have thrown a MemoryRangeException.");
|
||||
} catch (MemoryRangeException ex) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
public void testIsCompleteWithFirstDeviceNotStartingAtBottom() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x00ff, 0xff00, null, true);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(memory);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
}
|
||||
|
||||
public void testIsCompleteWithOneDevice() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x0000, 0x10000, null, true);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(memory);
|
||||
assertTrue("Address space should have been complete!", ad.isComplete());
|
||||
}
|
||||
|
||||
public void testIsCompleteWithTwoDevices() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x0000, 0x8000, null, true);
|
||||
Device rom = new Memory(0x8000, 0x8000, null, false);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(memory);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(rom);
|
||||
assertTrue("Address space should have been complete!", ad.isComplete());
|
||||
}
|
||||
|
||||
public void testIsCompleteWithThreeDevices() throws MemoryRangeException {
|
||||
Device memory = new Memory(0x0000, 0x8000, null, true);
|
||||
Device rom1 = new Memory(0x8000, 0x4000, null, false);
|
||||
Device rom2 = new Memory(0xC000, 0x4000, null, false);
|
||||
|
||||
AddressDecoder ad = new AddressDecoder(0x0000, 0xffff);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(memory);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(rom1);
|
||||
assertFalse("Address space was unexpectedly complete!", ad.isComplete());
|
||||
ad.addDevice(rom2);
|
||||
assertTrue("Address space should have been complete!", ad.isComplete());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -80,6 +80,17 @@ public class MemoryRangeTest extends TestCase {
|
||||
assertTrue(h.overlaps(b));
|
||||
}
|
||||
|
||||
public void testToString() throws MemoryRangeException {
|
||||
MemoryRange a = new MemoryRange(0x0abf, 0xff00);
|
||||
assertEquals("@0x0abf-0xff00", a.toString());
|
||||
|
||||
MemoryRange b = new MemoryRange(0, 255);
|
||||
assertEquals("@0x0000-0x00ff", b.toString());
|
||||
|
||||
MemoryRange c = new MemoryRange(0, 65535);
|
||||
assertEquals("@0x0000-0xffff", c.toString());
|
||||
}
|
||||
|
||||
public void testIncluded() throws MemoryRangeException {
|
||||
MemoryRange a = new MemoryRange(0x0100, 0x0fff);
|
||||
|
||||
|
||||
Reference in new issue
Block a user