89 lines
2.7 KiB
Java
89 lines
2.7 KiB
Java
package fabrik.simulator.pic16f84;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.mockito.Mockito.*;
|
|
|
|
import fabrik.simulator.pic16f84.interfaces.*;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
|
class CommandsTests {
|
|
PICComponentLocator picComponents;
|
|
|
|
public CommandsTests() {}
|
|
|
|
@BeforeEach
|
|
void resetComponents() {
|
|
picComponents = new PICComponentLocator();
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Execution Time wird korrekt addiert")
|
|
void executionTimeIsAddedCorrectly() {
|
|
TimerInterface timerMock = mock(TimerInterface.class);
|
|
picComponents.registerComponent(TimerInterface.class, timerMock);
|
|
|
|
EEPROMInterface eepromMock = mock(EEPROMInterface.class);
|
|
picComponents.registerComponent(EEPROMInterface.class, eepromMock);
|
|
|
|
CommandInterface commands = new Commands();
|
|
picComponents.registerComponent(CommandInterface.class, commands);
|
|
picComponents.initAll();
|
|
|
|
|
|
commands.addExecutionTime(5);
|
|
|
|
|
|
assertEquals(5, commands.getTotalExecutionTime());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Execution Time wird korrekt zurückgesetzt")
|
|
void executionTimeResetWorks() {
|
|
TimerInterface timerMock = mock(TimerInterface.class);
|
|
picComponents.registerComponent(TimerInterface.class, timerMock);
|
|
|
|
EEPROMInterface eepromMock = mock(EEPROMInterface.class);
|
|
picComponents.registerComponent(EEPROMInterface.class, eepromMock);
|
|
|
|
CommandInterface commands = new Commands();
|
|
picComponents.registerComponent(CommandInterface.class, commands);
|
|
picComponents.initAll();
|
|
|
|
|
|
commands.addExecutionTime(5);
|
|
commands.resetTotalExecutionTime();
|
|
|
|
|
|
assertEquals(0, commands.getTotalExecutionTime());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Execution Time Faktor wird berücksichtigt")
|
|
void executionTimeMultiplierIsUsed() {
|
|
TimerInterface timerMock = mock(TimerInterface.class);
|
|
picComponents.registerComponent(TimerInterface.class, timerMock);
|
|
|
|
EEPROMInterface eepromMock = mock(EEPROMInterface.class);
|
|
picComponents.registerComponent(EEPROMInterface.class, eepromMock);
|
|
|
|
CommandInterface commands = new Commands();
|
|
picComponents.registerComponent(CommandInterface.class, commands);
|
|
picComponents.initAll();
|
|
|
|
commands.addExecutionTime(5);
|
|
commands.setExecutionTimeMultiplier("100 HZ");
|
|
|
|
assertEquals(5 * 40, commands.getTotalExecutionTime());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Decode mit ungültigem Opcode wirft keine Exception")
|
|
void decodeInvalidOpcodeDoesNotCrash() {
|
|
CommandInterface commands = new Commands();
|
|
|
|
assertDoesNotThrow(() -> commands.decode(1));
|
|
}
|
|
}
|