klayout/testdata/ruby/dbInstElementTest.rb

100 lines
3.6 KiB
Ruby
Raw Normal View History

$:.push(File::dirname($0))
load("test_prologue.rb")
class DBInstElement_TestClass < TestBase
# InstElement tests
def test_1_InstElement
ly = RBA::Layout::new
ci1 = ly.add_cell( "c1" )
ci2 = ly.add_cell( "c2" )
ci3 = ly.add_cell( "c3" )
ci4 = ly.add_cell( "c4" )
assert_equal( ci1, 0 )
assert_equal( ci2, 1 )
assert_equal( ci3, 2 )
assert_equal( ci4, 3 )
c1 = ly.cell( ci1 )
c2 = ly.cell( ci2 )
c3 = ly.cell( ci3 )
c4 = ly.cell( ci4 )
pid = ly.properties_id( { 17 => "a", "b" => [ 1, 5, 7 ] }.to_a )
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 100, -50 ) )
inst1 = RBA::CellInstArray::new( 1, tr )
c1.insert( inst1 )
tr = RBA::CplxTrans::new( 1.5, 90.0, true, RBA::DPoint::new( 100, -50 ) )
inst2 = RBA::CellInstArray::new( 2, tr )
c1.insert( inst2, pid )
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 100, -50 ) )
inst3 = RBA::CellInstArray::new( 3, tr, RBA::Point::new( 100, 0 ), RBA::Point::new( 0, 100 ), 10, 20 )
c1.insert( inst3 )
inst1r = nil
inst2r = nil
inst3r = nil
c1.each_inst { |inst| inst1r = inst if inst.cell_index == 1; }
c1.each_inst { |inst| inst2r = inst if inst.cell_index == 2; }
c1.each_inst { |inst| inst3r = inst if inst.cell_index == 3; }
assert_equal( inst1r.cell_index, 1 )
assert_equal( inst2r.cell_index, 2 )
assert_equal( inst3r.cell_index, 3 )
assert_equal( inst1r == inst1r, true )
assert_equal( inst1r < inst1r, false )
assert_equal( inst1r == inst2r, false )
assert_equal( (inst1r < inst2r ? 1 : 0) + (inst2r < inst1r ? 1 : 0), 1 )
assert_equal( inst1r != inst1r, false )
assert_equal( inst1r != inst2r, true )
ie1 = RBA::InstElement::new( inst1r )
ie2 = RBA::InstElement::new( inst2r )
ie3 = RBA::InstElement::new( inst3r )
assert_equal( ie1.cell_inst.cell_index, 1 )
assert_equal( ie2.cell_inst.cell_index, 2 )
assert_equal( ie3.cell_inst.cell_index, 3 )
assert_equal( ie1 == ie1, true )
assert_equal( ie1 == ie2, false )
assert_equal( ie1 < ie1, false )
assert_equal( (ie1 < ie2 ? 1 : 0) + (ie2 < ie1 ? 1 : 0), 1 )
assert_equal( ie1 != ie1, false )
assert_equal( ie1 != ie2, true )
assert_equal( ie1.array_member_trans.to_s, "r0 0,0" )
assert_equal( ie1.specific_trans.to_s, "r90 100,-50" )
assert_equal( ie1.cell_inst.trans.to_s, "r90 100,-50" )
assert_equal( ie1.specific_cplx_trans.to_s, "r90 *1 100,-50" )
assert_equal( ie1.cell_inst.cplx_trans.to_s, "r90 *1 100,-50" )
assert_equal( ie2.array_member_trans.to_s, "r0 0,0" )
assert_equal( ie2.specific_trans.to_s, "m45 100,-50" )
assert_equal( ie2.cell_inst.trans.to_s, "m45 100,-50" )
assert_equal( ie2.specific_cplx_trans.to_s, "m45 *1.5 100,-50" )
assert_equal( ie2.cell_inst.cplx_trans.to_s, "m45 *1.5 100,-50" )
assert_equal( ie3.array_member_trans.to_s, "r0 0,0" )
assert_equal( ie3.specific_trans.to_s, "r90 100,-50" )
assert_equal( ie3.cell_inst.trans.to_s, "r90 100,-50" )
assert_equal( ie3.specific_cplx_trans.to_s, "r90 *1 100,-50" )
assert_equal( ie3.cell_inst.cplx_trans.to_s, "r90 *1 100,-50" )
ie3 = RBA::InstElement::new( inst3r, 1, 5 )
assert_equal( ie3.cell_inst.cell_index, 3 )
assert_equal( ie3.array_member_trans.to_s, "r0 100,500" )
assert_equal( ie3.specific_trans.to_s, "r90 200,450" )
assert_equal( ie3.cell_inst.trans.to_s, "r90 100,-50" )
assert_equal( ie3.specific_cplx_trans.to_s, "r90 *1 200,450" )
assert_equal( ie3.cell_inst.cplx_trans.to_s, "r90 *1 100,-50" )
end
end
load("test_epilogue.rb")