KinderElektro/src/test/java/de/ph87/electro/circuit/CalculationServiceTest.java

44 lines
1.6 KiB
Java

package de.ph87.electro.circuit;
import de.ph87.electro.circuit.calculation.Calculation;
import de.ph87.electro.circuit.part.Orientation;
import de.ph87.electro.circuit.part.node.Node;
import de.ph87.electro.circuit.part.parts.Battery;
import de.ph87.electro.circuit.part.parts.Light;
import de.ph87.electro.circuit.wire.Wire;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import static de.ph87.electro.CONFIG.RASTER;
@Slf4j
class CalculationServiceTest {
@Test
void test() {
final Circuit circuit = new Circuit();
final Battery battery = circuit.addPart(new Battery(RASTER(0, 0), Orientation.R0));
final Light light = circuit.addPart(new Light(RASTER(0, 1), Orientation.R0));
circuit.connect(battery.getMinus(), light.getA());
circuit.connect(battery.getPlus(), light.getB());
for (final Calculation calculation : Calculation.calculate(circuit)) {
calculation.toString().lines().forEach(log::info);
circuit.streamParts().forEach(part -> {
log.info("");
log.info(part.toString());
for (final Node node : part.getNodes()) {
log.info(" \"%s\" = %.2f V".formatted(node.getName(), node.getVoltage()));
for (final Wire wire : node.getWires()) {
final Node opposite = wire.getOpposite(node);
final String partName = opposite instanceof final Node partNode ? partNode.getPart().getName() : "";
log.info(" -> %s.%s = %.2f A".formatted(partName, opposite.getName(), wire.getCurrent(node)));
}
}
});
log.info("");
}
}
}