(self)
| 237 | |
| 238 | # Instances and bboxes |
| 239 | def test_6_Layout(self): |
| 240 | |
| 241 | ly = pya.Layout() |
| 242 | |
| 243 | ci1 = ly.add_cell( "c1" ) |
| 244 | ci2 = ly.add_cell( "c2" ) |
| 245 | |
| 246 | linfo = pya.LayerInfo() |
| 247 | linfo.layer = 16 |
| 248 | linfo.datatype = 1 |
| 249 | lindex = ly.insert_layer( linfo ) |
| 250 | |
| 251 | linfo = pya.LayerInfo() |
| 252 | linfo.layer = 16 |
| 253 | linfo.datatype = 2 |
| 254 | ldummy = ly.insert_layer( linfo ) |
| 255 | |
| 256 | c1 = ly.cell( ci1 ) |
| 257 | c2 = ly.cell( ci2 ) |
| 258 | |
| 259 | c1.shapes( lindex ).insert( pya.Box( 10, -10, 50, 40 ) ) |
| 260 | self.assertEqual( c1.bbox().to_s(), "(10,-10;50,40)" ) |
| 261 | |
| 262 | tr = pya.Trans( pya.Trans.R90, pya.Point( 100, -50 ) ) |
| 263 | inst = pya.CellInstArray( c1.cell_index(), tr ) |
| 264 | self.assertEqual( inst.bbox( ly ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 265 | self.assertEqual( inst.bbox_per_layer( ly, lindex ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 266 | self.assertEqual( inst.bbox_per_layer( ly, ldummy ).to_s(), "()" ) |
| 267 | self.assertEqual( inst.size(), 1 ) |
| 268 | self.assertEqual( inst.is_complex(), False ) |
| 269 | c2.insert( inst ) |
| 270 | self.assertEqual( c2.bbox().to_s(), c1.bbox().transformed(tr).to_s() ) |
| 271 | |
| 272 | c2.clear_insts() |
| 273 | tr = pya.CplxTrans( 1.5, 90.0, True, pya.DPoint( 100, -50 ) ) |
| 274 | inst = pya.CellInstArray( c1.cell_index(), tr ) |
| 275 | inst2 = inst.dup() |
| 276 | self.assertEqual( inst.bbox( ly ).to_s(), c1.bbox().transformed(tr).to_s() ) |
| 277 | self.assertEqual( inst.size(), 1 ) |
| 278 | self.assertEqual( inst.is_complex(), True ) |
| 279 | self.assertEqual( inst.is_regular_array(), False ) |
| 280 | c2.insert( inst ) |
| 281 | self.assertEqual( c2.bbox().to_s(), c1.bbox().transformed(tr).to_s() ) |
| 282 | |
| 283 | c2.clear_insts() |
| 284 | self.assertEqual( c2.bbox().to_s(), "()" ) |
| 285 | |
| 286 | tr = pya.Trans( pya.Trans.R90, pya.Point( 100, -50 ) ) |
| 287 | inst = pya.CellInstArray( c1.cell_index(), tr, pya.Point( 100, 0 ), pya.Point( 0, 100 ), 10, 20 ) |
| 288 | self.assertEqual( inst == inst2, False ) |
| 289 | self.assertEqual( inst != inst2, True ) |
| 290 | inst2 = inst.dup() |
| 291 | self.assertEqual( inst == inst2, True ) |
| 292 | self.assertEqual( inst != inst2, False ) |
| 293 | self.assertEqual( inst.bbox( ly ).to_s(), "(60,-40;1010,1900)" ) |
| 294 | self.assertEqual( inst.trans.to_s(), "r90 100,-50" ) |
| 295 | self.assertEqual( inst.cplx_trans.to_s(), "r90 *1 100,-50" ) |
| 296 | self.assertEqual( inst.size(), 200 ) |
nothing calls this directly
no test coverage detected