-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathALUTest.java
More file actions
70 lines (56 loc) · 2.22 KB
/
ALUTest.java
File metadata and controls
70 lines (56 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ALUTest {
private void setOpcode(ALU a, int opcode) {
Word32 w = new Word32();
TestConverter.fromInt(opcode,w);
Bit temp = new Bit(false);
for (int i=0;i<5;i++) {
w.getBitN(27+i,temp);
a.instruction.setBitN(i,temp);
}
//System.out.println(a.instruction.toString());
}
private void setupTest(ALU alu, int opcode, int value1, int value2) {
setOpcode(alu,opcode); // add
TestConverter.fromInt(value1,alu.op1);
TestConverter.fromInt(value2,alu.op2);
}
@Test
void alu() {
var alu = new ALU();
setupTest(alu,1,100,200); // ADD
alu.doInstruction();
assertEquals(300,TestConverter.toInt(alu.result));
setupTest(alu,2,64,96); // AND
alu.doInstruction();
assertEquals(64,TestConverter.toInt(alu.result));
setupTest(alu,3,6,6); // MULTIPLY
alu.doInstruction();
assertEquals(36,TestConverter.toInt(alu.result));
setupTest(alu,4,10,2); // Left Shift
alu.doInstruction();
assertEquals(40,TestConverter.toInt(alu.result));
setupTest(alu,5,100,200); // Subtract
alu.doInstruction();
assertEquals(-100,TestConverter.toInt(alu.result));
setupTest(alu,6,64,96); // Or
alu.doInstruction();
assertEquals(96,TestConverter.toInt(alu.result));
setupTest(alu,7,1000,2); // Right Shift
alu.doInstruction();
assertEquals(250,TestConverter.toInt(alu.result));
setupTest(alu,11,1000,2); // Compare - less
alu.doInstruction();
assertEquals(Bit.boolValues.FALSE,alu.less.getValue());
assertEquals(Bit.boolValues.FALSE,alu.equal.getValue());
setupTest(alu,11,1000,2000); // Compare - greater
alu.doInstruction();
assertEquals(Bit.boolValues.TRUE,alu.less.getValue());
assertEquals(Bit.boolValues.FALSE,alu.equal.getValue());
setupTest(alu,11,2000,2000); // Compare - equal
alu.doInstruction();
assertEquals(Bit.boolValues.FALSE,alu.less.getValue());
assertEquals(Bit.boolValues.TRUE,alu.equal.getValue());
}
}