klayout/testdata/ruby/dbCellInstArrayTest.rb

666 lines
25 KiB
Ruby
Raw Normal View History

# encoding: UTF-8
# KLayout Layout Viewer
2024-01-01 17:06:23 +01:00
# Copyright (C) 2006-2024 Matthias Koefferlein
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
if !$:.member?(File::dirname($0))
$:.push(File::dirname($0))
end
load("test_prologue.rb")
class DBCellInst_TestClass < TestBase
def ci2str(ci)
a = []
ci.each_trans { |t| a << t.to_s }
a.join(";")
end
def cci2str(ci)
a = []
ci.each_cplx_trans { |t| a << t.to_s }
a.join(";")
end
# CellInstArray
def test_0_CellInstArray
a = RBA::CellInstArray::new
assert_equal(a.to_s, "#0 r0 0,0")
assert_equal(a.size, 1)
a = RBA::CellInstArray::new(0, RBA::Trans::new(RBA::Trans::R90))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
a = RBA::CellInstArray::new(0, RBA::Vector::new(42, -17))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 42,-17")
assert_equal(a.cplx_trans.to_s, "r0 *1 42,-17")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.5))
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1.5 0,0")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.0))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1 0,0")
a.transform(RBA::Trans::R90)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
at = a.transformed(RBA::ICplxTrans::new(1.5))
assert_equal(a.is_complex?, false)
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r90 *1.5 0,0")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.0, 45, false, RBA::Vector::new))
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r45 *1 0,0")
at = a.transformed(RBA::Trans::R90)
atdup = at.dup
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *1 0,0")
assert_equal(at < a, false)
assert_equal(at < atdup, false)
assert_equal(a < at, true)
assert_equal(atdup < at, false)
assert_equal(a != at, true)
assert_equal(a == at, false)
assert_equal(atdup != at, false)
assert_equal(atdup == at, true)
at.transform(RBA::ICplxTrans::new(2.5))
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *2.5 0,0")
at.invert
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r180 0,0")
assert_equal(at.cplx_trans.to_s, "r225 *0.4 0,0")
a = RBA::CellInstArray::new(0, RBA::Trans::new(RBA::Trans::R90), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
assert_equal(a.to_s, "#0 r90 0,0 [10,20*3;30,40*5]")
a = RBA::CellInstArray::new(0, RBA::Vector::new(42, -17), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 42,-17")
assert_equal(a.cplx_trans.to_s, "r0 *1 42,-17")
assert_equal(a.to_s, "#0 r0 42,-17 [10,20*3;30,40*5]")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.5), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1.5 0,0")
assert_equal(a.to_s, "#0 r0 *1.5 0,0 [10,20*3;30,40*5]")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.0), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1 0,0")
a.transform(RBA::Trans::R90)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
assert_equal(a.to_s, "#0 r90 0,0 [-20,10*3;-40,30*5]")
at = a.transformed(RBA::ICplxTrans::new(1.5))
assert_equal(a.is_complex?, false)
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r90 *1.5 0,0")
assert_equal(at.to_s, "#0 r90 *1.5 0,0 [-30,15*3;-60,45*5]")
a = RBA::CellInstArray::new(0, RBA::ICplxTrans::new(1.0, 45, false, RBA::Vector::new), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r45 *1 0,0")
assert_equal(a.to_s, "#0 r45 *1 0,0 [10,20*3;30,40*5]")
at = a.transformed(RBA::Trans::R90)
atdup = at.dup
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *1 0,0")
assert_equal(at.to_s, "#0 r135 *1 0,0 [-20,10*3;-40,30*5]")
assert_equal(at < a, false)
assert_equal(at < atdup, false)
assert_equal(a < at, true)
assert_equal(atdup < at, false)
assert_equal(a != at, true)
assert_equal(a == at, false)
assert_equal(atdup != at, false)
assert_equal(atdup == at, true)
at.transform(RBA::ICplxTrans::new(2.5))
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *2.5 0,0")
assert_equal(at.to_s, "#0 r135 *2.5 0,0 [-50,25*3;-100,75*5]")
at.invert
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r180 0,0")
assert_equal(at.cplx_trans.to_s, "r225 *0.4 0,0")
assert_equal(at.to_s, "#0 r225 *0.4 0,0 [-21,-7*3;-49,-7*5]")
end
# DCellInstArray
def test_0_DCellInstArray
a = RBA::DCellInstArray::new
assert_equal(a.to_s, "#0 r0 0,0")
assert_equal(a.size, 1)
a = RBA::DCellInstArray::new(0, RBA::DTrans::new(RBA::DTrans::R90))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
a = RBA::DCellInstArray::new(0, RBA::DVector::new(42, -17))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 42,-17")
assert_equal(a.cplx_trans.to_s, "r0 *1 42,-17")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.5))
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1.5 0,0")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.0))
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1 0,0")
a.transform(RBA::DTrans::R90)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
at = a.transformed(RBA::DCplxTrans::new(1.5))
assert_equal(a.is_complex?, false)
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r90 *1.5 0,0")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.0, 45, false, RBA::DVector::new))
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r45 *1 0,0")
at = a.transformed(RBA::DTrans::R90)
atdup = at.dup
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *1 0,0")
assert_equal(at < a, false)
assert_equal(at < atdup, false)
assert_equal(a < at, true)
assert_equal(atdup < at, false)
assert_equal(a != at, true)
assert_equal(a == at, false)
assert_equal(atdup != at, false)
assert_equal(atdup == at, true)
at.transform(RBA::DCplxTrans::new(2.5))
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *2.5 0,0")
at.invert
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r180 0,0")
assert_equal(at.cplx_trans.to_s, "r225 *0.4 0,0")
a = RBA::DCellInstArray::new(0, RBA::DTrans::new(RBA::DTrans::R90), RBA::DVector::new(10, 20), RBA::DVector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
assert_equal(a.to_s, "#0 r90 0,0 [10,20*3;30,40*5]")
a = RBA::DCellInstArray::new(0, RBA::DVector::new(42, -17), RBA::DVector::new(10, 20), RBA::DVector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 42,-17")
assert_equal(a.cplx_trans.to_s, "r0 *1 42,-17")
assert_equal(a.to_s, "#0 r0 42,-17 [10,20*3;30,40*5]")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.5), RBA::DVector::new(10, 20), RBA::DVector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1.5 0,0")
assert_equal(a.to_s, "#0 r0 *1.5 0,0 [10,20*3;30,40*5]")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.0), RBA::DVector::new(10, 20), RBA::DVector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r0 *1 0,0")
a.transform(RBA::DTrans::R90)
assert_equal(a.is_complex?, false)
assert_equal(a.trans.to_s, "r90 0,0")
assert_equal(a.cplx_trans.to_s, "r90 *1 0,0")
assert_equal(a.to_s, "#0 r90 0,0 [-20,10*3;-40,30*5]")
at = a.transformed(RBA::DCplxTrans::new(1.5))
assert_equal(a.is_complex?, false)
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r90 *1.5 0,0")
assert_equal(at.to_s, "#0 r90 *1.5 0,0 [-30,15*3;-60,45*5]")
a = RBA::DCellInstArray::new(0, RBA::DCplxTrans::new(1.0, 45, false, RBA::DVector::new), RBA::DVector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.is_complex?, true)
assert_equal(a.trans.to_s, "r0 0,0")
assert_equal(a.cplx_trans.to_s, "r45 *1 0,0")
assert_equal(a.to_s, "#0 r45 *1 0,0 [10,20*3;30,40*5]")
at = a.transformed(RBA::DTrans::R90)
atdup = at.dup
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *1 0,0")
assert_equal(at.to_s, "#0 r135 *1 0,0 [-20,10*3;-40,30*5]")
assert_equal(at < a, false)
assert_equal(at < atdup, false)
assert_equal(a < at, true)
assert_equal(atdup < at, false)
assert_equal(a != at, true)
assert_equal(a == at, false)
assert_equal(atdup != at, false)
assert_equal(atdup == at, true)
at.transform(RBA::DCplxTrans::new(2.5))
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r90 0,0")
assert_equal(at.cplx_trans.to_s, "r135 *2.5 0,0")
assert_equal(at.to_s, "#0 r135 *2.5 0,0 [-50,25*3;-100,75*5]")
at.invert
assert_equal(at.is_complex?, true)
assert_equal(at.trans.to_s, "r180 0,0")
assert_equal(at.cplx_trans.to_s, "r225 *0.4 0,0")
assert_equal(at.to_s, "#0 r225 *0.4 0,0 [-21.2132034356,-7.07106781187*3;-49.4974746831,-7.07106781187*5]")
end
# CellInstArray functions
def test_1_CellInstArray
i = RBA::CellInstArray.new
assert_equal(i.to_s, "#0 r0 0,0")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1 0,0")
i = RBA::CellInstArray.new(7, RBA::Trans.new(RBA::Point.new(1, 2)))
assert_equal(i.to_s, "#7 r0 1,2")
assert_equal(ci2str(i), "r0 1,2")
assert_equal(cci2str(i), "r0 *1 1,2")
assert_equal(i.cell_index.to_s, "7")
i.cell_index = 8
assert_equal(i.cell_index.to_s, "8")
assert_equal(i.is_complex?, false)
i.trans = RBA::Trans.new(3)
assert_equal(i.is_complex?, false)
assert_equal(i.to_s, "#8 r270 0,0")
i.cplx_trans = RBA::CplxTrans.new(1.5)
assert_equal(i.is_complex?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1.5 0,0")
assert_equal(i.is_regular_array?, false)
i.a = RBA::Point.new(10, 20)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10,20*1;0,0*1]")
assert_equal(i.a.to_s, "10,20")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1.5 0,0")
i.na = 5
assert_equal(i.is_regular_array?, true)
assert_equal(i.na, 5)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10,20*5;0,0*1]")
i.b = RBA::Point.new(30, 40)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10,20*5;30,40*1]")
assert_equal(i.b.to_s, "30,40")
i.nb = 3
assert_equal(i.is_regular_array?, true)
assert_equal(i.nb, 3)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10,20*5;30,40*3]")
assert_equal(ci2str(i), "r0 0,0;r0 10,20;r0 20,40;r0 30,60;r0 40,80;r0 30,40;r0 40,60;r0 50,80;r0 60,100;r0 70,120;r0 60,80;r0 70,100;r0 80,120;r0 90,140;r0 100,160")
assert_equal(cci2str(i), "r0 *1.5 0,0;r0 *1.5 10,20;r0 *1.5 20,40;r0 *1.5 30,60;r0 *1.5 40,80;r0 *1.5 30,40;r0 *1.5 40,60;r0 *1.5 50,80;r0 *1.5 60,100;r0 *1.5 70,120;r0 *1.5 60,80;r0 *1.5 70,100;r0 *1.5 80,120;r0 *1.5 90,140;r0 *1.5 100,160")
ii = i.dup
ii.trans = RBA::Trans.new(3)
assert_equal(ii.is_complex?, false)
assert_equal(ii.to_s, "#8 r270 0,0 [10,20*5;30,40*3]")
i.nb = 0
assert_equal(i.is_regular_array?, false)
assert_equal(i.to_s, "#8 r0 *1.5 0,0")
assert_equal(ii.to_s, "#8 r270 0,0 [10,20*5;30,40*3]")
ii.na = 1
assert_equal(ii.to_s, "#8 r270 0,0 [10,20*1;30,40*3]")
assert_equal(ci2str(ii), "r270 0,0;r270 30,40;r270 60,80")
assert_equal(cci2str(ii), "r270 *1 0,0;r270 *1 30,40;r270 *1 60,80")
ii.na = 0
assert_equal(ii.to_s, "#8 r270 0,0")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new(10, 20), RBA::Vector::new, 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;0,0*1]")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new(10, 20), RBA::Vector::new(11, 21), 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;11,21*2]")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new, RBA::Vector::new(11, 21), 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [0,0*1;11,21*2]")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new, RBA::Vector::new, 2, 2)
assert_equal(i.to_s, "#0 r0 1,2")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new(10, 20), RBA::Vector::new(11, 21), 0, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*1;11,21*2]")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new(10, 20), RBA::Vector::new(11, 21), 2, 0)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;11,21*1]")
i = RBA::CellInstArray.new(0, RBA::Vector::new(1, 2), RBA::Vector::new(10, 20), RBA::Vector::new(11, 21), 0, 0)
assert_equal(i.to_s, "#0 r0 1,2")
end
# DCellInstArray functions
def test_1_DCellInstArray
i = RBA::DCellInstArray.new
assert_equal(i.to_s, "#0 r0 0,0")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1 0,0")
i = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)))
assert_equal(i.to_s, "#7 r0 1.5,2.5")
assert_equal(ci2str(i), "r0 1.5,2.5")
assert_equal(cci2str(i), "r0 *1 1.5,2.5")
assert_equal(i.cell_index.to_s, "7")
i.cell_index = 8
assert_equal(i.cell_index.to_s, "8")
assert_equal(i.is_complex?, false)
i.trans = RBA::DTrans.new(3)
assert_equal(i.is_complex?, false)
assert_equal(i.to_s, "#8 r270 0,0")
i.cplx_trans = RBA::DCplxTrans.new(1.5)
assert_equal(i.is_complex?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1.5 0,0")
assert_equal(i.is_regular_array?, false)
i.a = RBA::DPoint.new(10.5, 20.5)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10.5,20.5*1;0,0*1]")
assert_equal(i.a.to_s, "10.5,20.5")
assert_equal(ci2str(i), "r0 0,0")
assert_equal(cci2str(i), "r0 *1.5 0,0")
i.na = 5
assert_equal(i.na, 5)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10.5,20.5*5;0,0*1]")
i.b = RBA::DPoint.new(30, 40)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10.5,20.5*5;30,40*1]")
assert_equal(i.b.to_s, "30,40")
i.nb = 3
assert_equal(i.nb, 3)
assert_equal(i.is_regular_array?, true)
assert_equal(i.to_s, "#8 r0 *1.5 0,0 [10.5,20.5*5;30,40*3]")
assert_equal(ci2str(i), "r0 0,0;r0 10.5,20.5;r0 21,41;r0 31.5,61.5;r0 42,82;r0 30,40;r0 40.5,60.5;r0 51,81;r0 61.5,101.5;r0 72,122;r0 60,80;r0 70.5,100.5;r0 81,121;r0 91.5,141.5;r0 102,162")
assert_equal(cci2str(i), "r0 *1.5 0,0;r0 *1.5 10.5,20.5;r0 *1.5 21,41;r0 *1.5 31.5,61.5;r0 *1.5 42,82;r0 *1.5 30,40;r0 *1.5 40.5,60.5;r0 *1.5 51,81;r0 *1.5 61.5,101.5;r0 *1.5 72,122;r0 *1.5 60,80;r0 *1.5 70.5,100.5;r0 *1.5 81,121;r0 *1.5 91.5,141.5;r0 *1.5 102,162")
ii = i.dup
ii.trans = RBA::DTrans.new(3)
assert_equal(ii.is_complex?, false)
assert_equal(ii.to_s, "#8 r270 0,0 [10.5,20.5*5;30,40*3]")
i.nb = 0
assert_equal(i.is_regular_array?, false)
assert_equal(i.to_s, "#8 r0 *1.5 0,0")
assert_equal(ii.to_s, "#8 r270 0,0 [10.5,20.5*5;30,40*3]")
ii.na = 1
assert_equal(ii.to_s, "#8 r270 0,0 [10.5,20.5*1;30,40*3]")
assert_equal(ci2str(ii), "r270 0,0;r270 30,40;r270 60,80")
assert_equal(cci2str(ii), "r270 *1 0,0;r270 *1 30,40;r270 *1 60,80")
ii.na = 0
assert_equal(ii.to_s, "#8 r270 0,0")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new(10, 20), RBA::DVector::new, 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;0,0*1]")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new(10, 20), RBA::DVector::new(11, 21), 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;11,21*2]")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new, RBA::DVector::new(11, 21), 2, 2)
assert_equal(i.to_s, "#0 r0 1,2 [0,0*1;11,21*2]")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new, RBA::DVector::new, 2, 2)
assert_equal(i.to_s, "#0 r0 1,2")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new(10, 20), RBA::DVector::new(11, 21), 0, 2)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*1;11,21*2]")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new(10, 20), RBA::DVector::new(11, 21), 2, 0)
assert_equal(i.to_s, "#0 r0 1,2 [10,20*2;11,21*1]")
i = RBA::DCellInstArray.new(0, RBA::DVector::new(1, 2), RBA::DVector::new(10, 20), RBA::DVector::new(11, 21), 0, 0)
assert_equal(i.to_s, "#0 r0 1,2")
end
# DCellInstArray fuzzy compare
def test_2_FuzzyCompare
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)))
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5 + 1e-7, 2.5)))
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5 + 1e-4, 2.5)))
assert_equal(i1 == i2, true)
assert_equal(i1 != i2, false)
assert_equal(i1.eql?(i2), true)
assert_equal(i1 < i2, false)
assert_equal(i2 < i1, false)
assert_equal(i1 == i3, false)
assert_equal(i1 != i3, true)
assert_equal(i1.eql?(i3), false)
assert_equal(i1 < i3, true)
assert_equal(i3 < i1, false)
end
# DCellInstArray hash function
def test_2_Hash
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)))
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5 + 1e-7, 2.5)))
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5 + 1e-4, 2.5)))
i4 = RBA::DCellInstArray.new(3, RBA::DTrans.new(RBA::DPoint.new(1.5 + 1e-4, 2.5)))
assert_equal(i1.hash == i2.hash, true)
assert_equal(i1.hash == i3.hash, false)
assert_equal(i1.hash == i4.hash, false)
h = { i1 => "i1", i3 => "i3", i4 => "i4" }
assert_equal(h[i1], "i1")
assert_equal(h[i2], "i1")
assert_equal(h[i3], "i3")
assert_equal(h[i4], "i4")
end
# DCellInstArray hash function
def test_3_Hash
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 5, 6)
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1 + 1e-7, 2), RBA::DPoint::new(3, 4), 5, 6)
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1 + 1e-4, 2), RBA::DPoint::new(3, 4), 5, 6)
i4 = RBA::DCellInstArray.new(3, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 7, 6)
assert_equal(i1.hash == i2.hash, true)
assert_equal(i1.hash == i3.hash, false)
assert_equal(i1.hash == i4.hash, false)
h = { i1 => "i1", i3 => "i3", i4 => "i4" }
assert_equal(h[i1], "i1")
assert_equal(h[i2], "i1")
assert_equal(h[i3], "i3")
assert_equal(h[i4], "i4")
end
# DCellInstArray fuzzy compare
def test_3_FuzzyCompare
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 5, 6)
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1 + 1e-7, 2), RBA::DPoint::new(3, 4), 5, 6)
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1 + 1e-4, 2), RBA::DPoint::new(3, 4), 5, 6)
assert_equal(i1 == i2, true)
assert_equal(i1 != i2, false)
assert_equal(i1.eql?(i2), true)
assert_equal(i1 < i2, false)
assert_equal(i2 < i1, false)
assert_equal(i1 == i3, false)
assert_equal(i1 != i3, true)
assert_equal(i1.eql?(i3), false)
assert_equal(i1 < i3, true)
assert_equal(i3 < i1, false)
end
# DCellInstArray hash function
def test_4_Hash
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 5, 6)
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3 + 1e-7, 4), 5, 6)
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3 + 1e-4, 4), 5, 6)
i4 = RBA::DCellInstArray.new(3, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 5, 8)
i5 = RBA::DCellInstArray.new(3, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)))
assert_equal(i1.hash == i2.hash, true)
assert_equal(i1.hash == i3.hash, false)
assert_equal(i1.hash == i4.hash, false)
h = { i1 => "i1", i3 => "i3", i4 => "i4", i5 => "i5" }
assert_equal(h[i1], "i1")
assert_equal(h[i2], "i1")
assert_equal(h[i3], "i3")
assert_equal(h[i4], "i4")
assert_equal(h[i5], "i5")
end
# DCellInstArray fuzzy compare
def test_4_FuzzyCompare
i1 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3, 4), 5, 6)
i2 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3 + 1e-7, 4), 5, 6)
i3 = RBA::DCellInstArray.new(7, RBA::DTrans.new(RBA::DPoint.new(1.5, 2.5)), RBA::DPoint::new(1, 2), RBA::DPoint::new(3 + 1e-4, 4), 5, 6)
assert_equal(i1 == i2, true)
assert_equal(i1 != i2, false)
assert_equal(i1.eql?(i2), true)
assert_equal(i1 < i2, false)
assert_equal(i2 < i1, false)
assert_equal(i1 == i3, false)
assert_equal(i1 != i3, true)
assert_equal(i1.eql?(i3), false)
assert_equal(i1 < i3, true)
assert_equal(i3 < i1, false)
end
# Cell * variants
def test_5_CellPointer
ly = RBA::Layout::new
cell = ly.create_cell("TOP")
a = RBA::CellInstArray::new(cell, RBA::Trans::new(RBA::Trans::R90))
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::Vector::new(42, -17))
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::ICplxTrans::new(1.5))
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::ICplxTrans::new(1.0, 45, false, RBA::Vector::new))
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::Trans::new(RBA::Trans::R90), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::Vector::new(42, -17), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.cell_index, cell.cell_index)
a = RBA::CellInstArray::new(cell, RBA::ICplxTrans::new(1.5), RBA::Vector::new(10, 20), RBA::Vector::new(30, 40), 3, 5)
assert_equal(a.cell_index, cell.cell_index)
end
end
load("test_epilogue.rb")