mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-07 19:51:32 +02:00
Merge branch 'master' into feature/issue-2147
This commit is contained in:
Vendored
+30
@@ -315,6 +315,12 @@ class DBLayoutTests1_TestClass < TestBase
|
||||
# delete_cell
|
||||
|
||||
l = RBA::Layout.new
|
||||
begin
|
||||
l.delete_cell(0) # must throw an exception
|
||||
assert_equal(true, false)
|
||||
rescue
|
||||
end
|
||||
|
||||
l.insert_layer_at(0, RBA::LayerInfo.new(1, 0))
|
||||
c0 = l.cell(l.add_cell("c0"))
|
||||
c1 = l.cell(l.add_cell("c1"))
|
||||
@@ -371,6 +377,12 @@ class DBLayoutTests1_TestClass < TestBase
|
||||
# delete_cells
|
||||
|
||||
l = RBA::Layout.new
|
||||
begin
|
||||
l.delete_cells([0, 1]) # must throw an exception
|
||||
assert_equal(true, false)
|
||||
rescue
|
||||
end
|
||||
|
||||
l.insert_layer_at(0, RBA::LayerInfo.new(1, 0))
|
||||
c0 = l.cell(l.add_cell("c0"))
|
||||
c1 = l.cell(l.add_cell("c1"))
|
||||
@@ -412,6 +424,12 @@ class DBLayoutTests1_TestClass < TestBase
|
||||
# prune_cell
|
||||
|
||||
l = RBA::Layout.new
|
||||
begin
|
||||
l.prune_cell(0) # must throw an exception
|
||||
assert_equal(true, false)
|
||||
rescue
|
||||
end
|
||||
|
||||
l.insert_layer_at(0, RBA::LayerInfo.new(1, 0))
|
||||
c0 = l.cell(l.add_cell("c0"))
|
||||
c1 = l.cell(l.add_cell("c1"))
|
||||
@@ -488,6 +506,12 @@ class DBLayoutTests1_TestClass < TestBase
|
||||
# delete_cell_rec
|
||||
|
||||
l = RBA::Layout.new
|
||||
begin
|
||||
l.delete_cell_rec(0) # must throw an exception
|
||||
assert_equal(true, false)
|
||||
rescue
|
||||
end
|
||||
|
||||
l.insert_layer_at(0, RBA::LayerInfo.new(1, 0))
|
||||
c0 = l.cell(l.add_cell("c0"))
|
||||
c1 = l.cell(l.add_cell("c1"))
|
||||
@@ -643,6 +667,12 @@ class DBLayoutTests1_TestClass < TestBase
|
||||
# prune_subcells
|
||||
|
||||
l = RBA::Layout.new
|
||||
begin
|
||||
l.prune_subcells(0) # must throw an exception
|
||||
assert_equal(true, false)
|
||||
rescue
|
||||
end
|
||||
|
||||
l.insert_layer_at(0, RBA::LayerInfo.new(1, 0))
|
||||
c0 = l.cell(l.add_cell("c0"))
|
||||
c1 = l.cell(l.add_cell("c1"))
|
||||
|
||||
Vendored
+144
-6
@@ -23,6 +23,19 @@ end
|
||||
|
||||
load("test_prologue.rb")
|
||||
|
||||
class MyLibImpl < RBA::Library
|
||||
def initialize
|
||||
@reload_count = 0
|
||||
end
|
||||
def reload_count
|
||||
@reload_count
|
||||
end
|
||||
def reload
|
||||
@reload_count += 1
|
||||
return "RBA-unit-test2"
|
||||
end
|
||||
end
|
||||
|
||||
class DBLibrary_TestClass < TestBase
|
||||
|
||||
def test_1_registration
|
||||
@@ -45,14 +58,17 @@ class DBLibrary_TestClass < TestBase
|
||||
assert_equal(RBA::Library::library_names.member?("RBA-unit-test"), true)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test").id, lib_id)
|
||||
|
||||
# destroy should not do anything as libraries are not to be removed through the destructor
|
||||
lib._destroy
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test").id, lib_id)
|
||||
assert_equal(lib.destroyed?, true)
|
||||
# The library reference is kept internally
|
||||
lib = nil
|
||||
GC.start
|
||||
GC.start
|
||||
|
||||
lib = RBA::Library::library_by_name("RBA-unit-test")
|
||||
assert_equal(lib.destroyed?, false)
|
||||
lib.delete
|
||||
assert_equal(lib.name, "RBA-unit-test")
|
||||
|
||||
lib._destroy
|
||||
assert_equal(lib.destroyed?, true)
|
||||
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
|
||||
end
|
||||
@@ -103,6 +119,128 @@ class DBLibrary_TestClass < TestBase
|
||||
|
||||
end
|
||||
|
||||
def test_4_library_registration_and_rename
|
||||
|
||||
lib = RBA::Library::new
|
||||
lib.description = "LIB1"
|
||||
lib.delete
|
||||
assert_equal(lib.destroyed?, true)
|
||||
|
||||
lib = RBA::Library::new
|
||||
lib.layout.create_cell("A")
|
||||
lib.description = "LIB1"
|
||||
lib.register("RBA-unit-test")
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test").description, "LIB1")
|
||||
|
||||
lib.unregister
|
||||
assert_equal(lib.destroyed?, false)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
|
||||
lib.register("RBA-unit-test")
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test").description, "LIB1")
|
||||
|
||||
ly = RBA::Layout::new
|
||||
ci = ly.create_cell("A", "RBA-unit-test").cell_index
|
||||
assert_equal(ly.cell(ci).qname, "RBA-unit-test.A")
|
||||
|
||||
lib.rename("RBA-unit-test2")
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test2").description, "LIB1")
|
||||
|
||||
assert_equal(ly.cell(ci).qname, "RBA-unit-test2.A")
|
||||
|
||||
lib.delete
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test2"), nil)
|
||||
|
||||
assert_equal(ly.cell(ci).qname, "<defunct>RBA-unit-test2.A")
|
||||
|
||||
end
|
||||
|
||||
def test_5_reload
|
||||
|
||||
lib = MyLibImpl::new
|
||||
lib.description = "LIB1"
|
||||
lib.register("RBA-unit-test")
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test").description, "LIB1")
|
||||
|
||||
lib.refresh
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test2").description, "LIB1")
|
||||
|
||||
assert_equal(lib.reload_count, 1)
|
||||
|
||||
lib.delete
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test"), nil)
|
||||
assert_equal(RBA::Library::library_by_name("RBA-unit-test2"), nil)
|
||||
|
||||
end
|
||||
|
||||
def test_6_cells_become_defunct_after_unregister
|
||||
|
||||
lib = RBA::Library::new
|
||||
lib.description = "LIB1"
|
||||
lib.register("RBA-unit-test")
|
||||
|
||||
cell_a = lib.layout.create_cell("A")
|
||||
l1 = lib.layout.layer(1, 0)
|
||||
cell_a.shapes(l1).insert(RBA::Box::new(0, 0, 1000, 2000))
|
||||
|
||||
ly = RBA::Layout::new
|
||||
lc = ly.create_cell("A", "RBA-unit-test")
|
||||
assert_equal(lc.qname, "RBA-unit-test.A")
|
||||
ci = lc.cell_index
|
||||
|
||||
lib.unregister
|
||||
|
||||
# NOTE: cleanup has not been called, so we can find the cell using the cell_index
|
||||
# (the actual cell object is no longer there because it has been replaced by
|
||||
# a cold proxy)
|
||||
lc = ly.cell(ci)
|
||||
assert_equal(lc.qname, "<defunct>RBA-unit-test.A")
|
||||
|
||||
# this will restore the reference
|
||||
lib.register("RBA-unit-test")
|
||||
|
||||
lc = ly.cell(ci)
|
||||
assert_equal(lc.qname, "RBA-unit-test.A")
|
||||
|
||||
end
|
||||
|
||||
def test_7_change_ref
|
||||
|
||||
lib = RBA::Library::new
|
||||
lib.description = "LIB1"
|
||||
lib.register("RBA-unit-test")
|
||||
l1 = lib.layout.layer(1, 0)
|
||||
|
||||
cell_a = lib.layout.create_cell("A")
|
||||
cell_a.shapes(l1).insert(RBA::Box::new(0, 0, 1000, 2000))
|
||||
|
||||
lib2 = RBA::Library::new
|
||||
lib2.description = "LIB2"
|
||||
lib2.register("RBA-unit-test2")
|
||||
l1 = lib2.layout.layer(1, 0)
|
||||
|
||||
cell_b = lib2.layout.create_cell("B")
|
||||
cell_b.shapes(l1).insert(RBA::Box::new(0, 0, 2000, 1000))
|
||||
|
||||
ly = RBA::Layout::new
|
||||
c1 = ly.create_cell("A", "RBA-unit-test")
|
||||
assert_equal(c1.qname, "RBA-unit-test.A")
|
||||
|
||||
c1.change_ref(lib2.id, cell_b.cell_index)
|
||||
assert_equal(c1.qname, "RBA-unit-test2.B")
|
||||
|
||||
ly = RBA::Layout::new
|
||||
c1 = ly.create_cell("A", "RBA-unit-test")
|
||||
assert_equal(c1.qname, "RBA-unit-test.A")
|
||||
|
||||
c1.change_ref("RBA-unit-test2", "B")
|
||||
assert_equal(c1.qname, "RBA-unit-test2.B")
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
load("test_epilogue.rb")
|
||||
|
||||
Reference in New Issue
Block a user