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(""); } } }