MCPcopy Create free account
hub / github.com/KLayout/klayout / test_6_Layout_new

Method test_6_Layout_new

testdata/python/dbLayoutTest.py:735–819  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

733
734 # Instances and bboxes (editable mode)
735 def test_6_Layout_new(self):
736
737 ly = pya.Layout()
738 if ly.is_editable():
739
740 pv = { 17: "a", "b": [ 1, 5, 7 ] }
741 pid1 = ly.properties_id( pv )
742 pv = { 100: "x" }
743 pid2 = ly.properties_id( pv )
744
745 ci1 = ly.add_cell( "c1" )
746 ci2 = ly.add_cell( "c2" )
747 ci3 = ly.add_cell( "c3" )
748 c1 = ly.cell( ci1 )
749 c2 = ly.cell( ci2 )
750 c3 = ly.cell( ci3 )
751
752 tr = pya.Trans( pya.Trans.R90, pya.Point( 100, -50 ) )
753 inst_1 = pya.CellInstArray( c1.cell_index(), tr )
754 new_inst_1 = c2.insert( inst_1, pid1 )
755 new_inst_2 = c2.insert( inst_1, pid2 )
756 inst_2 = pya.CellInstArray( c3.cell_index(), tr*tr )
757 new_inst_3 = c1.insert( inst_2 )
758
759 self.assertEqual( new_inst_1.cell_index, c1.cell_index() )
760 self.assertEqual( str(new_inst_1.trans), str(tr) )
761 self.assertEqual( new_inst_1.prop_id, pid1 )
762 self.assertEqual( new_inst_2.cell_index, c1.cell_index() )
763 self.assertEqual( str(new_inst_2.trans), str(tr) )
764 self.assertEqual( new_inst_2.prop_id, pid2 )
765 self.assertEqual( new_inst_3.cell_index, c3.cell_index() )
766 self.assertEqual( new_inst_3.prop_id, 0 )
767 self.assertEqual( str(new_inst_3.trans), str(tr*tr) )
768
769 new_inst_3 = c1.replace_prop_id( new_inst_3, pid2 )
770
771 self.assertEqual( new_inst_1.cell_index, c1.cell_index() )
772 self.assertEqual( str(new_inst_1.trans), str(tr) )
773 self.assertEqual( new_inst_1.prop_id, pid1 )
774 self.assertEqual( new_inst_2.cell_index, c1.cell_index() )
775 self.assertEqual( str(new_inst_2.trans), str(tr) )
776 self.assertEqual( new_inst_2.prop_id, pid2 )
777 self.assertEqual( new_inst_3.cell_index, c3.cell_index() )
778 self.assertEqual( new_inst_3.prop_id, pid2 )
779 self.assertEqual( str(new_inst_3.trans), str(tr*tr) )
780
781 try:
782 new_inst_1 = c1.replace( new_inst_1, inst_2 )
783 self.assertEqual( True, False )
784 except:
785 # OK: gives an error since we are trying to erase an object from a list that is does not belong to
786 pass
787
788 new_inst_1 = c2.replace( new_inst_1, inst_2 )
789
790 self.assertEqual( new_inst_1.cell_index, c3.cell_index() )
791 self.assertEqual( str(new_inst_1.trans), str(tr*tr) )
792 self.assertEqual( new_inst_1.prop_id, pid1 )

Callers

nothing calls this directly

Calls 15

add_cellMethod · 0.95
strFunction · 0.85
LayoutMethod · 0.80
InstanceMethod · 0.80
is_editableMethod · 0.45
properties_idMethod · 0.45
cellMethod · 0.45
PointMethod · 0.45
cell_indexMethod · 0.45
insertMethod · 0.45
replace_prop_idMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected