Merge pull request #1147 from KLayout/wip

Wip
This commit is contained in:
Matthias Köfferlein
2022-09-04 09:08:08 +02:00
committed by GitHub
144 changed files with 47108 additions and 1554 deletions
+111
View File
@@ -169,6 +169,22 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
p.output(lb, dm + 10)
m.output(lb, dm + 11)
b.edges.inside(c).output(lb, dm + 20)
b.edges.not_inside(c).output(lb, dm + 21)
b.edges.inside(empty).output(lb, dm + 22)
b.edges.not_inside(empty).output(lb, dm + 23)
(p, m) = b.edges.split_inside(c)
p.output(lb, dm + 30)
m.output(lb, dm + 31)
b.edges.inside(c.edges).output(lb, dm + 40)
b.edges.not_inside(c.edges).output(lb, dm + 41)
b.edges.inside(empty.edges).output(lb, dm + 42)
b.edges.not_inside(empty.edges).output(lb, dm + 43)
(p, m) = b.edges.split_inside(c.edges)
p.output(lb, dm + 50)
m.output(lb, dm + 51)
b.covering(c).output(lb, dm + 100)
b.not_covering(c).output(lb, dm + 101)
b.covering(empty).output(lb, dm + 102)
@@ -185,6 +201,22 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
p.output(lb + 1, dm + 10)
m.output(lb + 1, dm + 11)
b.edges.outside(c).output(lb + 1, dm + 20)
b.edges.not_outside(c).output(lb + 1, dm + 21)
b.edges.outside(empty).output(lb + 1, dm + 22)
b.edges.not_outside(empty).output(lb + 1, dm + 23)
(p, m) = b.edges.split_outside(c)
p.output(lb + 1, dm + 30)
m.output(lb + 1, dm + 31)
b.edges.outside(c.edges).output(lb + 1, dm + 40)
b.edges.not_outside(c.edges).output(lb + 1, dm + 41)
b.edges.outside(empty.edges).output(lb + 1, dm + 42)
b.edges.not_outside(empty.edges).output(lb + 1, dm + 43)
(p, m) = b.edges.split_outside(c.edges)
p.output(lb + 1, dm + 50)
m.output(lb + 1, dm + 51)
b.overlapping(c).output(lb + 2, dm)
b.not_overlapping(c).output(lb + 2, dm + 1)
b.overlapping(empty).output(lb + 2, dm + 2)
@@ -201,6 +233,22 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
p.output(lb + 3, dm + 10)
m.output(lb + 3, dm + 11)
b.edges.interacting(c).output(lb + 3, dm + 20)
b.edges.not_interacting(c).output(lb + 3, dm + 21)
b.edges.interacting(empty).output(lb + 3, dm + 22)
b.edges.not_interacting(empty).output(lb + 3, dm + 23)
(p, m) = b.edges.split_interacting(c)
p.output(lb + 3, dm + 30)
m.output(lb + 3, dm + 31)
b.edges.interacting(c.edges).output(lb + 3, dm + 40)
b.edges.not_interacting(c.edges).output(lb + 3, dm + 41)
b.edges.interacting(empty.edges).output(lb + 3, dm + 42)
b.edges.not_interacting(empty.edges).output(lb + 3, dm + 43)
(p, m) = b.edges.split_interacting(c.edges)
p.output(lb + 3, dm + 50)
m.output(lb + 3, dm + 51)
bdup = b.dup
bdup.select_inside(c)
bdup.xor(b.inside(c)).output(lb + 4, dm)
@@ -213,6 +261,31 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
bdup = b.dup
bdup.select_not_inside(empty)
bdup.output(lb + 4, dm + 3)
bdup = b.dup.edges
bdup.select_inside(c)
bdup.xor(b.edges.inside(c)).output(lb + 4, dm + 10)
bdup = b.dup.edges
bdup.select_not_inside(c)
bdup.output(lb + 4, dm + 11)
bdup = b.dup.edges
bdup.select_inside(empty)
bdup.output(lb + 4, dm + 12)
bdup = b.dup.edges
bdup.select_not_inside(empty)
bdup.output(lb + 4, dm + 13)
bdup = b.dup.edges
bdup.select_inside(c.edges)
bdup.xor(b.edges.inside(c.edges)).output(lb + 4, dm + 20)
bdup = b.dup.edges
bdup.select_not_inside(c.edges)
bdup.output(lb + 4, dm + 21)
bdup = b.dup.edges
bdup.select_inside(empty)
bdup.output(lb + 4, dm + 22)
bdup = b.dup.edges
bdup.select_not_inside(empty)
bdup.output(lb + 4, dm + 23)
bdup = b.dup
bdup.select_outside(c)
bdup.xor(b.outside(c)).output(lb + 5, dm)
@@ -225,6 +298,31 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
bdup = b.dup
bdup.select_not_outside(empty)
bdup.output(lb + 5, dm + 3)
bdup = b.dup.edges
bdup.select_outside(c)
bdup.xor(b.edges.outside(c)).output(lb + 5, dm + 10)
bdup = b.dup.edges
bdup.select_not_outside(c)
bdup.output(lb + 5, dm + 11)
bdup = b.dup.edges
bdup.select_outside(empty)
bdup.output(lb + 5, dm + 12)
bdup = b.dup.edges
bdup.select_not_outside(empty)
bdup.output(lb + 5, dm + 13)
bdup = b.dup.edges
bdup.select_outside(c.edges)
bdup.xor(b.edges.outside(c.edges)).output(lb + 5, dm + 20)
bdup = b.dup.edges
bdup.select_not_outside(c.edges)
bdup.output(lb + 5, dm + 21)
bdup = b.dup.edges
bdup.select_outside(empty)
bdup.output(lb + 5, dm + 22)
bdup = b.dup.edges
bdup.select_not_outside(empty)
bdup.output(lb + 5, dm + 23)
bdup = b.dup
bdup.select_overlapping(c)
bdup.xor(b.overlapping(c)).output(lb + 6, dm)
@@ -237,6 +335,7 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
bdup = b.dup
bdup.select_not_overlapping(empty)
bdup.output(lb + 6, dm + 3)
bdup = b.dup
bdup.select_interacting(c)
bdup.xor(b.interacting(c)).output(lb + 7, dm)
@@ -249,8 +348,10 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
bdup = b.dup
bdup.select_not_interacting(empty)
bdup.output(lb + 7, dm + 3)
b.inside(empty).output(lb + 8, dm)
b.not_inside(empty).output(lb + 8, dm + 1)
b.outside(empty).output(lb + 9, dm)
b.not_outside(empty).output(lb + 9, dm + 1)
@@ -641,6 +742,16 @@ def run_testsuite(dm, ic, tiled = false, hier = false)
p.output(lb + 4, dm)
p = b.edges.intersections(c.edges)
p.output(lb + 5, dm)
(u, v) = c.edges.andnot(b.edges)
u.output(lb + 6, dm)
v.output(lb + 6, dm + 1)
p = b.edges.inside_part(c)
p.output(lb + 7, dm)
p = b.edges.outside_part(c)
p.output(lb + 7, dm + 1)
(u, v) = b.edges.inside_outside_part(c)
u.output(lb + 7, dm + 2)
v.output(lb + 7, dm + 3)
lb += 10 #450
message "--- texts and filters #{lb}"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+8
View File
@@ -183,6 +183,14 @@ class KLayoutMain_TestClass < TestBase
end
def test_11
# Headless LayoutView (GUI enabled)
out = `#{self.klayout_bin} -z -rd input=#{File.join(File.dirname(__FILE__), "test1.gds")} -r #{File.join(File.dirname(__FILE__), "test10.rb")} 2>&1`
assert_equal(out, "(0,0;8,8)\n")
end
end
load("test_epilogue.rb")
+2 -1
View File
@@ -568,8 +568,9 @@ class Ant_TestClass < TestBase
def test_5
lv = RBA::LayoutView::new
lv.set_config("ruler-templates", "mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global")
tpl = lv.annotation_templates
assert_equal(tpl.size > 0, true) # at least one default template
assert_equal(tpl.size, 1)
lv.unregister_annotation_templates("")
+102 -20
View File
@@ -25,14 +25,14 @@ load("test_prologue.rb")
def mapping_to_s(ly1, ly2, cm)
r = ""
ly1.each_cell_top_down do |c|
s = ly1.cell(c).name
ly2.each_cell_top_down do |c|
s = ly2.cell(c).name
if cm.has_mapping?(c)
t = cm.cell_mapping(c)
if t == RBA::CellMapping::DropCell
s += "=>(0)"
else
s += "=>" + ly2.cell(t).name
s += "=>" + ly1.cell(t).name
end
end
r == "" || (r += ";")
@@ -44,14 +44,14 @@ end
def mapping_to_s_from_table(ly1, ly2, cm)
table = cm.table
r = ""
ly1.each_cell_top_down do |c|
s = ly1.cell(c).name
ly2.each_cell_top_down do |c|
s = ly2.cell(c).name
if table[c]
t = table[c]
if t == RBA::CellMapping::DropCell
s += "=>(0)"
else
s += "=>" + ly2.cell(t).name
s += "=>" + ly1.cell(t).name
end
end
r == "" || (r += ";")
@@ -120,12 +120,21 @@ class DBCellMapping_TestClass < TestBase
mp = RBA::CellMapping::new
mp.from_names(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s_from_table(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s_from_table(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
mp = RBA::CellMapping::new
mp.from_names(ly1.cell(top1), ly2.cell(top2))
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s_from_table(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
mp = RBA::CellMapping::new
mp.from_geometry(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
mp = RBA::CellMapping::new
mp.from_geometry(ly1.cell(top1), ly2.cell(top2))
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
ly = RBA::Layout::new
@@ -150,17 +159,23 @@ class DBCellMapping_TestClass < TestBase
mp = RBA::CellMapping::new
mp.from_names(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;cx")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;cx")
ly1dup = ly1.dup
mp = RBA::CellMapping::new
nc = mp.from_names_full(ly1dup, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1dup, mp), "c0;c2=>c2;c1=>c1;cx=>cx")
assert_equal(mapping_to_s(ly1dup, ly2, mp), "c0;c2=>c2;c1=>c1;cx=>cx")
assert_equal(nc.inspect, "[3]")
ly1dup = ly1.dup
mp = RBA::CellMapping::new
nc = mp.from_names_full(ly1dup.cell(top1), ly2.cell(top2))
assert_equal(mapping_to_s(ly1dup, ly2, mp), "c0;c2=>c2;c1=>c1;cx=>cx")
assert_equal(nc.inspect, "[3]")
mp = RBA::CellMapping::new
mp.from_geometry(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;cx=>c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;cx=>c3")
ly = RBA::Layout::new
@@ -185,23 +200,29 @@ class DBCellMapping_TestClass < TestBase
mp = RBA::CellMapping::new
mp.from_names(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3")
mp = RBA::CellMapping::new
mp.from_geometry(ly1, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>c2;c1=>c1;c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>c2;c1=>c1;c3")
ly1dup = ly1.dup
mp = RBA::CellMapping::new
nc = mp.from_geometry_full(ly1dup, top1, ly2, top2)
assert_equal(mapping_to_s(ly2, ly1dup, mp), "c0;c2=>c2;c1=>c1;c3=>c3$1")
assert_equal(mapping_to_s(ly1dup, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3$1")
assert_equal(nc.inspect, "[3]")
ly1dup = ly1.dup
mp = RBA::CellMapping::new
nc = mp.from_geometry_full(ly1dup.cell(top1), ly2.cell(top2))
assert_equal(mapping_to_s(ly1dup, ly2, mp), "c0;c2=>c2;c1=>c1;c3=>c3$1")
assert_equal(nc.inspect, "[3]")
mp.clear
mp.from_geometry(ly1, top1, ly2, top2)
mp.map(ci2, RBA::CellMapping::DropCell)
assert_equal(mapping_to_s(ly2, ly1, mp), "c0;c2=>(0);c1=>c1;c3")
assert_equal(mapping_to_s_from_table(ly2, ly1, mp), "c0;c2=>(0);c1=>c1;c3")
assert_equal(mapping_to_s(ly1, ly2, mp), "c0;c2=>(0);c1=>c1;c3")
assert_equal(mapping_to_s_from_table(ly1, ly2, mp), "c0;c2=>(0);c1=>c1;c3")
end
@@ -223,6 +244,53 @@ class DBCellMapping_TestClass < TestBase
a1.insert(RBA::CellInstArray::new(a3.cell_index, RBA::Trans::new))
a2.insert(RBA::CellInstArray::new(a4.cell_index, RBA::Trans::new))
ly_target = RBA::Layout::new
b0 = ly_target.create_cell("b0")
cm = RBA::CellMapping::new
cm.for_single_cell(ly_target, b0.cell_index, ly, a1.cell_index)
assert_equal(mapping_to_s(ly_target, ly, cm), "a0;a1=>b0;a2;a3;a4;a5")
cm = RBA::CellMapping::new
cm.for_single_cell(b0, a1)
assert_equal(mapping_to_s(ly_target, ly, cm), "a0;a1=>b0;a2;a3;a4;a5")
lytdup = ly_target.dup
cm = RBA::CellMapping::new
nc = cm.for_single_cell_full(lytdup, b0.cell_index, ly, a1.cell_index)
assert_equal(nc.inspect, "[1, 2, 3]")
assert_equal(mapping_to_s(lytdup, ly, cm), "a0;a1=>b0;a2;a3=>a3;a4=>a4;a5=>a5")
lytdup = ly_target.dup
cm = RBA::CellMapping::new
nc = cm.for_single_cell_full(lytdup.cell(b0.cell_index), a1)
assert_equal(nc.inspect, "[1, 2, 3]")
assert_equal(mapping_to_s(lytdup, ly, cm), "a0;a1=>b0;a2;a3=>a3;a4=>a4;a5=>a5")
end
def test_3
ly = RBA::Layout::new
a0 = ly.create_cell("a0")
a1 = ly.create_cell("a1")
a2 = ly.create_cell("a2")
a3 = ly.create_cell("a3")
a4 = ly.create_cell("a4")
a5 = ly.create_cell("a5")
a3.insert(RBA::CellInstArray::new(a4.cell_index, RBA::Trans::new))
a3.insert(RBA::CellInstArray::new(a5.cell_index, RBA::Trans::new))
a1.insert(RBA::CellInstArray::new(a4.cell_index, RBA::Trans::new))
a1.insert(RBA::CellInstArray::new(a3.cell_index, RBA::Trans::new))
a2.insert(RBA::CellInstArray::new(a4.cell_index, RBA::Trans::new))
ly_target = RBA::Layout::new
b0 = ly_target.create_cell("b0")
b1 = ly_target.create_cell("b1")
@@ -231,12 +299,26 @@ class DBCellMapping_TestClass < TestBase
cm = RBA::CellMapping::new
cm.for_multi_cells(ly_target, [ b0, b1, b2 ].collect { |c| c.cell_index }, ly, [ a0, a1, a2 ].collect { |c| c.cell_index })
assert_equal(mapping_to_s(ly_target, ly, cm), "b0=>a0;b1=>a1;b2=>a2")
assert_equal(mapping_to_s(ly_target, ly, cm), "a0=>b0;a1=>b1;a2=>b2;a3;a4;a5")
cm = RBA::CellMapping::new
cm.for_multi_cells_full(ly_target, [ b0, b1, b2 ].collect { |c| c.cell_index }, ly, [ a0, a1, a2 ].collect { |c| c.cell_index })
cm.for_multi_cells([ b0, b1, b2 ], [ a0, a1, a2 ])
assert_equal(mapping_to_s(ly_target, ly, cm), "b0=>a0;b1=>a1;b2=>a2;a3=>a3;a4=>a4;a5=>a5")
assert_equal(mapping_to_s(ly_target, ly, cm), "a0=>b0;a1=>b1;a2=>b2;a3;a4;a5")
lytdup = ly_target.dup
cm = RBA::CellMapping::new
nc = cm.for_multi_cells_full(lytdup, [ b0, b1, b2 ].collect { |c| c.cell_index }, ly, [ a0, a1, a2 ].collect { |c| c.cell_index })
assert_equal(nc.inspect, "[3, 4, 5]")
assert_equal(mapping_to_s(lytdup, ly, cm), "a0=>b0;a1=>b1;a2=>b2;a3=>a3;a4=>a4;a5=>a5")
lytdup = ly_target.dup
cm = RBA::CellMapping::new
cm.for_multi_cells_full([ b0, b1, b2 ].collect { |c| lytdup.cell(c.cell_index) }, [ a0, a1, a2 ])
assert_equal(nc.inspect, "[3, 4, 5]")
assert_equal(mapping_to_s(lytdup, ly, cm), "a0=>b0;a1=>b1;a2=>b2;a3=>a3;a4=>a4;a5=>a5")
end
+103
View File
@@ -0,0 +1,103 @@
# encoding: UTF-8
# KLayout Layout Viewer
# Copyright (C) 2006-2022 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 DBCellTests_TestClass < TestBase
def make_layout
ly = RBA::Layout::new
top = ly.create_cell("TOP")
a = ly.create_cell("A")
l1 = ly.layer(1, 0)
a.shapes(l1).insert(RBA::DBox::new(1, 2, 3, 4))
top.insert(RBA::DCellInstArray::new(a.cell_index, RBA::DTrans::R0))
top.insert(RBA::DCellInstArray::new(a.cell_index, RBA::DTrans::R90))
ly
end
# writing cells
def test_1
tmp = File::join($ut_testtmp, "tmp.gds")
ly = make_layout
top = ly.top_cell
top.write(tmp)
ly2 = RBA::Layout::new
ly2.read(tmp)
assert_equal(RBA::Region::new(ly2.top_cell.begin_shapes_rec(ly2.layer(1, 0))).to_s, "(1000,2000;1000,4000;3000,4000;3000,2000);(-4000,1000;-4000,3000;-2000,3000;-2000,1000)")
tmp = File::join($ut_testtmp, "tmp2.gds")
opt = RBA::SaveLayoutOptions::new
opt.dbu = 0.005
top.write(tmp, opt)
ly2 = RBA::Layout::new
ly2.read(tmp)
assert_equal(RBA::Region::new(ly2.top_cell.begin_shapes_rec(ly2.layer(1, 0))).to_s, "(200,400;200,800;600,800;600,400);(-800,200;-800,600;-400,600;-400,200)")
end
# reading cells
def test_2
tmp = File::join($ut_testtmp, "tmp.gds")
ly = make_layout
top = ly.top_cell
top.write(tmp)
ly2 = RBA::Layout::new
ly2.dbu = 0.005
top = ly2.create_cell("IMPORTED")
top.read(tmp)
assert_equal(RBA::Region::new(top.begin_shapes_rec(ly2.layer(1, 0))).to_s, "(200,400;200,800;600,800;600,400);(-800,200;-800,600;-400,600;-400,200)")
ly2 = RBA::Layout::new
ly2.dbu = 0.005
top = ly2.create_cell("IMPORTED")
opt = RBA::LoadLayoutOptions::new
lm = RBA::LayerMap::new
lm.map("1/0 : 5/0", 0)
opt.layer_map = lm
top.read(tmp, opt)
assert_equal(RBA::Region::new(top.begin_shapes_rec(ly2.layer(5, 0))).to_s, "(200,400;200,800;600,800;600,400);(-800,200;-800,600;-400,600;-400,200)")
end
end
load("test_epilogue.rb")
+86
View File
@@ -336,6 +336,9 @@ class DBEdges_TestClass < TestBase
r = r1 & r2
assert_equal(r.to_s, "(50,0;100,0)")
assert_equal(r.is_merged?, true)
r = r1.andnot(r2)[0]
assert_equal(r.to_s, "(50,0;100,0)")
assert_equal(r.is_merged?, true)
r = r1.dup
r &= r2
assert_equal(r.to_s, "(50,0;100,0)")
@@ -343,6 +346,9 @@ class DBEdges_TestClass < TestBase
r = r1 - r2
assert_equal(r.to_s, "(0,0;50,0)")
assert_equal(r.is_merged?, true)
r = r1.andnot(r2)[1]
assert_equal(r.to_s, "(0,0;50,0)")
assert_equal(r.is_merged?, true)
r = r1.dup
r -= r2
assert_equal(r.to_s, "(0,0;50,0)")
@@ -482,7 +488,9 @@ class DBEdges_TestClass < TestBase
g2.insert(RBA::Box::new(0, 10, 200, 20))
assert_equal(r.interacting(r2).to_s, "(100,0;100,50)")
assert_equal(r.split_interacting(r2)[0].to_s, "(100,0;100,50)")
assert_equal(r.not_interacting(r2).to_s, "(0,0;100,0)")
assert_equal(r.split_interacting(r2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_interacting(r2)
assert_equal(rr.to_s, "(100,0;100,50)")
@@ -491,7 +499,9 @@ class DBEdges_TestClass < TestBase
assert_equal(rr.to_s, "(0,0;100,0)")
assert_equal(r.interacting(g2).to_s, "(100,0;100,50)")
assert_equal(r.split_interacting(g2)[0].to_s, "(100,0;100,50)")
assert_equal(r.not_interacting(g2).to_s, "(0,0;100,0)")
assert_equal(r.split_interacting(g2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_interacting(g2)
assert_equal(rr.to_s, "(100,0;100,50)")
@@ -539,8 +549,11 @@ class DBEdges_TestClass < TestBase
e.insert(RBA::Edge::new(-100, 100, 200, 100))
assert_equal((e & r).to_s, "(0,100;100,100)")
assert_equal(e.inside_part(r).to_s, "(0,100;100,100)")
assert_equal(e.inside_outside_part(r)[0].to_s, "(0,100;100,100)")
ee = e.dup
assert_equal((ee & r).to_s, "(0,100;100,100)")
assert_equal(ee.andnot(r)[0].to_s, "(0,100;100,100)")
ee &= r
assert_equal(ee.to_s, "(0,100;100,100)")
@@ -550,8 +563,11 @@ class DBEdges_TestClass < TestBase
assert_equal(csort((e - r).to_s), csort("(-100,100;0,100);(100,100;200,100)"))
assert_equal(csort(e.outside_part(r).to_s), csort("(-100,100;0,100);(100,100;200,100)"))
assert_equal(csort(e.inside_outside_part(r)[1].to_s), csort("(-100,100;0,100);(100,100;200,100)"))
ee = e.dup
assert_equal((ee - r).to_s, csort("(-100,100;0,100);(100,100;200,100)"))
assert_equal(ee.andnot(r)[1].to_s, csort("(-100,100;0,100);(100,100;200,100)"))
ee -= r
assert_equal(csort(ee.to_s), csort("(-100,100;0,100);(100,100;200,100)"))
@@ -625,6 +641,76 @@ class DBEdges_TestClass < TestBase
end
# inside
def test_10
r = RBA::Edges::new
r.insert(RBA::Edge::new(0, 0, 100, 0))
r.insert(RBA::Edge::new(0, 10, 100, 10))
r2 = RBA::Edges::new
r2.insert(RBA::Edge::new(0, 10, 200, 10))
g2 = RBA::Region::new
g2.insert(RBA::Box::new(0, 10, 200, 20))
assert_equal(r.inside(r2).to_s, "(0,10;100,10)")
assert_equal(r.split_inside(r2)[0].to_s, "(0,10;100,10)")
assert_equal(r.not_inside(r2).to_s, "(0,0;100,0)")
assert_equal(r.split_inside(r2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_inside(r2)
assert_equal(rr.to_s, "(0,10;100,10)")
rr = r.dup
rr.select_not_inside(r2)
assert_equal(rr.to_s, "(0,0;100,0)")
assert_equal(r.inside(g2).to_s, "(0,10;100,10)")
assert_equal(r.split_inside(g2)[0].to_s, "(0,10;100,10)")
assert_equal(r.not_inside(g2).to_s, "(0,0;100,0)")
assert_equal(r.split_inside(g2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_inside(g2)
assert_equal(rr.to_s, "(0,10;100,10)")
rr = r.dup
rr.select_not_inside(g2)
assert_equal(rr.to_s, "(0,0;100,0)")
end
# outside
def test_11
r = RBA::Edges::new
r.insert(RBA::Edge::new(0, 0, 100, 0))
r.insert(RBA::Edge::new(0, 10, 100, 10))
r2 = RBA::Edges::new
r2.insert(RBA::Edge::new(0, 0, 200, 0))
g2 = RBA::Region::new
g2.insert(RBA::Box::new(0, -5, 200, 5))
assert_equal(r.outside(r2).to_s, "(0,10;100,10)")
assert_equal(r.split_outside(r2)[0].to_s, "(0,10;100,10)")
assert_equal(r.not_outside(r2).to_s, "(0,0;100,0)")
assert_equal(r.split_outside(r2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_outside(r2)
assert_equal(rr.to_s, "(0,10;100,10)")
rr = r.dup
rr.select_not_outside(r2)
assert_equal(rr.to_s, "(0,0;100,0)")
assert_equal(r.outside(g2).to_s, "(0,10;100,10)")
assert_equal(r.split_outside(g2)[0].to_s, "(0,10;100,10)")
assert_equal(r.not_outside(g2).to_s, "(0,0;100,0)")
assert_equal(r.split_outside(g2)[1].to_s, "(0,0;100,0)")
rr = r.dup
rr.select_outside(g2)
assert_equal(rr.to_s, "(0,10;100,10)")
rr = r.dup
rr.select_not_outside(g2)
assert_equal(rr.to_s, "(0,0;100,0)")
end
end
load("test_epilogue.rb")
+16 -12
View File
@@ -53,21 +53,23 @@ class DBInstance_TestClass < TestBase
assert_equal(c1.bbox.to_s, "(10,-10;50,40)")
assert_equal(c1.bbox_per_layer(lindex).to_s, "(10,-10;50,40)")
assert_equal(c1.bbox_per_layer(ldummy).to_s, "()")
assert_equal(c1.bbox(lindex).to_s, "(10,-10;50,40)")
assert_equal(c1.bbox(ldummy).to_s, "()")
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 101, -51 ) )
inst = RBA::CellInstArray::new( c1.cell_index, tr )
assert_equal(inst.bbox(ly).to_s, "(61,-41;111,-1)")
assert_equal(inst.bbox_per_layer(ly, lindex).to_s, "(61,-41;111,-1)")
assert_equal(inst.bbox_per_layer(ly, ldummy).to_s, "()")
assert_equal(inst.bbox(ly, lindex).to_s, "(61,-41;111,-1)")
assert_equal(inst.bbox(ly, ldummy).to_s, "()")
inst_ref = c2.insert( inst )
assert_equal( inst_ref.to_s, "cell_index=0 r90 101,-51" )
assert_equal( inst_ref.bbox.to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.cell_inst.bbox(ly).to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.bbox_per_layer(lindex).to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.cell_inst.bbox_per_layer(ly, lindex).to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.bbox_per_layer(ldummy).to_s, "()" )
assert_equal( inst_ref.cell_inst.bbox_per_layer(ly, ldummy).to_s, "()" )
assert_equal( inst_ref.bbox(lindex).to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.cell_inst.bbox(ly, lindex).to_s, "(61,-41;111,-1)" )
assert_equal( inst_ref.bbox(ldummy).to_s, "()" )
assert_equal( inst_ref.cell_inst.bbox(ly, ldummy).to_s, "()" )
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 100, -50 ) )
inst = RBA::CellInstArray::new( c1.cell_index, tr )
@@ -514,21 +516,23 @@ class DBInstance_TestClass < TestBase
assert_equal(c1.dbbox.to_s, "(0.01,-0.01;0.05,0.04)")
assert_equal(c1.dbbox_per_layer(lindex).to_s, "(0.01,-0.01;0.05,0.04)")
assert_equal(c1.dbbox_per_layer(ldummy).to_s, "()")
assert_equal(c1.dbbox(lindex).to_s, "(0.01,-0.01;0.05,0.04)")
assert_equal(c1.dbbox(ldummy).to_s, "()")
tr = RBA::DTrans::new( RBA::DTrans::R90, RBA::DPoint::new( 0.101, -0.051 ) )
inst = RBA::DCellInstArray::new( c1.cell_index, tr )
assert_equal(inst.bbox(ly).to_s, "(0.061,-0.041;0.111,-0.001)")
assert_equal(inst.bbox_per_layer(ly, lindex).to_s, "(0.061,-0.041;0.111,-0.001)")
assert_equal(inst.bbox_per_layer(ly, ldummy).to_s, "()")
assert_equal(inst.bbox(ly, lindex).to_s, "(0.061,-0.041;0.111,-0.001)")
assert_equal(inst.bbox(ly, ldummy).to_s, "()")
inst_ref = c2.insert( inst )
assert_equal( inst_ref.to_s, "cell_index=0 r90 101,-51" )
assert_equal( inst_ref.dbbox.to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dcell_inst.bbox(ly).to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dbbox_per_layer(lindex).to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dcell_inst.bbox_per_layer(ly, lindex).to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dbbox_per_layer(ldummy).to_s, "()" )
assert_equal( inst_ref.dcell_inst.bbox_per_layer(ly, ldummy).to_s, "()" )
assert_equal( inst_ref.dbbox(lindex).to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dcell_inst.bbox(ly, lindex).to_s, "(0.061,-0.041;0.111,-0.001)" )
assert_equal( inst_ref.dbbox(ldummy).to_s, "()" )
assert_equal( inst_ref.dcell_inst.bbox(ly, ldummy).to_s, "()" )
tr = RBA::DTrans::new( RBA::DTrans::R90, RBA::DPoint::new( 0.100, -0.050 ) )
inst = RBA::DCellInstArray::new( c1.cell_index, tr )
+151
View File
@@ -94,6 +94,157 @@ class DBLayerMapping_TestClass < TestBase
end
def test_2
lmap = RBA::LayerMap::new
lmap.map( "1/0", 0 )
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(1, 0)), true)
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(1, 1)), false)
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(2, 2)), false)
lmap.map( "2/2", 0 )
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(2, 2)), true)
lmap.map( "10/2", 0 )
assert_equal( lmap.mapping_str(0), "1/0;2/2;10/2" )
lmap.map( "3/2", 1 )
lmap.map( "2/2", 1 )
lmap.map( "4/2", 1 )
lmap.map( "1/2", 1 )
lmap.map( "0/0", 1 )
assert_equal( lmap.mapping_str(1), "0/0;1-4/2" ) # could be "0/0;1-4/2" as well ...
lmap.map( RBA::LayerInfo::new(2, 2), RBA::LayerInfo::new(4, 4), 2 )
lmap.map( RBA::LayerInfo::new(0, 1), 2 )
assert_equal( lmap.mapping_str(2), "0/1;2-4/2-4" )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(2, 4)), true )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 0)), true )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap.logical(RBA::LayerInfo::new(2, 4)), 2 )
assert_equal( lmap.logical(RBA::LayerInfo::new(4, 2)), 2 )
assert_equal( lmap.logical(RBA::LayerInfo::new(1, 2)), 1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(0, 0)), 1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(100, 0)), -1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(10, 2)), 0 )
assert_equal( lmap.logical(RBA::LayerInfo::new(1, 0)), 0 )
assert_equal( lmap.mapping(2).to_s, "2/2" )
assert_equal( lmap.mapping(1).to_s, "1/2" )
assert_equal( lmap.mapping(0).to_s, "10/2" )
lmap2 = lmap.dup
lmap.clear
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(2, 4)), false )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 0)), false )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(2, 4)), true )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 0)), true )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap2.mapping(0).to_s, "10/2" )
lmap2.assign( lmap )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(2, 4)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 0)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
lmap = RBA::LayerMap::new
lmap.map( "2/2:4/4", 0 )
lmap.map( RBA::LayerInfo::new(0, 1), 2, RBA::LayerInfo::new(5, 5) )
assert_equal( lmap.mapping_str(0), "2/2 : 4/4" )
assert_equal( lmap.mapping(0).to_s, "4/4" )
assert_equal( lmap.mapping(2).to_s, "5/5" )
lmap = RBA::LayerMap::new
lmap.map("*/*", 0)
lmap.unmap(RBA::LayerInfo::new(5, 10))
assert_equal(lmap.mapping_str(0), "0-4/*;5/0-9,11-*;6-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.unmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21))
assert_equal(lmap.mapping_str(0), "0-4/*;5-16/0-9,22-*;17-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.unmap("5-16/10-21")
assert_equal(lmap.mapping_str(0), "0-4/*;5-16/0-9,22-*;17-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5/10")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), 1, RBA::LayerInfo::new(100, 0))
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5/10 : 100/0")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21), 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21), 1, RBA::LayerInfo::new(100, 0))
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21 : 100/0")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap("5-16/10-21", 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21")
assert_equal(lmap.logicals(RBA::LayerInfo::new(5, 10)), [ 0, 1 ])
assert_equal(lmap.logicals(RBA::LayerInfo::new(0, 10)), [ 0 ])
# optional log layer
lmap.clear
lmap.map("*/*")
lmap.mmap("5-16/10-22")
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-22")
end
def test_3
# LayerMap tests
lm = RBA::LayerMap.new
lm.map("1-10/5-20", 0)
lm.map("3/0", 1)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(0, 0)), false)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 0)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 1)), false)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 5)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 20)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(1, 5)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(1, 20)), true)
assert_equal(lm.mapping_str(1), "3/0")
assert_equal(lm.mapping(1).to_s, "3/0")
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 1)
lm.clear
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 0)), false)
lm.map(RBA::LayerInfo.new(3, 0), 2)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 2)
lm.map(RBA::LayerInfo.new(1, 0), RBA::LayerInfo.new(10, 10), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 3)), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(1, 3)), 1)
end
end
load("test_epilogue.rb")
+2 -146
View File
@@ -23,126 +23,10 @@ end
load("test_prologue.rb")
class DBLayout_TestClass < TestBase
class DBLayoutTests1_TestClass < TestBase
def test_1
lmap = RBA::LayerMap::new
lmap.map( "1/0", 0 )
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(1, 0)), true)
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(1, 1)), false)
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(2, 2)), false)
lmap.map( "2/2", 0 )
assert_equal(lmap.is_mapped(RBA::LayerInfo::new(2, 2)), true)
lmap.map( "10/2", 0 )
assert_equal( lmap.mapping_str(0), "1/0;2/2;10/2" )
lmap.map( "3/2", 1 )
lmap.map( "2/2", 1 )
lmap.map( "4/2", 1 )
lmap.map( "1/2", 1 )
lmap.map( "0/0", 1 )
assert_equal( lmap.mapping_str(1), "0/0;1-4/2" ) # could be "0/0;1-4/2" as well ...
lmap.map( RBA::LayerInfo::new(2, 2), RBA::LayerInfo::new(4, 4), 2 )
lmap.map( RBA::LayerInfo::new(0, 1), 2 )
assert_equal( lmap.mapping_str(2), "0/1;2-4/2-4" )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(2, 4)), true )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 0)), true )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap.logical(RBA::LayerInfo::new(2, 4)), 2 )
assert_equal( lmap.logical(RBA::LayerInfo::new(4, 2)), 2 )
assert_equal( lmap.logical(RBA::LayerInfo::new(1, 2)), 1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(0, 0)), 1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(100, 0)), -1 )
assert_equal( lmap.logical(RBA::LayerInfo::new(10, 2)), 0 )
assert_equal( lmap.logical(RBA::LayerInfo::new(1, 0)), 0 )
assert_equal( lmap.mapping(2).to_s, "2/2" )
assert_equal( lmap.mapping(1).to_s, "1/2" )
assert_equal( lmap.mapping(0).to_s, "10/2" )
lmap2 = lmap.dup
lmap.clear
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(2, 4)), false )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 0)), false )
assert_equal( lmap.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(2, 4)), true )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 0)), true )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
assert_equal( lmap2.mapping(0).to_s, "10/2" )
lmap2.assign( lmap )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(2, 4)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 0)), false )
assert_equal( lmap2.is_mapped?(RBA::LayerInfo::new(0, 100)), false )
lmap = RBA::LayerMap::new
lmap.map( "2/2:4/4", 0 )
lmap.map( RBA::LayerInfo::new(0, 1), 2, RBA::LayerInfo::new(5, 5) )
assert_equal( lmap.mapping_str(0), "2/2 : 4/4" )
assert_equal( lmap.mapping(0).to_s, "4/4" )
assert_equal( lmap.mapping(2).to_s, "5/5" )
lmap = RBA::LayerMap::new
lmap.map("*/*", 0)
lmap.unmap(RBA::LayerInfo::new(5, 10))
assert_equal(lmap.mapping_str(0), "0-4/*;5/0-9,11-*;6-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.unmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21))
assert_equal(lmap.mapping_str(0), "0-4/*;5-16/0-9,22-*;17-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.unmap("5-16/10-21")
assert_equal(lmap.mapping_str(0), "0-4/*;5-16/0-9,22-*;17-*/*")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5/10")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), 1, RBA::LayerInfo::new(100, 0))
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5/10 : 100/0")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21), 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap(RBA::LayerInfo::new(5, 10), RBA::LayerInfo::new(16, 21), 1, RBA::LayerInfo::new(100, 0))
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21 : 100/0")
lmap.clear
lmap.map("*/*", 0)
lmap.mmap("5-16/10-21", 1)
assert_equal(lmap.mapping_str(0), "+*/*")
assert_equal(lmap.mapping_str(1), "+5-16/10-21")
assert_equal(lmap.logicals(RBA::LayerInfo::new(5, 10)), [ 0, 1 ])
assert_equal(lmap.logicals(RBA::LayerInfo::new(0, 10)), [ 0 ])
end
def test_2
# LayerInfo tests
l1 = RBA::LayerInfo::new
assert_equal(l1.to_s, "")
@@ -170,7 +54,7 @@ class DBLayout_TestClass < TestBase
end
def test_3
def test_2
ly = RBA::Layout.new
ly.read(ENV["TESTSRC"] + "/testdata/gds/t10.gds")
@@ -269,34 +153,6 @@ class DBLayout_TestClass < TestBase
end
def test_4
# LayerMap tests
lm = RBA::LayerMap.new
lm.map("1-10/5-20", 0)
lm.map("3/0", 1)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(0, 0)), false)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 0)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 1)), false)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 5)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 20)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(1, 5)), true)
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(1, 20)), true)
assert_equal(lm.mapping_str(1), "3/0")
assert_equal(lm.mapping(1).to_s, "3/0")
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 1)
lm.clear
assert_equal(lm.is_mapped?(RBA::LayerInfo.new(3, 0)), false)
lm.map(RBA::LayerInfo.new(3, 0), 2)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 2)
lm.map(RBA::LayerInfo.new(1, 0), RBA::LayerInfo.new(10, 10), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 0)), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(3, 3)), 1)
assert_equal(lm.logical(RBA::LayerInfo.new(1, 3)), 1)
end
def collect(s, l)
res = []
@@ -23,7 +23,7 @@ end
load("test_prologue.rb")
class DBLayoutTest_TestClass < TestBase
class DBLayoutTests2_TestClass < TestBase
# LayerInfo
def test_1_Layout
@@ -206,22 +206,28 @@ class DBLayoutTest_TestClass < TestBase
assert_equal( c1.bbox.to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox_per_layer( lindex ).to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox_per_layer( ldummy ).to_s, "()" )
assert_equal( c1.bbox( lindex ).to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox( ldummy ).to_s, "()" )
assert_equal( c1.dbbox_per_layer( lindex ).to_s, "(0.01,-0.01;0.05,0.04)" )
assert_equal( c1.dbbox_per_layer( ldummy ).to_s, "()" )
assert_equal( c1.dbbox( lindex ).to_s, "(0.01,-0.01;0.05,0.04)" )
assert_equal( c1.dbbox( ldummy ).to_s, "()" )
c1.swap( lindex, ldummy )
assert_equal( c1.bbox_per_layer( lindex ).to_s, "()" )
assert_equal( c1.bbox_per_layer( ldummy ).to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox( lindex ).to_s, "()" )
assert_equal( c1.bbox( ldummy ).to_s, "(10,-10;50,40)" )
c1.clear( lindex )
c1.clear( ldummy )
assert_equal( c1.bbox_per_layer( lindex ).to_s, "()" )
assert_equal( c1.bbox_per_layer( ldummy ).to_s, "()" )
assert_equal( c1.bbox( lindex ).to_s, "()" )
assert_equal( c1.bbox( ldummy ).to_s, "()" )
c1.shapes( lindex ).insert( RBA::Box::new( 10, -10, 50, 40 ) )
assert_equal( c1.bbox_per_layer( lindex ).to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox_per_layer( ldummy ).to_s, "()" )
assert_equal( c1.bbox( lindex ).to_s, "(10,-10;50,40)" )
assert_equal( c1.bbox( ldummy ).to_s, "()" )
c1.clear_shapes
assert_equal( c1.bbox_per_layer( lindex ).to_s, "()" )
assert_equal( c1.bbox_per_layer( ldummy ).to_s, "()" )
assert_equal( c1.bbox( lindex ).to_s, "()" )
assert_equal( c1.bbox( ldummy ).to_s, "()" )
assert_equal( ly.unique_cell_name("c3"), "c3" )
assert_equal( ly.unique_cell_name("c1"), "c1$1" )
@@ -255,8 +261,8 @@ class DBLayoutTest_TestClass < TestBase
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 100, -50 ) )
inst = RBA::CellInstArray::new( c1.cell_index, tr )
assert_equal( inst.bbox( ly ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox_per_layer( ly, lindex ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox_per_layer( ly, ldummy ).to_s, "()" )
assert_equal( inst.bbox( ly, lindex ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox( ly, ldummy ).to_s, "()" )
assert_equal( inst.size, 1 )
assert_equal( inst.is_complex?, false )
c2.insert( inst )
@@ -496,8 +502,8 @@ class DBLayoutTest_TestClass < TestBase
tr = RBA::Trans::new( RBA::Trans::R90, RBA::Point::new( 100, -50 ) )
inst = RBA::CellInstArray::new( c1.cell_index, tr )
assert_equal( inst.bbox( ly ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox_per_layer( ly, lindex ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox_per_layer( ly, ldummy ).to_s, "()" )
assert_equal( inst.bbox( ly, lindex ).to_s, c1.bbox.transformed(tr).to_s )
assert_equal( inst.bbox( ly, ldummy ).to_s, "()" )
assert_equal( inst.size, 1 )
assert_equal( inst.is_complex?, false )
c2.insert( inst, pid )
+8
View File
@@ -33,6 +33,11 @@ class DBShapes_TestClass < TestBase
# Shapes
def test_7_Layout
shapes = RBA::Shapes::new
assert_equal(shapes.cell == nil, true)
assert_equal(shapes.layout == nil, true)
ly = RBA::Layout::new
ci1 = ly.add_cell( "c1" )
@@ -57,6 +62,9 @@ class DBShapes_TestClass < TestBase
shapes = c1.shapes( lindex )
assert_equal(shapes.cell == c1, true)
assert_equal(shapes.layout == ly, true)
arr = []
shapes.each( RBA::Shapes::SAll ) { |s| arr.push( s.box.to_s ) }
assert_equal( arr, ["(10,-10;50,40)", "(100,-10;150,40)", "(200,-10;250,40)"] )
+86 -34
View File
@@ -440,47 +440,99 @@ RESULT
end
class MyAction < RBA::Action
attr_accessor :dyn_visible, :dyn_enabled
def initialize
self.dyn_visible = true
self.dyn_enabled = true
if RBA.constants.member?(:Action)
class MyAction < RBA::Action
attr_accessor :dyn_visible, :dyn_enabled
def initialize
self.dyn_visible = true
self.dyn_enabled = true
end
def wants_visible
self.dyn_visible
end
def wants_enabled
self.dyn_enabled
end
end
def wants_visible
self.dyn_visible
end
def wants_enabled
self.dyn_enabled
def test_7
a = MyAction::new
assert_equal(a.is_effective_visible?, true)
a.hidden = true
assert_equal(a.is_effective_visible?, false)
a.hidden = false
assert_equal(a.is_effective_visible?, true)
a.visible = false
assert_equal(a.is_effective_visible?, false)
a.visible = true
assert_equal(a.is_effective_visible?, true)
a.dyn_visible = false
assert_equal(a.is_effective_visible?, false)
a.dyn_visible = true
assert_equal(a.is_effective_visible?, true)
assert_equal(a.is_effective_enabled?, true)
a.enabled = false
assert_equal(a.is_effective_enabled?, false)
a.enabled = true
assert_equal(a.is_effective_enabled?, true)
a.dyn_enabled = false
assert_equal(a.is_effective_enabled?, false)
a.dyn_enabled = true
assert_equal(a.is_effective_enabled?, true)
end
end
def test_7
def test_8
a = MyAction::new
if !RBA.constants.member?(:Action)
return
end
assert_equal(a.is_effective_visible?, true)
a.hidden = true
assert_equal(a.is_effective_visible?, false)
a.hidden = false
assert_equal(a.is_effective_visible?, true)
a.visible = false
assert_equal(a.is_effective_visible?, false)
a.visible = true
assert_equal(a.is_effective_visible?, true)
a.dyn_visible = false
assert_equal(a.is_effective_visible?, false)
a.dyn_visible = true
assert_equal(a.is_effective_visible?, true)
action = RBA::Action::new
action.title = "title:n1"
assert_equal(a.is_effective_enabled?, true)
a.enabled = false
assert_equal(a.is_effective_enabled?, false)
a.enabled = true
assert_equal(a.is_effective_enabled?, true)
a.dyn_enabled = false
assert_equal(a.is_effective_enabled?, false)
a.dyn_enabled = true
assert_equal(a.is_effective_enabled?, true)
menu = RBA::AbstractMenu::new
assert_equal(menu.action("s1.n1"), nil)
assert_equal(menu.action("s1"), nil)
menu.insert_menu("end", "s1", "submenu1")
menu.insert_menu("end", "s2", "submenu2")
menu.insert_item("s1.end", "n1", action)
menu.insert_item("s1.end", "n2", action)
menu.insert_item("s2.end", "n1", action)
assert_equal(menu.action("s1.n1") == action, true)
assert_equal(menu.action("s1.n2") == action, true)
assert_equal(menu.action("s2.n1") == action, true)
assert_equal(menu.is_valid?("s1.n1"), true)
assert_equal(menu.is_valid?("s1.n2"), true)
assert_equal(menu.is_valid?("s2.n1"), true)
menu.clear_menu("s1")
assert_equal(menu.is_valid?("s1.n1"), false)
assert_equal(menu.is_valid?("s1.n2"), false)
assert_equal(menu.is_valid?("s2.n1"), true)
menu.clear_menu("s2")
assert_equal(menu.is_valid?("s1.n1"), false)
assert_equal(menu.is_valid?("s1.n2"), false)
assert_equal(menu.is_valid?("s2.n1"), false)
# proof of transfer of ownership
assert_equal(action._destroyed?, true)
menu._destroy
end