43 lines
1.5 KiB
Java
43 lines
1.5 KiB
Java
package de.ph87.electro.circuit;
|
|
|
|
import de.ph87.electro.circuit.calculation.Calculation;
|
|
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)));
|
|
final Light light = circuit.addPart(new Light(RASTER(0, 1)));
|
|
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("");
|
|
}
|
|
}
|
|
|
|
}
|