BUGFIX: merged nets to me included into overall board

This commit is contained in:
rusefillc 2021-01-09 19:54:10 -05:00
parent e5ad944b4a
commit 6c1c07635f
3 changed files with 20 additions and 10 deletions

View File

@ -3,8 +3,7 @@ package com.rusefi.pcb;
import com.rusefi.pcb.nodes.NetNode;
import com.rusefi.pcb.nodes.PcbNode;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_NET;
@ -56,7 +55,11 @@ public class Networks {
return value;
}
public BoardState registerAdditionalBoard(PcbNode source) {
public BoardState registerAdditionalBoard(PcbNode destNode, PcbNode source) {
Set<String> names = new HashSet<>();
for (NetNode known : destNode.<NetNode>iterate(TOKEN_NET)) {
names.add(known.getName());
}
BoardState result = new BoardState();
for (NetNode net : source.<NetNode>iterate(TOKEN_NET)) {
@ -65,9 +68,16 @@ public class Networks {
String newNameInCombinedBoard = registerNetworkIfPcbSpecific(netName);
result.netNameInLocalToNetNameInCombined.put(netName, newNameInCombinedBoard);
result.netIdMapping.put(netId, getId(newNameInCombinedBoard));
int id = getId(newNameInCombinedBoard);
result.netIdMapping.put(netId, id);
if (!names.contains(newNameInCombinedBoard)) {
System.out.println("Adding new NET declaration into combined PCB");
destNode.children.add(new NetNode(0, Arrays.asList("" + id, newNameInCombinedBoard)));
}
}
return result;
}

View File

@ -83,9 +83,9 @@ public class PcbMergeTool {
}
static void mergePcb(PcbNode destNode, PcbNode source, Networks networks) {
networks.registerAdditionalBoard(destNode);
networks.registerAdditionalBoard(destNode, destNode);
Networks.BoardState state = networks.registerAdditionalBoard(source);
Networks.BoardState state = networks.registerAdditionalBoard(destNode, source);
List<PcbNode> zones = source.iterate(TOKEN_ZONE);
log("Processing " + zones.size() + " zone(s)");

View File

@ -22,7 +22,7 @@ public class PcbMergeTest {
assertEquals(1036, pcb.children.size());
PcbMergeTool.mergePcb(destNode, pcb, new Networks());
assertEquals(1541, destNode.children.size());
assertEquals(1616, destNode.children.size());
}
@Test
@ -85,8 +85,8 @@ public class PcbMergeTest {
assertEquals("\"CAN_VIO\"", net1.getName());
assertEquals(4, node.iterate(TOKEN_NET).size());
assertEquals(6, node.iterateRecursive(TOKEN_NET).size());
assertEquals(5, node.iterate(TOKEN_NET).size());
assertEquals(7, node.iterateRecursive(TOKEN_NET).size());
}
@Test
@ -100,7 +100,7 @@ public class PcbMergeTest {
assertEquals(1036, pcb.children.size());
PcbMergeTool.mergePcb(destNode, pcb, new Networks());
assertEquals(5758, destNode.children.size());
assertEquals(5825, destNode.children.size());
}
@Test