Skip to content

Commit cd43b31

Browse files
authored
Refactor screen and instruction tests (#122)
* Move screen datatypes and add tests for instructions * Add in unit tests for addressing modes
1 parent bc0f323 commit cd43b31

22 files changed

+703
-431
lines changed

src/main/java/ca/craigthomas/yacoco3e/components/IOController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package ca.craigthomas.yacoco3e.components;
66

77
import ca.craigthomas.yacoco3e.datatypes.*;
8+
import ca.craigthomas.yacoco3e.datatypes.screen.ScreenMode;
89

910
import static ca.craigthomas.yacoco3e.datatypes.RegisterSet.*;
1011

src/main/java/ca/craigthomas/yacoco3e/components/Instruction.java

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -60,33 +60,30 @@ public int execute(IOController io) throws MalformedInstructionException {
6060
io.incrementPC();
6161
}
6262

63-
if (!isValidInstruction) {
64-
call(io);
65-
return 0;
66-
}
67-
68-
switch (addressingMode) {
69-
case IMMEDIATE:
70-
getImmediate(io);
71-
break;
72-
73-
case INDEXED:
74-
getIndexed(io);
75-
break;
76-
77-
case DIRECT:
78-
getDirect(io);
79-
break;
80-
81-
case EXTENDED:
82-
getExtended(io);
83-
break;
84-
85-
default:
86-
addressRead = new UnsignedWord(0);
87-
wordRead = new UnsignedWord(0);
88-
byteRead = new UnsignedByte(0);
89-
break;
63+
if (isValidInstruction) {
64+
switch (addressingMode) {
65+
case IMMEDIATE:
66+
getImmediate(io);
67+
break;
68+
69+
case INDEXED:
70+
getIndexed(io);
71+
break;
72+
73+
case DIRECT:
74+
getDirect(io);
75+
break;
76+
77+
case EXTENDED:
78+
getExtended(io);
79+
break;
80+
81+
default:
82+
addressRead = new UnsignedWord(0);
83+
wordRead = new UnsignedWord(0);
84+
byteRead = new UnsignedByte(0);
85+
break;
86+
}
9087
}
9188

9289
return call(io);

src/main/java/ca/craigthomas/yacoco3e/components/Screen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
*/
55
package ca.craigthomas.yacoco3e.components;
66

7-
import ca.craigthomas.yacoco3e.datatypes.*;
7+
import ca.craigthomas.yacoco3e.datatypes.screen.*;
88

9-
import java.awt.*;
109
import java.awt.image.BufferedImage;
1110

1211
public class Screen

src/main/java/ca/craigthomas/yacoco3e/datatypes/MemoryResult.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/main/java/ca/craigthomas/yacoco3e/datatypes/G1CScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G1CScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G1RScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G1RScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G2CScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G2CScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G2RScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G2RScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G3CScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G3CScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G3RScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G3RScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G6CScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G6CScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/G6RScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/G6RScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/SG12ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/SG12ScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/SG24ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/SG24ScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/SG4ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/SG4ScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/SG6ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/SG6ScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/SG8ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/SG8ScreenMode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* Copyright (C) 2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
6+
7+
import ca.craigthomas.yacoco3e.datatypes.UnsignedByte;
68

79
import java.awt.*;
810

src/main/java/ca/craigthomas/yacoco3e/datatypes/ScreenMode.java renamed to src/main/java/ca/craigthomas/yacoco3e/datatypes/screen/ScreenMode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (C) 2017-2018 Craig Thomas
33
* This project uses an MIT style license - see LICENSE for details.
44
*/
5-
package ca.craigthomas.yacoco3e.datatypes;
5+
package ca.craigthomas.yacoco3e.datatypes.screen;
66

77
import ca.craigthomas.yacoco3e.components.IOController;
88

0 commit comments

Comments
 (0)