KiCad-utils/src/test/java/com/rusefi/pcb/PcbMergeTest.java

135 lines
4.4 KiB
Java

package com.rusefi.pcb;
import com.rusefi.pcb.nodes.NetNode;
import com.rusefi.pcb.nodes.PcbNode;
import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_NET;
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_PAD;
import static org.junit.Assert.assertEquals;
public class PcbMergeTest {
@Test
public void testMerge() throws IOException {
PcbNode destNode = PcbNode.readFromFile("pcb/test.kicad_pcb");
assertEquals(605, destNode.children.size());
PcbNode pcb = PcbNode.readFromFile("pcb/adc_amp_divider.kicad_pcb");
assertEquals(1036, pcb.children.size());
PcbMergeTool.mergePcb(destNode, pcb, new Networks());
assertEquals(1616, destNode.children.size());
}
@Test
public void testMergeNets() {
String pcb1 = "(kicad_pcb (version 4) (host pcbnew \"(2014-07-21 BZR 5016)-product\")\n" +
"\n" +
" (general\n" +
" (zones 0)\n" +
" (modules 42)\n" +
" (nets 9)\n" +
" )\n" +
"\n" +
" (net 0 \"\")\n" +
" (net 1 \"Net1\")\n" +
" (net 2 \"CAN_VIO\")\n" +
" (net 3 \"CAN_RX\")\n" +
" (pad \"S1\" smd oval\n" +
" (at 1.1 1.1)\n" +
"\n" +
" (size 0.25 0.5)\n" +
"\n" +
" (layers F.Cu F.Mask F.Paste)\n" +
"\n" +
" (net 2 \"CAN_VIO\")\n" +
")\n" +
")\n";
PcbNode node = PcbNode.parse(pcb1);
assertEquals(4, node.iterate(TOKEN_NET).size());
String pcb2 = "(kicad_pcb (version 4) (host pcbnew \"(2014-07-21 BZR 5016)-product\")\n" +
"\n" +
" (net 0 \"\")\n" +
" (net 1 \"Net1\")\n" +
" (net 2 \"EXT_SPI_SCK\")\n" +
" (module \"C0603\" (layer F.Cu) (tedit 4289BEAB) (tstamp 539EEDBF)\n" +
" (at 16.45 -105.35)\n" +
" (pad \"S2\" smd oval\n" +
" (at 2.2 2.2)\n" +
"\n" +
" (size 0.25 0.5)\n" +
"\n" +
" (layers F.Cu F.Mask F.Paste)\n" +
"\n" +
" (net 2 \"EXT_SPI_SCK\")\n" +
")\n" +
")\n" +
")";
PcbNode node2 = PcbNode.parse(pcb2);
assertEquals(3, node2.iterate(TOKEN_NET).size());
PcbMergeTool.mergePcb(node, node2, new Networks());
List<PcbNode> pads = node.iterateRecursive(TOKEN_PAD);
assertEquals(2, pads.size());
NetNode net1 = pads.get(0).find(TOKEN_NET);
NetNode net2 = pads.get(1).find(TOKEN_NET);
assertEquals("2", net1.getId());
assertEquals("4", net2.getId());
assertEquals("\"CAN_VIO\"", net1.getName());
assertEquals(5, node.iterate(TOKEN_NET).size());
assertEquals(7, node.iterateRecursive(TOKEN_NET).size());
}
@Test
public void testMergeHellen() throws IOException {
PcbNode destNode = PcbNode.readFromFile("pcb/hellen1-72-PcbDoc.kicad_pcb");
assertEquals(4822, destNode.children.size());
destNode.write("out_hellen.kicad_pcb");
PcbNode pcb = PcbNode.readFromFile("pcb/adc_amp_divider.kicad_pcb");
assertEquals(1036, pcb.children.size());
PcbMergeTool.mergePcb(destNode, pcb, new Networks());
assertEquals(5825, destNode.children.size());
}
@Test
public void test() throws IOException {
PcbMergeTool.main(new String[]{"pcb/test.kicad_pcb",
"out.kicad_pcb",
"pcb/changes.txt"});
}
@Test
public void testAdc() throws IOException {
PcbMergeTool.main(new String[]{"pcb/adc_amp_divider.kicad_pcb",
"out_adc.kicad_pcb",
"pcb/empty.txt"});
}
@Test
public void testBreakout() throws IOException {
PcbMergeTool.main(new String[]{"pcb_read/Breakout_80pin_1393476-Connector.kicad_pcb",
"out_breakout.kicad_pcb",
"pcb/empty.txt"});
}
@Test
@Ignore
public void testProteus() throws IOException {
PcbMergeTool.main(new String[]{"pcb_read/proteus.kicad_pcb",
"out_proteus.kicad_pcb",
"pcb/empty.txt"});
}
}