main
John Lauer Publish 0.2.15 bb17f84
import importlib.util,pathlib,unittest
p=pathlib.Path(__file__).with_name('silkscreen-obstacle-check.py');s=importlib.util.spec_from_file_location('audit',p);m=importlib.util.module_from_spec(s);s.loader.exec_module(m)
class Audit(unittest.TestCase):
 def test_missing_body_between_pads(self):
  d=dict(inventory=[dict(id='C11',kind='body',layers=['F.SilkS'])],obstacles=[],marks=[])
  self.assertFalse(m.check(d)['passed']);self.assertEqual(len(m.check(d)['missingObstacles']),1)
 def test_via_requires_both_faces(self):
  d=dict(inventory=[dict(id='v1',kind='via',layers=['F.SilkS','B.SilkS'])],obstacles=[dict(id='v1',kind='via',layer='F.SilkS',box=[0,0,1,1])],marks=[])
  self.assertEqual(m.check(d)['missingObstacles'][0]['layer'],'B.SilkS')
 def test_text_anchor_outside_but_letters_cross_body(self):
  d=dict(inventory=[dict(id='C4',kind='body',layers=['F.SilkS'])],obstacles=[dict(id='C4',kind='body',layer='F.SilkS',box=[0,0,2,1])],marks=[dict(id='C11-label',layer='F.SilkS',box=[-1,.2,.3,.6])])
  self.assertEqual(len(m.check(d)['collisions']),1)
 def test_bottom_text_does_not_hit_top_body(self):
  d=dict(inventory=[dict(id='C4',kind='body',layers=['F.SilkS'])],obstacles=[dict(id='C4',kind='body',layer='F.SilkS',box=[0,0,2,1])],marks=[dict(id='label',layer='B.SilkS',box=[.1,.2,.3,.6])])
  self.assertTrue(m.check(d)['passed'])
 def test_boxes_only_obstacle_issue_82(self):
  # Repro from adom/adom-aiflow#82: obstacle carries only "boxes"; used to raise KeyError: 'box'.
  d={"obstacles":[{"id":"R1:body","kind":"body","layer":"F.SilkS","boxes":[[0,0,1,1]]}],"inventory":[{"id":"R1:body","kind":"body","layers":["F.SilkS"]}],"marks":[{"id":"R1","layer":"F.SilkS","text":"R1","box":[2,2,3,3]}]}
  r=m.check(d);self.assertTrue(r['passed']);self.assertEqual(r['collisions'],[])
  d['marks'][0]={"id":"R1","layer":"F.SilkS","boxes":[[5,5,6,6],[.5,.5,.8,.8]]}
  self.assertEqual(len(m.check(d)['collisions']),1)
 def test_missing_geometry_names_the_item(self):
  d=dict(inventory=[dict(id='R1',kind='body',layers=['F.SilkS'])],obstacles=[dict(id='R1',kind='body',layer='F.SilkS')],marks=[dict(id='L',layer='F.SilkS',box=[0,0,1,1])])
  with self.assertRaisesRegex(ValueError,"obstacle 'R1' has neither"):m.check(d)
unittest.main()