mirror of https://github.com/KLayout/klayout.git
Bugfix: removing a pin from a Circuit does not crash if the pin was not disconnected before. Now it's disconnected automatically.
This commit is contained in:
parent
8eaf5638f8
commit
abe9479ced
|
|
@ -353,6 +353,7 @@ Pin &Circuit::add_pin (const std::string &name)
|
||||||
void Circuit::remove_pin (size_t id)
|
void Circuit::remove_pin (size_t id)
|
||||||
{
|
{
|
||||||
if (id < m_pin_by_id.size () && ! tl::is_null_iterator (m_pin_by_id [id])) {
|
if (id < m_pin_by_id.size () && ! tl::is_null_iterator (m_pin_by_id [id])) {
|
||||||
|
connect_pin (id, 0);
|
||||||
m_pins.erase (m_pin_by_id [id]);
|
m_pins.erase (m_pin_by_id [id]);
|
||||||
m_pin_by_id [id] = pin_list::iterator ();
|
m_pin_by_id [id] = pin_list::iterator ();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,15 @@ class DBNetlist_TestClass < TestBase
|
||||||
assert_equal(p1.name, "X")
|
assert_equal(p1.name, "X")
|
||||||
assert_equal(p2.name, "B")
|
assert_equal(p2.name, "B")
|
||||||
|
|
||||||
|
n1 = c.create_net("NET1")
|
||||||
|
n2 = c.create_net("NET2")
|
||||||
|
|
||||||
|
c.connect_pin(p1.id, n1)
|
||||||
|
assert_equal(n1.pin_count, 1)
|
||||||
|
|
||||||
|
c.connect_pin(p2.id, n2)
|
||||||
|
assert_equal(n2.pin_count, 1)
|
||||||
|
|
||||||
assert_equal(p1.property(17), nil)
|
assert_equal(p1.property(17), nil)
|
||||||
p1.set_property(17, 42)
|
p1.set_property(17, 42)
|
||||||
assert_equal(p1.property(17), 42)
|
assert_equal(p1.property(17), 42)
|
||||||
|
|
@ -245,6 +254,9 @@ class DBNetlist_TestClass < TestBase
|
||||||
|
|
||||||
c.remove_pin(0)
|
c.remove_pin(0)
|
||||||
|
|
||||||
|
assert_equal(n1.pin_count, 0)
|
||||||
|
assert_equal(n2.pin_count, 1)
|
||||||
|
|
||||||
names = []
|
names = []
|
||||||
c.each_pin { |p| names << p.name }
|
c.each_pin { |p| names << p.name }
|
||||||
assert_equal(names, [ "B" ])
|
assert_equal(names, [ "B" ])
|
||||||
|
|
@ -253,6 +265,13 @@ class DBNetlist_TestClass < TestBase
|
||||||
assert_equal(c.pin_by_id(1) == nil, false)
|
assert_equal(c.pin_by_id(1) == nil, false)
|
||||||
assert_equal(c.pin_by_id(1).name, "B")
|
assert_equal(c.pin_by_id(1).name, "B")
|
||||||
|
|
||||||
|
c.remove_pin(1)
|
||||||
|
|
||||||
|
assert_equal(n1.pin_count, 0)
|
||||||
|
assert_equal(n2.pin_count, 0)
|
||||||
|
|
||||||
|
assert_equal(c.pin_by_id(1) == nil, true)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_4_Device
|
def test_4_Device
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue