(self)
| 491 | |
| 492 | # Instances and bboxes |
| 493 | def test_6_Layout_props(self): |
| 494 | |
| 495 | ly = pya.Layout() |
| 496 | pv = [ [ 17, "a" ], [ "b", [ 1, 5, 7 ] ] ] |
| 497 | pid = ly.properties_id( pv ) |
| 498 | |
| 499 | ci1 = ly.add_cell( "c1" ) |
| 500 | ci2 = ly.add_cell( "c2" ) |
| 501 | |
| 502 | linfo = pya.LayerInfo() |
| 503 | linfo.layer = 16 |
| 504 | linfo.datatype = 1 |
| 505 | lindex = ly.insert_layer( linfo ) |
| 506 | |
| 507 | linfo = pya.LayerInfo() |
| 508 | linfo.layer = 16 |
| 509 | linfo.datatype = 2 |
| 510 | ldummy = ly.insert_layer( linfo ) |
| 511 | |
| 512 | c1 = ly.cell( ci1 ) |
| 513 | c2 = ly.cell( ci2 ) |
| 514 | |
| 515 | c1.shapes( lindex ).insert( pya.Box( 10, -10, 50, 40 ), pid ) |
| 516 | self.assertEqual( c1.bbox().to_s(), "(10,-10;50,40)" ) |
| 517 | |
| 518 | tr = pya.Trans( pya.Trans.R90, pya.Point( 100, -50 ) ) |
| 519 | inst = pya.CellInstArray( c1.cell_index(), tr ) |
| 520 | self.assertEqual( inst.bbox( ly ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 521 | self.assertEqual( inst.bbox_per_layer( ly, lindex ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 522 | self.assertEqual( inst.bbox_per_layer( ly, ldummy ).to_s(), "()" ) |
| 523 | self.assertEqual( inst.size(), 1 ) |
| 524 | self.assertEqual( inst.is_complex(), False ) |
| 525 | c2.insert( inst, pid ) |
| 526 | self.assertEqual( c2.bbox().to_s(), c1.bbox().transformed(tr).to_s() ) |
| 527 | |
| 528 | c2.clear_insts() |
| 529 | tr = pya.CplxTrans( 1.5, 90.0, True, pya.DPoint( 100, -50 ) ) |
| 530 | inst = pya.CellInstArray( c1.cell_index(), tr ) |
| 531 | inst2 = inst.dup() |
| 532 | self.assertEqual( inst.bbox( ly ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 533 | self.assertEqual( inst.size(), 1 ) |
| 534 | self.assertEqual( inst.is_complex(), True ) |
| 535 | self.assertEqual( inst.is_regular_array(), False ) |
| 536 | c2.insert( inst, pid ) |
| 537 | self.assertEqual( c2.bbox().to_s(), c1.bbox().transformed(tr).to_s() ) |
| 538 | |
| 539 | c2.clear_insts() |
| 540 | self.assertEqual( c2.bbox().to_s(), "()" ) |
| 541 | |
| 542 | tr = pya.Trans( pya.Trans.R90, pya.Point( 100, -50 ) ) |
| 543 | inst = pya.CellInstArray( c1.cell_index(), tr, pya.Point( 100, 0 ), pya.Point( 0, 100 ), 10, 20 ) |
| 544 | self.assertEqual( inst == inst2, False ) |
| 545 | self.assertEqual( inst != inst2, True ) |
| 546 | inst2 = inst.dup() |
| 547 | self.assertEqual( inst == inst2, True ) |
| 548 | self.assertEqual( inst != inst2, False ) |
| 549 | self.assertEqual( inst.bbox( ly ).to_s(), "(60,-40;1010,1900)" ) |
| 550 | self.assertEqual( inst.trans.to_s(), "r90 100,-50" ) |
nothing calls this directly
no test coverage detected