From 8df3326df13232617eafbbd60b5799e23c05cd36 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Sat, 8 Feb 2014 01:02:29 +0100 Subject: [PATCH] More BOARD unit tests --- qa/testcases/test_002_board_class.py | 69 +++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/qa/testcases/test_002_board_class.py b/qa/testcases/test_002_board_class.py index 230214ea6f..c9897e97f2 100644 --- a/qa/testcases/test_002_board_class.py +++ b/qa/testcases/test_002_board_class.py @@ -3,29 +3,76 @@ import unittest import pcbnew import pdb -from pcbnew import ToMM +from pcbnew import * class TestBoardClass(unittest.TestCase): def setUp(self): - self.pcb = pcbnew.LoadBoard("data/complex_hierarchy.kicad_pcb") - + self.pcb = LoadBoard("data/complex_hierarchy.kicad_pcb") + def test_pcb_find_module(self): module = self.pcb.FindModule('P1') self.assertEqual(module.GetReference(),'P1') + def test_pcb_get_track_count(self): + pcb = BOARD() + + self.assertEqual(pcb.GetNumSegmTrack(),0) + + track0 = TRACK(pcb) + pcb.Add(track0) + self.assertEqual(pcb.GetNumSegmTrack(),1) + + track1 = TRACK(pcb) + pcb.Add(track1) + self.assertEqual(pcb.GetNumSegmTrack(),2) + def test_pcb_bounding_box(self): - bounding_box = self.pcb.ComputeBoundingBox() + pcb = BOARD() + track = TRACK(pcb) + pcb.Add(track) + + #track.SetStartEnd(wxPointMM(10.0, 10.0), + # wxPointMM(20.0, 30.0)) - height = ToMM( bounding_box.GetHeight() ) - width = ToMM( bounding_box.GetWidth() ) + track.SetStart(wxPointMM(10.0, 10.0)) + track.SetEnd(wxPointMM(20.0, 30.0)) - # probably it's a cleaner test to generate a board with - # a couple of things, that we can know the exact size, - # and then compute the bounding box, + track.SetWidth(FromMM(0.5)) - self.assertAlmostEqual(height, 89.52, 2) - self.assertAlmostEqual(width, 108.44, 2) + #!!! THIS FAILS? == 0.0 x 0.0 ?? + #height, width = ToMM(pcb.ComputeBoundingBox().GetSize()) + bounding_box = pcb.ComputeBoundingBox() + height, width = ToMM(bounding_box.GetSize()) + + self.assertAlmostEqual(width, (30-10) + 0.5, 2) + self.assertAlmostEqual(height, (20-10) + 0.5, 2) + + def test_pcb_get_pad(self): + pcb = BOARD() + module = MODULE(pcb) + pcb.Add(module) + pad = D_PAD(module) + module.Add(pad) + + pad.SetShape(PAD_OVAL) + pad.SetSize(wxSizeMM(2.0, 3.0)) + pad.SetPosition(wxPointMM(0,0)) + + # easy case + p1 = pcb.GetPad(wxPointMM(0,0)) + + # top side + p2 = pcb.GetPad(wxPointMM(0.9,0.0)) + + # bottom side + p3 = pcb.GetPad(wxPointMM(0,1.4)) + + # TODO: get pad == p1 evaluated as true instead + # of relying in the internal C++ object pointer + self.assertEqual(pad.this, p1.this) + self.assertEqual(pad.this, p2.this) + self.assertEqual(pad.this, p3.this) #def test_interactive(self): # code.interact(local=locals())