2013-09-21 22:27:41 +00:00
|
|
|
import pcbnew
|
2023-05-06 00:13:08 +00:00
|
|
|
import pytest
|
2013-09-21 22:27:41 +00:00
|
|
|
|
|
|
|
|
2023-05-06 00:13:08 +00:00
|
|
|
class TestPCBLoad:
|
|
|
|
pcb : pcbnew.BOARD = None
|
|
|
|
|
|
|
|
def setup_method(self):
|
2023-04-25 12:29:47 +00:00
|
|
|
self.pcb = pcbnew.LoadBoard("../data/pcbnew/complex_hierarchy.kicad_pcb")
|
2018-08-04 15:11:45 +00:00
|
|
|
|
2013-09-21 22:27:41 +00:00
|
|
|
def test_pcb_load(self):
|
2023-05-06 00:13:08 +00:00
|
|
|
assert self.pcb is not None
|
2013-09-21 22:27:41 +00:00
|
|
|
|
|
|
|
def test_pcb_track_count(self):
|
2018-08-04 15:11:45 +00:00
|
|
|
tracks = list(self.pcb.GetTracks())
|
2023-05-06 00:13:08 +00:00
|
|
|
assert len(tracks) == 361
|
2013-09-21 22:27:41 +00:00
|
|
|
|
|
|
|
def test_pcb_modules(self):
|
2020-11-13 23:03:36 +00:00
|
|
|
modules = list(self.pcb.GetFootprints())
|
2023-05-06 00:13:08 +00:00
|
|
|
assert len(modules) == 72
|
2013-09-21 22:27:41 +00:00
|
|
|
|
|
|
|
def test_pcb_module_references(self):
|
2020-10-09 08:41:11 +00:00
|
|
|
board_refs = list(module.GetReference() for
|
2020-11-13 23:03:36 +00:00
|
|
|
module in self.pcb.GetFootprints())
|
2018-08-04 15:11:45 +00:00
|
|
|
|
2020-10-09 08:41:11 +00:00
|
|
|
known_refs = [u'P1', u'P3', u'C2', u'C1', u'D1', u'Q3', u'Q5', u'Q7',
|
2018-08-04 15:11:45 +00:00
|
|
|
u'Q6', u'Q1', u'Q2', u'Q4', u'Q8', u'P2', u'U1', u'U4',
|
2020-10-09 08:41:11 +00:00
|
|
|
u'P4', u'P5', u'P6', u'U3', u'R9', u'R15', u'RV1', u'RV2',
|
|
|
|
u'C3', u'C4', u'C5', u'C6', u'C7', u'C8', u'C9', u'D2',
|
|
|
|
u'D3', u'D4', u'D5', u'D6', u'D7', u'R3', u'R4', u'R5',
|
|
|
|
u'R6', u'R7', u'R8', u'R10', u'R11', u'R12', u'R13',
|
|
|
|
u'R14', u'R16', u'R17', u'R18', u'R19', u'R20', u'R21',
|
|
|
|
u'R22', u'MIRE', u'C10', u'C11',
|
|
|
|
u'U2', u'C14', u'C12', u'R23', u'R24', u'D9', u'D8', u'R25',
|
2018-08-04 15:11:45 +00:00
|
|
|
u'R26', u'R27', u'R28']
|
|
|
|
|
|
|
|
for ref in known_refs:
|
2023-05-06 00:13:08 +00:00
|
|
|
assert ref in board_refs
|
2018-08-04 15:11:45 +00:00
|
|
|
|
2013-09-21 22:27:41 +00:00
|
|
|
def test_pcb_netcount(self):
|
2023-05-06 00:13:08 +00:00
|
|
|
assert self.pcb.GetNetCount() == 51
|
2013-09-21 22:27:41 +00:00
|
|
|
|
2020-10-09 08:41:11 +00:00
|
|
|
def test_pcb_shapes(self):
|
|
|
|
drawings = list(self.pcb.GetDrawings())
|
|
|
|
edge_cuts = [d for d in drawings if d.GetLayer() == pcbnew.Edge_Cuts]
|
|
|
|
coordinates = [[list(edge.GetStart()), list(edge.GetEnd())] for edge in edge_cuts]
|
|
|
|
expected_coordinates = [
|
|
|
|
[[88265000, 51816000], [188595000, 51816000]],
|
|
|
|
[[88265000, 131826000], [88265000, 51816000]],
|
|
|
|
[[188595000, 51816000], [188595000, 131826000]],
|
|
|
|
[[188595000, 131826000], [88265000, 131826000]]
|
|
|
|
]
|
2023-05-06 00:13:08 +00:00
|
|
|
assert sorted(coordinates) == sorted(expected_coordinates)
|
2020-10-09 08:41:11 +00:00
|
|
|
|
|
|
|
def test_pcb_text(self):
|
|
|
|
drawings = list(self.pcb.GetDrawings())
|
2022-02-03 12:55:37 +00:00
|
|
|
text = [d for d in drawings if d.GetClass() == "PCB_TEXT"]
|
2020-10-09 08:41:11 +00:00
|
|
|
self.verify_text(text[0], 173355000, 68453000, pcbnew.F_Cu,
|
|
|
|
u'Actionneur\nPiezo New Amp\nV02')
|
|
|
|
self.verify_text(text[1], 176149000, 64643000, pcbnew.B_Cu,
|
|
|
|
u'Actionneur\nPiezo New Amp\nV02')
|
|
|
|
|
|
|
|
def verify_text(self, text, x, y, layer, s):
|
2023-05-06 00:13:08 +00:00
|
|
|
assert list(text.GetPosition()) == [x, y]
|
|
|
|
assert text.GetLayer() == layer
|
|
|
|
assert text.GetText() == s
|