KinderElektro/src/test/java/de/ph87/electro/circuit/BatterySwitcherCrossTest.java
2024-05-15 14:49:43 +02:00

123 lines
3.7 KiB
Java

package de.ph87.electro.circuit;
import de.ph87.electro.circuit.part.impl.PartBattery;
import de.ph87.electro.circuit.part.impl.PartLight;
import de.ph87.electro.circuit.part.impl.PartSwitch1x2;
import de.ph87.electro.circuit.part.impl.PartSwitchCross;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
public class BatterySwitcherCrossTest {
private static final double VOLTAGE = 3;
private static final Circuit circuit = new Circuit();
private static final PartBattery battery = circuit.addBattery("Batterie", 0, 0, 0, VOLTAGE);
private static final PartSwitch1x2 switcher0 = circuit.addSwitch1x2("Wechselschalter 0", 0, 1, 0, false);
private static final PartSwitchCross switcherX = circuit.addSwitchCross("Kreuzschalter", 1, 1, 0, false);
private static final PartSwitch1x2 switcher1 = circuit.addSwitch1x2("Wechselschalter 1", 2, 1, 0, false);
private static final PartLight light = circuit.addLight("Licht", 2, 0, 0, VOLTAGE);
@BeforeAll
public static void setUp() {
circuit.connect(battery.getPlus(), switcher0.getCommon());
circuit.connect(switcher0.getOutput0(), switcherX.getCommon0());
circuit.connect(switcher0.getOutput1(), switcherX.getCommon1());
circuit.connect(switcherX.getOutput0(), switcher1.getOutput0());
circuit.connect(switcherX.getOutput1(), switcher1.getOutput1());
circuit.connect(switcher1.getCommon(), light.getPin1());
circuit.connect(light.getPin0(), battery.getMinus());
}
@Test
public void test000() {
test(false, false, false);
}
@Test
public void test100() {
test(true, false, false);
}
@Test
public void test010() {
test(false, true, false);
}
@Test
public void test110() {
test(true, true, false);
}
@Test
public void test001() {
test(false, false, true);
}
@Test
public void test101() {
test(true, false, true);
}
@Test
public void test011() {
test(false, true, true);
}
@Test
public void test111() {
test(true, true, true);
}
private void test(final boolean state0, final boolean stateX, final boolean state1) {
final double voltage00 = state0 ? Double.NaN : VOLTAGE;
final double voltage01 = state0 ? VOLTAGE : Double.NaN;
final double voltageX0 = stateX ? voltage01 : voltage00;
final double voltageX1 = stateX ? voltage00 : voltage01;
final double voltage = state1 ? voltageX1 : voltageX0;
switcher0.setState(state0);
switcherX.setState(stateX);
switcher1.setState(state1);
circuit.evaluate();
assertEquals(state0, switcher0.isState());
assertEquals(stateX, switcherX.isState());
assertEquals(state1, switcher1.isState());
assertEquals(VOLTAGE, battery.getPlus().getVoltage());
assertEquals(VOLTAGE, switcher0.getCommon().getVoltage());
assertEquals(voltage00, switcher0.getOutput0().getVoltage());
assertEquals(voltage00, switcherX.getCommon0().getVoltage());
assertEquals(voltage01, switcher0.getOutput1().getVoltage());
assertEquals(voltage01, switcherX.getCommon1().getVoltage());
assertEquals(voltageX0, switcherX.getOutput0().getVoltage());
assertEquals(voltageX0, switcher1.getOutput0().getVoltage());
assertEquals(voltageX1, switcherX.getOutput1().getVoltage());
assertEquals(voltageX1, switcher1.getOutput1().getVoltage());
assertEquals(voltage, switcher1.getCommon().getVoltage());
assertEquals(voltage, light.getPin1().getVoltage());
assertEquals(voltage, light.getVoltage());
assertEquals(0, light.getPin0().getVoltage());
assertEquals(0, battery.getMinus().getVoltage());
assertFalse(light.isDefect());
}
}