2017-07-23 23:03:21 +02:00
|
|
|
# encoding: UTF-8
|
2017-02-12 13:21:08 +01:00
|
|
|
|
2017-07-23 23:03:21 +02:00
|
|
|
# KLayout Layout Viewer
|
2019-01-08 00:58:45 +01:00
|
|
|
# Copyright (C) 2006-2019 Matthias Koefferlein
|
2017-07-23 23:03:21 +02:00
|
|
|
#
|
|
|
|
|
# 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
|
2017-02-12 13:21:08 +01:00
|
|
|
|
|
|
|
|
load("test_prologue.rb")
|
|
|
|
|
|
|
|
|
|
class LAYLayers_TestClass < TestBase
|
|
|
|
|
|
|
|
|
|
def lnode_str( space, l )
|
|
|
|
|
return space + l.current.source( true ) + "\n";
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def lnodes_str( space, l )
|
|
|
|
|
res = ""
|
|
|
|
|
while ! l.at_end?
|
|
|
|
|
res += lnode_str( space, l )
|
|
|
|
|
if (l.current.has_children?)
|
|
|
|
|
l.down_first_child
|
|
|
|
|
res += lnodes_str( " #{space}", l )
|
|
|
|
|
l.up
|
|
|
|
|
end
|
|
|
|
|
l.next_sibling( 1 )
|
|
|
|
|
end
|
|
|
|
|
return res
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def lnodes_str2(v)
|
|
|
|
|
res = []
|
|
|
|
|
v.each_layer do |c|
|
|
|
|
|
res << c.source(true)
|
|
|
|
|
end
|
|
|
|
|
return res.join("\n")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def lnodes_str3(v, index)
|
|
|
|
|
res = []
|
|
|
|
|
v.each_layer(index) do |c|
|
|
|
|
|
res << c.source(true)
|
|
|
|
|
end
|
|
|
|
|
return res.join("\n")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_1
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", 1 )
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t10.gds", 2 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
|
|
|
|
|
cv.clear_layers
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "" )
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers
|
|
|
|
|
assert_equal( pos.parent.is_null?, true )
|
|
|
|
|
p = pos.dup
|
|
|
|
|
p.up
|
|
|
|
|
assert_equal( p.is_null?, true )
|
|
|
|
|
assert_equal( pos.is_null?, false )
|
|
|
|
|
|
|
|
|
|
assert_equal( pos == cv.begin_layers, true )
|
|
|
|
|
assert_equal( pos != cv.begin_layers, false )
|
|
|
|
|
|
|
|
|
|
l1 = cv.insert_layer( pos, RBA::LayerProperties::new )
|
|
|
|
|
|
|
|
|
|
assert_equal( pos == cv.begin_layers, true )
|
|
|
|
|
assert_equal( pos != cv.begin_layers, false )
|
|
|
|
|
assert_equal( pos == cv.end_layers, false )
|
|
|
|
|
assert_equal( pos != cv.end_layers, true )
|
|
|
|
|
assert_equal( pos < cv.end_layers, true )
|
|
|
|
|
assert_equal( cv.end_layers < pos, false )
|
|
|
|
|
assert_equal( pos < cv.begin_layers, false )
|
|
|
|
|
assert_equal( cv.begin_layers < pos, false )
|
|
|
|
|
assert_equal( pos.at_top?, true )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n" )
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "1/0@1"
|
|
|
|
|
l11 = cv.insert_layer( pos.last_child, new_p )
|
|
|
|
|
|
|
|
|
|
p12 = pos.last_child
|
|
|
|
|
assert_equal( p12.parent.is_null?, false )
|
|
|
|
|
assert_equal( p12.parent == pos, true )
|
|
|
|
|
|
|
|
|
|
pp = pos.dup
|
|
|
|
|
pp.down_last_child
|
|
|
|
|
assert_equal( pp == p12, true )
|
|
|
|
|
assert_equal( pp == pos, false )
|
|
|
|
|
assert_equal( pp.parent == pos, true )
|
|
|
|
|
pp.up
|
|
|
|
|
assert_equal( pp == pos, true )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.at_top?, false )
|
|
|
|
|
p12.to_sibling( 0 )
|
|
|
|
|
assert_equal( p12 == pos.first_child, true )
|
|
|
|
|
assert_equal( p12.child_index, 0 )
|
|
|
|
|
p12.to_sibling( 1 )
|
|
|
|
|
assert_equal( p12.child_index, 1 )
|
|
|
|
|
assert_equal( p12 == pos.last_child, true )
|
|
|
|
|
assert_equal( p12.num_siblings, 1 )
|
|
|
|
|
|
|
|
|
|
l12 = cv.insert_layer( p12, RBA::LayerProperties::new )
|
|
|
|
|
l12_new = RBA::LayerProperties::new
|
|
|
|
|
l12_new.source = "1/0@2"
|
|
|
|
|
cv.set_layer_properties( p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.current.cellview, 1 )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?(true), false )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?(true), false )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "@* #1..2"
|
|
|
|
|
cv.set_layer_properties( p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.current.cellview, 0 )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?(true), true )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?, true )
|
|
|
|
|
assert_equal( p12.current.upper_hier_level(true), 2 )
|
|
|
|
|
assert_equal( p12.current.upper_hier_level, 2 )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?(true), true )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?, true )
|
|
|
|
|
assert_equal( p12.current.lower_hier_level(true), 1 )
|
|
|
|
|
assert_equal( p12.current.lower_hier_level, 1 )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "@* (0,0 *0.5) (0,5 r45 *2.5)"
|
|
|
|
|
cv.set_layer_properties( p12, l12_new )
|
|
|
|
|
trans = p12.current.trans( true )
|
|
|
|
|
assert_equal( trans.to_s, p12.current.trans.to_s )
|
|
|
|
|
assert_equal( trans.size, 2 )
|
|
|
|
|
assert_equal( trans [0].to_s, "r0 *0.5 0,0" )
|
|
|
|
|
assert_equal( trans [1].to_s, "r45 *2.5 0,5" )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "1/0@2"
|
|
|
|
|
cv.set_layer_properties( p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.num_siblings, 2 )
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "@1"
|
|
|
|
|
l2 = cv.insert_layer( pos, new_p )
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "7/0@*"
|
|
|
|
|
l21 = cv.insert_layer( pos.first_child, new_p )
|
|
|
|
|
|
|
|
|
|
p22 = pos.last_child
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
l22 = cv.insert_layer( pos.last_child, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@1\n 7/0@1\n */*@1\n" )
|
|
|
|
|
|
|
|
|
|
new_p = l2.dup
|
|
|
|
|
new_p.source = "@2"
|
|
|
|
|
cv.set_layer_properties( pos, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n */*@2\n" )
|
|
|
|
|
|
|
|
|
|
pos.first_child.current.source = "7/0@1"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@1\n */*@2\n" )
|
|
|
|
|
pos.current.source = "@*"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@*\n 7/0@1\n */*@*\n" )
|
|
|
|
|
pos.current.source = "@2"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@1\n */*@2\n" )
|
|
|
|
|
pos.first_child.current.source = "7/1@*"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/1@2\n */*@2\n" )
|
|
|
|
|
pos.first_child.current.source = "7/0@*"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n */*@2\n" )
|
|
|
|
|
|
|
|
|
|
l22_new = RBA::LayerProperties::new
|
|
|
|
|
l22_new.source = "7/1@*"
|
|
|
|
|
cv.replace_layer_node( p22, l22_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n 7/1@2\n" )
|
|
|
|
|
|
|
|
|
|
cv.delete_layer( p22 )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n" )
|
|
|
|
|
|
|
|
|
|
new_p = l2.dup
|
|
|
|
|
new_p.source = "%5@2"
|
|
|
|
|
cv.set_layer_properties( pos, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n%5@2\n %5@2\n" )
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_1a
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", 1 )
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t10.gds", 2 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
|
|
|
|
|
cv.clear_layers
|
|
|
|
|
|
|
|
|
|
cv.insert_layer_list(1)
|
|
|
|
|
cv.rename_layer_list(1, "x")
|
|
|
|
|
assert_equal(cv.current_layer_list, 1)
|
|
|
|
|
cv.set_current_layer_list(0)
|
|
|
|
|
assert_equal(cv.current_layer_list, 0)
|
|
|
|
|
cv.set_current_layer_list(1)
|
|
|
|
|
assert_equal(cv.current_layer_list, 1)
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "" )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(1) ), "" )
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers(0)
|
|
|
|
|
assert_equal( pos.parent.is_null?, true )
|
|
|
|
|
p = pos.dup
|
|
|
|
|
p.up
|
|
|
|
|
assert_equal( p.is_null?, true )
|
|
|
|
|
assert_equal( pos.is_null?, false )
|
|
|
|
|
|
|
|
|
|
assert_equal( pos == cv.begin_layers(0), true )
|
|
|
|
|
assert_equal( pos != cv.begin_layers(0), false )
|
|
|
|
|
|
|
|
|
|
l1 = cv.insert_layer( 0, pos, RBA::LayerProperties::new )
|
|
|
|
|
|
|
|
|
|
assert_equal( pos == cv.begin_layers(0), true )
|
|
|
|
|
assert_equal( pos != cv.begin_layers(0), false )
|
|
|
|
|
assert_equal( pos == cv.end_layers(0), false )
|
|
|
|
|
assert_equal( pos != cv.end_layers(0), true )
|
|
|
|
|
assert_equal( pos < cv.end_layers(0), true )
|
|
|
|
|
assert_equal( cv.end_layers(0) < pos, false )
|
|
|
|
|
assert_equal( pos < cv.begin_layers(0), false )
|
|
|
|
|
assert_equal( cv.begin_layers(0) < pos, false )
|
|
|
|
|
assert_equal( pos.at_top?, true )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n" )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(1) ), "" )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers() ), "" )
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "1/0@1"
|
|
|
|
|
l11 = cv.insert_layer( 0, pos.last_child, new_p )
|
|
|
|
|
|
|
|
|
|
p12 = pos.last_child
|
|
|
|
|
assert_equal( p12.parent.is_null?, false )
|
|
|
|
|
assert_equal( p12.parent == pos, true )
|
|
|
|
|
|
|
|
|
|
pp = pos.dup
|
|
|
|
|
pp.down_last_child
|
|
|
|
|
assert_equal( pp == p12, true )
|
|
|
|
|
assert_equal( pp == pos, false )
|
|
|
|
|
assert_equal( pp.parent == pos, true )
|
|
|
|
|
pp.up
|
|
|
|
|
assert_equal( pp == pos, true )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.at_top?, false )
|
|
|
|
|
p12.to_sibling( 0 )
|
|
|
|
|
assert_equal( p12 == pos.first_child, true )
|
|
|
|
|
assert_equal( p12.child_index, 0 )
|
|
|
|
|
p12.to_sibling( 1 )
|
|
|
|
|
assert_equal( p12.child_index, 1 )
|
|
|
|
|
assert_equal( p12 == pos.last_child, true )
|
|
|
|
|
assert_equal( p12.num_siblings, 1 )
|
|
|
|
|
|
|
|
|
|
l12 = cv.insert_layer( 0, p12, RBA::LayerProperties::new )
|
|
|
|
|
l12_new = RBA::LayerProperties::new
|
|
|
|
|
l12_new.source = "1/0@2"
|
|
|
|
|
cv.set_layer_properties( 0, p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.current.cellview, 1 )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?(true), false )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?, false )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?(true), false )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?, false )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "@* #1..2"
|
|
|
|
|
cv.set_layer_properties( 0, p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.current.cellview, 0 )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?(true), true )
|
|
|
|
|
assert_equal( p12.current.has_upper_hier_level?, true )
|
|
|
|
|
assert_equal( p12.current.upper_hier_level(true), 2 )
|
|
|
|
|
assert_equal( p12.current.upper_hier_level, 2 )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?(true), true )
|
|
|
|
|
assert_equal( p12.current.has_lower_hier_level?, true )
|
|
|
|
|
assert_equal( p12.current.lower_hier_level(true), 1 )
|
|
|
|
|
assert_equal( p12.current.lower_hier_level, 1 )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "@* (0,0 *0.5) (0,5 r45 *2.5)"
|
|
|
|
|
cv.set_layer_properties( 0, p12, l12_new )
|
|
|
|
|
trans = p12.current.trans( true )
|
|
|
|
|
assert_equal( trans.size, 2 )
|
|
|
|
|
assert_equal( trans [0].to_s, "r0 *0.5 0,0" )
|
|
|
|
|
assert_equal( trans [1].to_s, "r45 *2.5 0,5" )
|
|
|
|
|
|
|
|
|
|
l12_new.source = "1/0@2"
|
|
|
|
|
cv.set_layer_properties( 0, p12, l12_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( p12.num_siblings, 2 )
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers(0)
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "@1"
|
|
|
|
|
l2 = cv.insert_layer( 0, pos, new_p )
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "7/0@*"
|
|
|
|
|
l21 = cv.insert_layer( 0, pos.first_child, new_p )
|
|
|
|
|
|
|
|
|
|
p22 = pos.last_child
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
l22 = cv.insert_layer( 0, pos.last_child, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@1\n 7/0@1\n */*@1\n" )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(1) ), "" )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "" )
|
|
|
|
|
|
|
|
|
|
new_p = l2.dup
|
|
|
|
|
new_p.source = "@2"
|
|
|
|
|
cv.set_layer_properties( 0, pos, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n */*@2\n" )
|
|
|
|
|
|
|
|
|
|
l22_new = RBA::LayerProperties::new
|
|
|
|
|
l22_new.source = "7/1@*"
|
|
|
|
|
cv.replace_layer_node( 0, p22, l22_new )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n 7/1@2\n" )
|
|
|
|
|
|
|
|
|
|
cv.delete_layer( 0, p22 )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n 1/0@1\n 1/0@2\n*/*@2\n 7/0@2\n" )
|
|
|
|
|
|
|
|
|
|
new_p = l2.dup
|
|
|
|
|
new_p.source = "%5@2"
|
|
|
|
|
cv.set_layer_properties( 0, pos, new_p )
|
|
|
|
|
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers(0) ), "*/*@*\n 1/0@1\n 1/0@2\n%5@2\n %5@2\n" )
|
|
|
|
|
|
|
|
|
|
# build a tree by building a separate tree
|
|
|
|
|
new_p = RBA::LayerPropertiesNode::new
|
|
|
|
|
assert_equal(new_p.has_children?, false)
|
|
|
|
|
n1 = new_p.add_child(RBA::LayerProperties::new)
|
|
|
|
|
assert_equal(n1.has_children?, false)
|
|
|
|
|
n1.source = "101/0"
|
|
|
|
|
n2 = RBA::LayerPropertiesNode::new
|
|
|
|
|
assert_equal(n2.has_children?, false)
|
|
|
|
|
n21 = n2.add_child(RBA::LayerProperties::new)
|
|
|
|
|
n21.source = "102/0"
|
|
|
|
|
assert_equal(n2.has_children?, true)
|
|
|
|
|
n22 = n2.add_child(RBA::LayerProperties::new)
|
|
|
|
|
assert_equal(n2.has_children?, true)
|
|
|
|
|
n22.source = "103/0"
|
|
|
|
|
new_p.add_child(n2)
|
|
|
|
|
assert_equal(new_p.has_children?, true)
|
|
|
|
|
|
|
|
|
|
p = pos.last_child
|
|
|
|
|
ll = cv.insert_layer( 0, p, new_p )
|
|
|
|
|
assert_equal(p.current.has_children?, true)
|
|
|
|
|
assert_equal(p.first_child.current.has_children?, false)
|
|
|
|
|
assert_equal(p.first_child.current.source(false), "101/0@1")
|
|
|
|
|
assert_equal(p.first_child.current.source, "%5@1")
|
|
|
|
|
|
|
|
|
|
# (test clear_children):
|
|
|
|
|
new_p.clear_children
|
|
|
|
|
assert_equal(new_p.has_children?, false)
|
|
|
|
|
|
2018-09-01 11:39:20 +02:00
|
|
|
assert_equal(ll.has_children?, false)
|
2017-02-12 13:21:08 +01:00
|
|
|
|
|
|
|
|
cv.transaction("Delete")
|
|
|
|
|
li = cv.begin_layers(0)
|
|
|
|
|
a = []
|
|
|
|
|
while !li.at_end?
|
|
|
|
|
a.push(li.dup)
|
|
|
|
|
li.next
|
|
|
|
|
end
|
|
|
|
|
assert_equal(a.size, 10)
|
|
|
|
|
cv.delete_layers(0, a)
|
|
|
|
|
assert_equal(cv.begin_layers(0).at_end?, true)
|
|
|
|
|
cv.commit
|
|
|
|
|
mw.cm_undo
|
|
|
|
|
assert_equal(cv.begin_layers(0).at_end?, false)
|
|
|
|
|
|
|
|
|
|
cv.transaction("Delete")
|
|
|
|
|
i = 0
|
|
|
|
|
while !cv.begin_layers(0).at_end?
|
|
|
|
|
cv.delete_layer(0, cv.begin_layers(0))
|
|
|
|
|
i += 1
|
|
|
|
|
end
|
|
|
|
|
assert_equal(i, 2)
|
|
|
|
|
assert_equal(cv.begin_layers(0).at_end?, true)
|
|
|
|
|
cv.commit
|
|
|
|
|
mw.cm_undo
|
|
|
|
|
assert_equal(cv.begin_layers(0).at_end?, false)
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_2
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
p = RBA::LayerPropertiesNode::new
|
|
|
|
|
|
|
|
|
|
assert_equal( p.source( false ), "*/*@*" )
|
|
|
|
|
assert_equal( p.source, "*/*@*" )
|
|
|
|
|
assert_equal( p.has_source_name?( false ), false )
|
|
|
|
|
assert_equal( p.has_source_name?, false )
|
|
|
|
|
assert_equal( p.has_frame_color?, false )
|
|
|
|
|
assert_equal( p.has_frame_color?(true), false )
|
|
|
|
|
assert_equal( p.has_fill_color?, false )
|
|
|
|
|
assert_equal( p.has_fill_color?(true), false )
|
|
|
|
|
assert_equal( p.has_dither_pattern?, false )
|
|
|
|
|
assert_equal( p.has_dither_pattern?(true), false )
|
|
|
|
|
assert_equal( p.has_line_style?, false )
|
|
|
|
|
assert_equal( p.has_line_style?(true), false )
|
|
|
|
|
|
|
|
|
|
p.name = "u"
|
|
|
|
|
assert_equal( p.name, "u" )
|
|
|
|
|
|
|
|
|
|
p.source_name = "x"
|
|
|
|
|
assert_equal( p.source_name( false ), "x" )
|
|
|
|
|
assert_equal( p.source_name, "x" )
|
|
|
|
|
assert_equal( p.source( false ), "x@*" )
|
|
|
|
|
assert_equal( p.source, "x@*" )
|
|
|
|
|
assert_equal( p.flat.source, "x@*" )
|
|
|
|
|
assert_equal( p.dup.source, "x@*" )
|
|
|
|
|
assert_equal( p.has_source_name?( false ), true )
|
|
|
|
|
assert_equal( p.has_source_name?, true )
|
|
|
|
|
|
|
|
|
|
p.clear_source_name
|
|
|
|
|
assert_equal( p.source( false ), "*/*@*" )
|
|
|
|
|
assert_equal( p.has_source_name?( false ), false )
|
|
|
|
|
|
|
|
|
|
p.source_layer_index = 6
|
|
|
|
|
assert_equal( p.source( false ), "%6@*" )
|
|
|
|
|
assert_equal( p.source_layer_index( false ), 6 )
|
|
|
|
|
assert_equal( p.source_layer_index, 6 )
|
|
|
|
|
|
|
|
|
|
p.source_layer = 6
|
|
|
|
|
p.source_datatype = 5
|
|
|
|
|
assert_equal( p.source( false ), "%6@*" )
|
|
|
|
|
|
|
|
|
|
p.source_layer_index = -1
|
|
|
|
|
assert_equal( p.source( false ), "6/5@*" )
|
|
|
|
|
assert_equal( p.source_layer_index( false ), -1 )
|
|
|
|
|
assert_equal( p.source_layer_index, -1 )
|
|
|
|
|
assert_equal( p.source_layer( false ), 6 )
|
|
|
|
|
assert_equal( p.source_layer, 6 )
|
|
|
|
|
assert_equal( p.source_datatype( false ), 5 )
|
|
|
|
|
assert_equal( p.source_datatype, 5 )
|
|
|
|
|
|
|
|
|
|
arr = [ RBA::CplxTrans.new( RBA::CplxTrans::M45 ), RBA::CplxTrans.new( RBA::CplxTrans::R270 ) ]
|
|
|
|
|
p.trans = arr
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( arr == p.trans( false ), true )
|
|
|
|
|
|
|
|
|
|
p.source_cellview = 1
|
|
|
|
|
assert_equal( p.source( false ), "6/5@2 (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( p.flat.source, "6/5@2 (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( p.source_cellview( false ), 1 )
|
|
|
|
|
assert_equal( p.source_cellview, 1 )
|
|
|
|
|
p.source_cellview = -1
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
|
|
|
|
|
p.upper_hier_level = 17
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0) #..17" )
|
|
|
|
|
assert_equal( p.upper_hier_level( false ), 17 )
|
|
|
|
|
assert_equal( p.upper_hier_level, 17 )
|
|
|
|
|
assert_equal( p.has_upper_hier_level?( false ), true )
|
|
|
|
|
assert_equal( p.upper_hier_level_relative?, false )
|
|
|
|
|
assert_equal( p.upper_hier_level_relative?(true), false )
|
|
|
|
|
p.set_upper_hier_level(11, true)
|
|
|
|
|
assert_equal( p.upper_hier_level_mode( false ), 0 )
|
|
|
|
|
assert_equal( p.upper_hier_level_mode, 0 )
|
|
|
|
|
assert_equal( p.upper_hier_level, 11 )
|
|
|
|
|
assert_equal( p.upper_hier_level_relative?, true )
|
|
|
|
|
assert_equal( p.upper_hier_level_relative?(true), true )
|
|
|
|
|
p.set_upper_hier_level(11, true, 1)
|
|
|
|
|
assert_equal( p.upper_hier_level, 11 )
|
|
|
|
|
assert_equal( p.upper_hier_level_mode( false ), 1 )
|
|
|
|
|
assert_equal( p.upper_hier_level_mode, 1 )
|
|
|
|
|
p.set_upper_hier_level(11, true, 2)
|
|
|
|
|
assert_equal( p.upper_hier_level_mode( false ), 2 )
|
|
|
|
|
assert_equal( p.upper_hier_level_mode, 2 )
|
|
|
|
|
p.clear_upper_hier_level
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( p.has_upper_hier_level?( false ), false )
|
|
|
|
|
assert_equal( p.has_upper_hier_level?, false )
|
|
|
|
|
|
|
|
|
|
p.lower_hier_level = 17
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0) #17.." )
|
|
|
|
|
assert_equal( p.source, "6/5@* (m45 *1 0,0) (r270 *1 0,0) #17.." )
|
|
|
|
|
assert_equal( p.lower_hier_level( false ), 17 )
|
|
|
|
|
assert_equal( p.lower_hier_level, 17 )
|
|
|
|
|
assert_equal( p.has_lower_hier_level?( false ), true )
|
|
|
|
|
assert_equal( p.has_lower_hier_level?, true )
|
|
|
|
|
assert_equal( p.lower_hier_level_relative?, false )
|
|
|
|
|
assert_equal( p.lower_hier_level_relative?(true), false )
|
|
|
|
|
p.set_lower_hier_level(10, true)
|
|
|
|
|
assert_equal( p.lower_hier_level, 10 )
|
|
|
|
|
assert_equal( p.lower_hier_level_relative?, true )
|
|
|
|
|
assert_equal( p.lower_hier_level_relative?(true), true )
|
|
|
|
|
p.set_lower_hier_level(11, true, 1)
|
|
|
|
|
assert_equal( p.lower_hier_level, 11 )
|
|
|
|
|
assert_equal( p.lower_hier_level_mode( false ), 1 )
|
|
|
|
|
assert_equal( p.lower_hier_level_mode, 1 )
|
|
|
|
|
p.set_lower_hier_level(11, true, 2)
|
|
|
|
|
assert_equal( p.lower_hier_level_mode( false ), 2 )
|
|
|
|
|
assert_equal( p.lower_hier_level_mode, 2 )
|
|
|
|
|
p.clear_lower_hier_level
|
|
|
|
|
assert_equal( p.source( false ), "6/5@* (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( p.source, "6/5@* (m45 *1 0,0) (r270 *1 0,0)" )
|
|
|
|
|
assert_equal( p.has_lower_hier_level?( false ), false )
|
|
|
|
|
assert_equal( p.has_lower_hier_level?, false )
|
|
|
|
|
|
|
|
|
|
p.dither_pattern = 18
|
|
|
|
|
assert_equal( p.dither_pattern(true), 18)
|
|
|
|
|
assert_equal( p.flat.dither_pattern(true), 18)
|
|
|
|
|
assert_equal( p.dither_pattern, 18)
|
|
|
|
|
assert_equal( p.eff_dither_pattern, 18)
|
|
|
|
|
assert_equal( p.eff_dither_pattern(true), 18)
|
|
|
|
|
assert_equal( p.has_dither_pattern?, true )
|
|
|
|
|
assert_equal( p.has_dither_pattern?(true), true )
|
|
|
|
|
|
|
|
|
|
p.line_style = 12
|
|
|
|
|
assert_equal( p.line_style(true), 12)
|
|
|
|
|
assert_equal( p.flat.line_style(true), 12)
|
|
|
|
|
assert_equal( p.line_style, 12)
|
|
|
|
|
assert_equal( p.eff_line_style, 12)
|
|
|
|
|
assert_equal( p.eff_line_style(true), 12)
|
|
|
|
|
assert_equal( p.has_line_style?, true )
|
|
|
|
|
assert_equal( p.has_line_style?(true), true )
|
|
|
|
|
|
|
|
|
|
p.animation = 2
|
|
|
|
|
assert_equal( p.animation(true), 2)
|
|
|
|
|
assert_equal( p.flat.animation(true), 2)
|
|
|
|
|
assert_equal( p.animation, 2)
|
|
|
|
|
|
|
|
|
|
p.marked = true
|
|
|
|
|
assert_equal( p.marked?(true), true)
|
|
|
|
|
assert_equal( p.flat.marked?(true), true)
|
|
|
|
|
assert_equal( p.marked?, true)
|
|
|
|
|
|
|
|
|
|
p.marked = false
|
|
|
|
|
assert_equal( p.marked?(false), false)
|
|
|
|
|
assert_equal( p.flat.marked?(false), false)
|
|
|
|
|
assert_equal( p.marked?, false)
|
|
|
|
|
|
|
|
|
|
p.transparent = true
|
|
|
|
|
assert_equal( p.transparent?(true), true)
|
|
|
|
|
assert_equal( p.flat.transparent?(true), true)
|
|
|
|
|
assert_equal( p.transparent?, true)
|
|
|
|
|
|
|
|
|
|
p.transparent = false
|
|
|
|
|
assert_equal( p.transparent?(false), false)
|
|
|
|
|
assert_equal( p.flat.transparent?(false), false)
|
|
|
|
|
assert_equal( p.transparent?, false)
|
|
|
|
|
|
|
|
|
|
p.visible = true
|
|
|
|
|
assert_equal( p.visible?(true), true)
|
|
|
|
|
assert_equal( p.flat.visible?(true), true)
|
|
|
|
|
assert_equal( p.visible?, true)
|
|
|
|
|
|
|
|
|
|
p.visible = false
|
|
|
|
|
assert_equal( p.visible?(false), false)
|
|
|
|
|
assert_equal( p.flat.visible?(false), false)
|
|
|
|
|
assert_equal( p.visible?, false)
|
|
|
|
|
|
|
|
|
|
p.valid = true
|
|
|
|
|
assert_equal( p.valid?(true), true)
|
|
|
|
|
assert_equal( p.flat.valid?(true), true)
|
|
|
|
|
assert_equal( p.valid?, true)
|
|
|
|
|
|
|
|
|
|
p.valid = false
|
|
|
|
|
assert_equal( p.valid?(false), false)
|
|
|
|
|
assert_equal( p.flat.valid?(false), false)
|
|
|
|
|
assert_equal( p.valid?, false)
|
|
|
|
|
|
|
|
|
|
p.xfill = true
|
|
|
|
|
assert_equal( p.xfill?(true), true)
|
|
|
|
|
assert_equal( p.flat.xfill?(true), true)
|
|
|
|
|
assert_equal( p.xfill?, true)
|
|
|
|
|
|
|
|
|
|
p.xfill = false
|
|
|
|
|
assert_equal( p.xfill?(false), false)
|
|
|
|
|
assert_equal( p.flat.xfill?(false), false)
|
|
|
|
|
assert_equal( p.xfill?, false)
|
|
|
|
|
|
|
|
|
|
p.width = 3
|
|
|
|
|
assert_equal( p.width(true), 3)
|
|
|
|
|
assert_equal( p.flat.width(true), 3)
|
|
|
|
|
assert_equal( p.width, 3)
|
|
|
|
|
|
|
|
|
|
p.frame_color = 0xff000031
|
|
|
|
|
assert_equal( p.frame_color(true), 0xff000031)
|
|
|
|
|
assert_equal( p.flat.frame_color(true), 0xff000031)
|
|
|
|
|
assert_equal( p.frame_color, 0xff000031)
|
|
|
|
|
assert_equal( p.has_frame_color?, true )
|
|
|
|
|
assert_equal( p.has_frame_color?(true), true )
|
|
|
|
|
assert_equal( p.has_fill_color?, false )
|
|
|
|
|
assert_equal( p.has_fill_color?(true), false )
|
|
|
|
|
|
|
|
|
|
p.fill_color = 0xff000032
|
|
|
|
|
assert_equal( p.fill_color(true), 0xff000032)
|
|
|
|
|
assert_equal( p.flat.fill_color(true), 0xff000032)
|
|
|
|
|
assert_equal( p.fill_color, 0xff000032)
|
|
|
|
|
assert_equal( p.has_frame_color?, true )
|
|
|
|
|
assert_equal( p.has_fill_color?, true )
|
|
|
|
|
|
|
|
|
|
p.frame_brightness = 41
|
|
|
|
|
assert_equal( p.frame_brightness(true), 41)
|
|
|
|
|
assert_equal( p.flat.frame_brightness(true), 41)
|
|
|
|
|
assert_equal( p.frame_brightness, 41)
|
|
|
|
|
|
|
|
|
|
p.fill_brightness = 42
|
|
|
|
|
assert_equal( p.fill_brightness(true), 42)
|
|
|
|
|
assert_equal( p.flat.fill_brightness(true), 42)
|
|
|
|
|
assert_equal( p.fill_brightness, 42)
|
|
|
|
|
assert_equal( "#%06x" % p.eff_frame_color, "#33335b" )
|
|
|
|
|
assert_equal( "#%06x" % p.eff_fill_color, "#34345c" )
|
|
|
|
|
assert_equal( "#%06x" % p.eff_frame_color(true), "#33335b" )
|
|
|
|
|
assert_equal( "#%06x" % p.eff_fill_color(true), "#34345c" )
|
|
|
|
|
|
|
|
|
|
p.clear_fill_color
|
|
|
|
|
assert_equal( p.has_fill_color?, false )
|
|
|
|
|
p.clear_frame_color
|
|
|
|
|
assert_equal( p.has_frame_color?, false )
|
|
|
|
|
p.clear_dither_pattern
|
|
|
|
|
assert_equal( p.has_dither_pattern?, false )
|
|
|
|
|
p.clear_line_style
|
|
|
|
|
assert_equal( p.has_line_style?, false )
|
|
|
|
|
|
|
|
|
|
pp = RBA::LayerPropertiesNode::new
|
|
|
|
|
assert_equal( pp == p, false )
|
|
|
|
|
assert_equal( pp != p, true )
|
|
|
|
|
pp = p.dup
|
|
|
|
|
assert_equal( pp == p, true )
|
|
|
|
|
assert_equal( pp != p, false )
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# direct replacement of objects and attributes
|
|
|
|
|
def test_3
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", RBA::LoadLayoutOptions::new, "", 1 )
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t10.gds", RBA::LoadLayoutOptions::new, "", 2 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "1/0@1\n2/0@1\n1/0@2\n2/0@2\n3/0@2\n3/1@2\n4/0@2\n5/0@2\n6/0@2\n6/1@2\n7/0@2\n8/0@2\n8/1@2\n" )
|
|
|
|
|
|
|
|
|
|
cv.clear_layers
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers
|
|
|
|
|
assert_equal( pos.current.is_valid?, false )
|
|
|
|
|
|
|
|
|
|
cv.insert_layer( pos, RBA::LayerProperties::new )
|
|
|
|
|
assert_equal( pos.current.is_valid?, true )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*" )
|
|
|
|
|
|
2019-06-16 21:42:07 +02:00
|
|
|
assert_equal( cv.begin_layers.current.name, "" )
|
|
|
|
|
assert_equal( cv.begin_layers.current.visible?, true )
|
|
|
|
|
assert_equal( cv.begin_layers.current.dither_pattern, -1 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.line_style, -1 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.valid?, true )
|
|
|
|
|
assert_equal( cv.begin_layers.current.transparent?, false )
|
|
|
|
|
|
|
|
|
|
# test LayerPropertiesNodeRef
|
|
|
|
|
pos.current.name = "NAME"
|
|
|
|
|
pos.current.visible = false
|
|
|
|
|
pos.current.fill_color = 0xff012345
|
|
|
|
|
pos.current.frame_color = 0xff123456
|
|
|
|
|
pos.current.fill_brightness = 42
|
|
|
|
|
pos.current.frame_brightness = 17
|
|
|
|
|
pos.current.dither_pattern = 4
|
|
|
|
|
pos.current.line_style = 3
|
|
|
|
|
pos.current.valid = false
|
|
|
|
|
pos.current.transparent = true
|
|
|
|
|
pos.current.marked = false
|
|
|
|
|
pos.current.xfill = false
|
|
|
|
|
pos.current.width = 2
|
|
|
|
|
pos.current.animation = 2
|
|
|
|
|
|
|
|
|
|
assert_equal( cv.begin_layers.current.name, "NAME" )
|
|
|
|
|
assert_equal( cv.begin_layers.current.visible?, false )
|
|
|
|
|
assert_equal( cv.begin_layers.current.fill_color, 0xff012345 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.frame_color, 0xff123456 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.fill_brightness, 42 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.frame_brightness, 17 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.dither_pattern, 4 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.line_style, 3 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.valid?, false )
|
|
|
|
|
assert_equal( cv.begin_layers.current.transparent?, true )
|
|
|
|
|
assert_equal( cv.begin_layers.current.marked?, false )
|
|
|
|
|
assert_equal( cv.begin_layers.current.xfill?, false )
|
|
|
|
|
assert_equal( cv.begin_layers.current.width, 2 )
|
|
|
|
|
assert_equal( cv.begin_layers.current.animation, 2 )
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "1/0@1"
|
|
|
|
|
assert_equal( new_p.flat.source, "1/0@1" )
|
|
|
|
|
assert_equal( new_p == new_p.flat, true )
|
|
|
|
|
assert_equal( new_p != new_p.flat, false )
|
|
|
|
|
new_p_ref = pos.current.add_child(new_p)
|
|
|
|
|
assert_equal( new_p_ref.layer_index, cv.cellview(0).layout.layer(1, 0) )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*\n1/0@1" )
|
|
|
|
|
|
|
|
|
|
p = pos.current.add_child
|
|
|
|
|
p.source = "1/0@2"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n 1/0@2\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*\n1/0@1\n1/0@2" )
|
|
|
|
|
assert_equal( p.layer_index, cv.cellview(1).layout.layer(1, 0) )
|
|
|
|
|
assert_equal( p.bbox.to_s, "(-1.4,1.8;25.16,3.8)" )
|
|
|
|
|
assert_equal( p.view == cv, true )
|
|
|
|
|
assert_equal( p.list_index, 0 )
|
|
|
|
|
|
|
|
|
|
l12_new = RBA::LayerProperties::new
|
|
|
|
|
l12_new.source = "@* #1..2"
|
|
|
|
|
assert_equal(l12_new.flat.source, "*/*@* #1..2")
|
|
|
|
|
assert_equal(pos.first_child.current.is_valid?, true)
|
|
|
|
|
assert_equal(pos.last_child.current.is_valid?, false)
|
|
|
|
|
pos.first_child.next.current.assign(l12_new)
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n */*@* #1..2\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*\n1/0@1\n*/*@* #1..2" )
|
|
|
|
|
|
|
|
|
|
pos.first_child.next_sibling(1).current.source = "@* #3..4"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 1/0@1\n */*@* #3..4\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*\n1/0@1\n*/*@* #3..4" )
|
|
|
|
|
|
|
|
|
|
pos.first_child.to_sibling(1).next_sibling(-1).current.source = "7/0"
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "*/*@*\n 7/0@1\n */*@* #3..4\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "*/*@*\n7/0@1\n*/*@* #3..4" )
|
|
|
|
|
assert_equal( lnodes_str3(cv, 0), "*/*@*\n7/0@1\n*/*@* #3..4" )
|
|
|
|
|
assert_equal( lnodes_str3(cv, 1), "" )
|
|
|
|
|
|
|
|
|
|
nn = RBA::LayerPropertiesNode::new
|
|
|
|
|
nn.source = "TOP"
|
|
|
|
|
|
|
|
|
|
nn1 = RBA::LayerPropertiesNode::new
|
|
|
|
|
nn1.source = "nn1"
|
|
|
|
|
|
|
|
|
|
nn2 = RBA::LayerProperties::new
|
|
|
|
|
nn2.source = "nn1"
|
|
|
|
|
nn1.add_child(nn2)
|
|
|
|
|
|
|
|
|
|
nn.add_child(nn1)
|
|
|
|
|
|
|
|
|
|
pos.current.assign(nn)
|
|
|
|
|
assert_equal( pos.current.id, nn.id )
|
|
|
|
|
assert_equal( lnodes_str( "", cv.begin_layers ), "TOP@1\n nn1@1\n nn1@1\n" )
|
|
|
|
|
assert_equal( lnodes_str2(cv), "TOP@1\nnn1@1\nnn1@1" )
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# propagation of "real" attributes through the hierarchy
|
|
|
|
|
def test_4
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", 1 )
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t10.gds", 2 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
|
|
|
|
|
cv.clear_layers
|
|
|
|
|
|
|
|
|
|
pos = cv.end_layers
|
|
|
|
|
assert_equal( pos.current.is_valid?, false )
|
|
|
|
|
|
|
|
|
|
cv.insert_layer(pos, RBA::LayerProperties::new)
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "1/0@1"
|
|
|
|
|
pos.current.add_child(new_p)
|
|
|
|
|
|
|
|
|
|
assert_equal(pos.current.visible?(true), true)
|
|
|
|
|
assert_equal(pos.current.visible?(false), true)
|
|
|
|
|
assert_equal(pos.first_child.current.visible?(true), true)
|
|
|
|
|
assert_equal(pos.first_child.current.visible?(false), true)
|
|
|
|
|
pos.current.visible = false
|
|
|
|
|
assert_equal(pos.current.visible?(true), false)
|
|
|
|
|
assert_equal(pos.current.visible?(false), false)
|
|
|
|
|
assert_equal(pos.first_child.current.visible?(true), false)
|
|
|
|
|
assert_equal(pos.first_child.current.visible?(false), true)
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# delete method of iterator
|
|
|
|
|
def test_5
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", 1 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
cv.clear_layers
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "1/0@1"
|
|
|
|
|
cv.insert_layer( 0, cv.end_layers, new_p )
|
|
|
|
|
|
|
|
|
|
new_p = RBA::LayerProperties::new
|
|
|
|
|
new_p.source = "2/0@1"
|
|
|
|
|
cv.insert_layer( 0, cv.end_layers, new_p )
|
|
|
|
|
|
|
|
|
|
pos = cv.begin_layers
|
|
|
|
|
|
|
|
|
|
assert_equal(lnodes_str("", cv.begin_layers), "1/0@1\n2/0@1\n")
|
|
|
|
|
assert_equal(pos.at_end?, false)
|
|
|
|
|
|
|
|
|
|
pos.current.delete
|
|
|
|
|
|
|
|
|
|
assert_equal(lnodes_str("", cv.begin_layers), "2/0@1\n")
|
|
|
|
|
assert_equal(pos.at_end?, false)
|
|
|
|
|
|
|
|
|
|
pos.current.delete
|
|
|
|
|
|
|
|
|
|
assert_equal(lnodes_str("", cv.begin_layers), "")
|
|
|
|
|
assert_equal(pos.at_end?, true)
|
|
|
|
|
|
|
|
|
|
pos.current.delete
|
|
|
|
|
|
|
|
|
|
assert_equal(lnodes_str("", cv.begin_layers), "")
|
|
|
|
|
assert_equal(pos.at_end?, true)
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# custom stipples and line styles
|
|
|
|
|
def test_6
|
|
|
|
|
|
2018-07-10 01:17:35 +02:00
|
|
|
if !RBA.constants.member?(:Application)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2017-02-12 13:21:08 +01:00
|
|
|
app = RBA::Application.instance
|
|
|
|
|
mw = app.main_window
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
mw.load_layout( ENV["TESTSRC"] + "/testdata/gds/t11.gds", 1 )
|
|
|
|
|
|
|
|
|
|
cv = mw.current_view
|
|
|
|
|
|
|
|
|
|
cv.clear_stipples
|
|
|
|
|
|
|
|
|
|
assert_equal(cv.get_stipple(0), "*\n")
|
|
|
|
|
|
|
|
|
|
index = cv.add_stipple("something", [ 0x1, 0x2, 0x4, 0x8 ], 4)
|
|
|
|
|
assert_equal(cv.get_stipple(index), "...*\n..*.\n.*..\n*...\n")
|
|
|
|
|
|
|
|
|
|
cv.remove_stipple(index)
|
|
|
|
|
assert_equal(cv.get_stipple(index), "*\n")
|
|
|
|
|
|
|
|
|
|
index = cv.add_stipple("something", ".**.\n*..*\n.*.*\n*.*.")
|
|
|
|
|
assert_equal(cv.get_stipple(index), ".**.\n*..*\n.*.*\n*.*.\n")
|
|
|
|
|
|
|
|
|
|
cv.clear_stipples
|
|
|
|
|
assert_equal(cv.get_stipple(index), "*\n")
|
|
|
|
|
|
|
|
|
|
cv.clear_line_styles
|
|
|
|
|
|
|
|
|
|
assert_equal(cv.get_line_style(0), "")
|
|
|
|
|
|
|
|
|
|
index = cv.add_line_style("something", 0x5, 4)
|
|
|
|
|
assert_equal(cv.get_line_style(index), "*.*.")
|
|
|
|
|
|
|
|
|
|
cv.remove_line_style(index)
|
|
|
|
|
assert_equal(cv.get_line_style(index), "")
|
|
|
|
|
|
|
|
|
|
index = cv.add_line_style("something", ".**.*..*")
|
|
|
|
|
assert_equal(cv.get_line_style(index), ".**.*..*")
|
|
|
|
|
|
|
|
|
|
cv.clear_line_styles
|
|
|
|
|
assert_equal(cv.get_line_style(index), "")
|
|
|
|
|
|
|
|
|
|
mw.close_all
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
load("test_epilogue.rb")
|