Added some tests for the netlist browser API

This commit is contained in:
Matthias Koefferlein 2026-03-23 21:42:49 +01:00
parent 1588e74873
commit c03a617fe2
2 changed files with 119 additions and 0 deletions

View File

@ -149,6 +149,7 @@ RUBYTEST (extNetTracer, "extNetTracer.rb")
RUBYTEST (imgObject, "imgObject.rb") RUBYTEST (imgObject, "imgObject.rb")
RUBYTEST (layLayers, "layLayers.rb") RUBYTEST (layLayers, "layLayers.rb")
RUBYTEST (layLayoutView, "layLayoutView.rb") RUBYTEST (layLayoutView, "layLayoutView.rb")
RUBYTEST (layNetlistBrowser, "layNetlistBrowser.rb")
RUBYTEST (layMainWindow, "layMainWindow.rb") RUBYTEST (layMainWindow, "layMainWindow.rb")
RUBYTEST (layMarkers, "layMarkers.rb") RUBYTEST (layMarkers, "layMarkers.rb")
RUBYTEST (layMacro, "layMacro.rb") RUBYTEST (layMacro, "layMacro.rb")

118
testdata/ruby/layNetlistBrowser.rb vendored Normal file
View File

@ -0,0 +1,118 @@
# encoding: UTF-8
# KLayout Layout Viewer
# Copyright (C) 2006-2026 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 LAYNetlistBrowser_TestClass < TestBase
# Basic view creation and MainWindow events
def test_1
if !RBA.constants.member?(:Application)
return
end
app = RBA::Application.instance
mw = app.main_window
mw.close_all
cv = mw.load_layout(ENV["TESTSRC"] + "/testdata/lvs/ringo_mixed_hierarchy.gds", 0)
lv = cv.view
nb = lv.netlist_browser
db = lv.lvsdb(lv.create_lvsdb("DB1"))
db.read(ENV["TESTSRC"] + "/testdata/lvs/ringo_mixed_hierarchy.lvsdb")
lv.show_lvsdb(0, 0)
# Test path selections
nl = nb.db.netlist
# net
n = nl.circuit_by_name("INVX1").net_by_name("OUT")
pth = RBA::NetlistObjectsPath.from_first(n)
nb.current_path = pth
assert_equal(nb.current_path.first.net.to_s, "INVX1:OUT")
assert_equal(nb.current_path.second.net.to_s, "INVX1:OUT")
# device
n = nl.circuit_by_name("INVX1").device_by_id(1)
pth = RBA::NetlistObjectsPath.from_first(n)
nb.current_path = pth
assert_equal(nb.current_path.first.device.expanded_name, "$1")
assert_equal(nb.current_path.second.device.expanded_name, "$1")
# subcircuit
n = nl.circuit_by_name("RINGO").subcircuit_by_id(2)
pth = RBA::NetlistObjectsPath.from_first(n)
nb.current_path = pth
assert_equal(nb.current_path.first.path[-1].expanded_name, "$2")
assert_equal(nb.current_path.second.path[-1].expanded_name, "$11")
# circuit
n = nl.circuit_by_name("INVX1")
pth = RBA::NetlistObjectsPath.from_first(n)
nb.current_path = pth
assert_equal(nb.current_path.first.root.name, "INVX1")
assert_equal(nb.current_path.second.root.name, "INVX1")
nl = nb.db.reference
# net:
n = nl.circuit_by_name("INVX1").net_by_name("OUT")
pth = RBA::NetlistObjectsPath.from_second(n)
nb.current_path = pth
assert_equal(nb.current_path.first.net.to_s, "INVX1:OUT")
assert_equal(nb.current_path.second.net.to_s, "INVX1:OUT")
# device
n = nl.circuit_by_name("INVX1").device_by_name("$2")
pth = RBA::NetlistObjectsPath.from_second(n)
nb.current_path = pth
assert_equal(nb.current_path.first.device.expanded_name, "$2")
assert_equal(nb.current_path.second.device.expanded_name, "$2")
# subcircuit
n = nl.circuit_by_name("RINGO").subcircuit_by_name("$3")
pth = RBA::NetlistObjectsPath.from_second(n)
nb.current_path = pth
assert_equal(nb.current_path.first.path[-1].expanded_name, "$4")
assert_equal(nb.current_path.second.path[-1].expanded_name, "$3")
# circuit
n = nl.circuit_by_name("INVX1")
pth = RBA::NetlistObjectsPath.from_second(n)
nb.current_path = pth
assert_equal(nb.current_path.first.root.name, "INVX1")
assert_equal(nb.current_path.second.root.name, "INVX1")
mw.close_all
end
end
load("test_epilogue.rb")