mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-04 08:43:42 +02:00
Vendored
+111
@@ -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}"
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
+8
@@ -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")
|
||||
|
||||
Vendored
+2
-1
@@ -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("")
|
||||
|
||||
|
||||
Vendored
+102
-20
@@ -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
|
||||
|
||||
|
||||
Vendored
+103
@@ -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")
|
||||
Vendored
+86
@@ -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")
|
||||
|
||||
Vendored
+16
-12
@@ -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 )
|
||||
|
||||
Vendored
+151
@@ -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
@@ -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 = []
|
||||
+19
-13
@@ -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 )
|
||||
Vendored
+8
@@ -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)"] )
|
||||
|
||||
Vendored
+86
-34
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user