mirror of
https://github.com/KLayout/klayout.git
synced 2026-08-30 01:39:30 +02:00
WIP: fixed unit tests for Qt-less build.
This commit is contained in:
Vendored
+149
-137
@@ -184,15 +184,16 @@ class BasicTest(unittest.TestCase):
|
||||
self.assertEqual( a.a3("a"), 1 )
|
||||
self.assertEqual( a.a3("ab"), 2 )
|
||||
self.assertEqual( a.a3("µ"), 2 ) # two UTF8 bytes
|
||||
self.assertEqual( a.a3_qstr("a"), 1 )
|
||||
self.assertEqual( a.a3_qstr("ab"), 2 )
|
||||
self.assertEqual( a.a3_qstr("µ"), 1 ) # one UTF character
|
||||
self.assertEqual( a.a3_qstrref("a"), 1 )
|
||||
self.assertEqual( a.a3_qstrref("ab"), 2 )
|
||||
self.assertEqual( a.a3_qstrref("µ"), 1 ) # one UTF character
|
||||
self.assertEqual( a.a3_qba("a"), 1 )
|
||||
self.assertEqual( a.a3_qba("ab"), 2 )
|
||||
self.assertEqual( a.a3_qba("µ"), 2 ) # two UTF8 bytes
|
||||
if "a3_qstr" in a.__dict__:
|
||||
self.assertEqual( a.a3_qstr("a"), 1 )
|
||||
self.assertEqual( a.a3_qstr("ab"), 2 )
|
||||
self.assertEqual( a.a3_qstr("µ"), 1 ) # one UTF character
|
||||
self.assertEqual( a.a3_qstrref("a"), 1 )
|
||||
self.assertEqual( a.a3_qstrref("ab"), 2 )
|
||||
self.assertEqual( a.a3_qstrref("µ"), 1 ) # one UTF character
|
||||
self.assertEqual( a.a3_qba("a"), 1 )
|
||||
self.assertEqual( a.a3_qba("ab"), 2 )
|
||||
self.assertEqual( a.a3_qba("µ"), 2 ) # two UTF8 bytes
|
||||
self.assertEqual( a.a3(""), 0 )
|
||||
|
||||
self.assertEqual( a.a4([1]), 1.0 )
|
||||
@@ -303,84 +304,86 @@ class BasicTest(unittest.TestCase):
|
||||
self.assertEqual( eb < eb, False )
|
||||
self.assertEqual( ea < eb, True )
|
||||
|
||||
eea = pya.Enums()
|
||||
eei = pya.Enums(3)
|
||||
eeb = pya.Enums(eb)
|
||||
self.assertEqual( str(eea), "" )
|
||||
self.assertEqual( repr(eea), " (0)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eea))), " (0)" )
|
||||
self.assertEqual( repr(eei), "a|b (3)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eei))), "a|b (3)" )
|
||||
self.assertEqual( repr(eeb), "b (2)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eeb))), "b (2)" )
|
||||
eeab1 = ea | eb
|
||||
eeab2 = ea | pya.Enums(eb)
|
||||
eeab3 = pya.Enums(ea) | eb
|
||||
eeab4 = pya.Enums(ea) | pya.Enums(eb)
|
||||
self.assertEqual( repr(eeab1), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab2), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab3), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab4), "a|b (3)" )
|
||||
# Note: unsigned enum's will produce the long int, signed enums will produce the short one
|
||||
self.assertEqual( repr(~eeab4) == " (-4)" or repr(~eeab4) == " (4294967292)", True )
|
||||
self.assertEqual( repr(eeab4 & ea), "a (1)" )
|
||||
self.assertEqual( repr(eeab4 & eeb), "b (2)" )
|
||||
self.assertEqual( repr(eeab4 ^ eeb), "a (1)" )
|
||||
self.assertEqual( repr(eeab4 ^ eb), "a (1)" )
|
||||
self.assertEqual( repr(eeab4), "a|b (3)" )
|
||||
eeab4 ^= ea
|
||||
self.assertEqual( repr(eeab4), "b (2)" )
|
||||
if "Enums" in pya.__dict__:
|
||||
|
||||
ee = pya.Enum()
|
||||
self.assertEqual( str(ee), "#0" )
|
||||
a.mod_eref( ee, pya.Enum.c )
|
||||
self.assertEqual( str(ee), "c" )
|
||||
a.mod_eptr( ee, pya.Enum.a )
|
||||
self.assertEqual( str(ee), "a" )
|
||||
eea = pya.Enums()
|
||||
eei = pya.Enums(3)
|
||||
eeb = pya.Enums(eb)
|
||||
self.assertEqual( str(eea), "" )
|
||||
self.assertEqual( repr(eea), " (0)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eea))), " (0)" )
|
||||
self.assertEqual( repr(eei), "a|b (3)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eei))), "a|b (3)" )
|
||||
self.assertEqual( repr(eeb), "b (2)" )
|
||||
self.assertEqual( repr(pya.Enums(str(eeb))), "b (2)" )
|
||||
eeab1 = ea | eb
|
||||
eeab2 = ea | pya.Enums(eb)
|
||||
eeab3 = pya.Enums(ea) | eb
|
||||
eeab4 = pya.Enums(ea) | pya.Enums(eb)
|
||||
self.assertEqual( repr(eeab1), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab2), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab3), "a|b (3)" )
|
||||
self.assertEqual( repr(eeab4), "a|b (3)" )
|
||||
# Note: unsigned enum's will produce the long int, signed enums will produce the short one
|
||||
self.assertEqual( repr(~eeab4) == " (-4)" or repr(~eeab4) == " (4294967292)", True )
|
||||
self.assertEqual( repr(eeab4 & ea), "a (1)" )
|
||||
self.assertEqual( repr(eeab4 & eeb), "b (2)" )
|
||||
self.assertEqual( repr(eeab4 ^ eeb), "a (1)" )
|
||||
self.assertEqual( repr(eeab4 ^ eb), "a (1)" )
|
||||
self.assertEqual( repr(eeab4), "a|b (3)" )
|
||||
eeab4 ^= ea
|
||||
self.assertEqual( repr(eeab4), "b (2)" )
|
||||
|
||||
self.assertEqual( repr(a.ev()), "[]" )
|
||||
a.push_ev( pya.Enum.a )
|
||||
a.push_ev( pya.Enum() )
|
||||
a.push_ev( pya.Enum.b )
|
||||
self.assertEqual( repr(a.ev()), "[a (1), (not a valid enum value), b (2)]" )
|
||||
ee = pya.Enum()
|
||||
self.assertEqual( str(ee), "#0" )
|
||||
a.mod_eref( ee, pya.Enum.c )
|
||||
self.assertEqual( str(ee), "c" )
|
||||
a.mod_eptr( ee, pya.Enum.a )
|
||||
self.assertEqual( str(ee), "a" )
|
||||
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_ef( pya.Enum.a )
|
||||
self.assertEqual( str(a.get_ef()), "a" )
|
||||
a.set_ef( pya.Enums(pya.Enum.b) )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efptr( None )
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_efptr( pya.Enums(pya.Enum.c) )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
a.set_efcptr( None )
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_efcptr( pya.Enums(pya.Enum.b) )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efcptr( pya.Enum.c )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
a.set_efcref( pya.Enum.b )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efcref( pya.Enums(pya.Enum.a) )
|
||||
self.assertEqual( str(a.get_ef()), "a" )
|
||||
a.set_efref( pya.Enums(pya.Enum.c) )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efptr()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efref()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efcptr()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efcref()), "a|b|c" )
|
||||
a.set_efcptr( None )
|
||||
self.assertEqual( a.get_efcptr(), None )
|
||||
self.assertEqual( repr(a.get_efcref()), " (0)" )
|
||||
self.assertEqual( a.get_efptr(), None )
|
||||
self.assertEqual( repr(a.get_efref()), " (0)" )
|
||||
self.assertEqual( repr(a.ev()), "[]" )
|
||||
a.push_ev( pya.Enum.a )
|
||||
a.push_ev( pya.Enum() )
|
||||
a.push_ev( pya.Enum.b )
|
||||
self.assertEqual( repr(a.ev()), "[a (1), (not a valid enum value), b (2)]" )
|
||||
|
||||
ee = pya.Enums()
|
||||
self.assertEqual( repr(ee), " (0)" )
|
||||
a.mod_efref( ee, pya.Enum.b )
|
||||
self.assertEqual( str(ee), "b" )
|
||||
a.mod_efptr( ee, pya.Enum.a )
|
||||
self.assertEqual( str(ee), "a|b" )
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_ef( pya.Enum.a )
|
||||
self.assertEqual( str(a.get_ef()), "a" )
|
||||
a.set_ef( pya.Enums(pya.Enum.b) )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efptr( None )
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_efptr( pya.Enums(pya.Enum.c) )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
a.set_efcptr( None )
|
||||
self.assertEqual( repr(a.get_ef()), " (0)" )
|
||||
a.set_efcptr( pya.Enums(pya.Enum.b) )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efcptr( pya.Enum.c )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
a.set_efcref( pya.Enum.b )
|
||||
self.assertEqual( str(a.get_ef()), "b" )
|
||||
a.set_efcref( pya.Enums(pya.Enum.a) )
|
||||
self.assertEqual( str(a.get_ef()), "a" )
|
||||
a.set_efref( pya.Enums(pya.Enum.c) )
|
||||
self.assertEqual( str(a.get_ef()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efptr()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efref()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efcptr()), "a|b|c" )
|
||||
self.assertEqual( str(a.get_efcref()), "a|b|c" )
|
||||
a.set_efcptr( None )
|
||||
self.assertEqual( a.get_efcptr(), None )
|
||||
self.assertEqual( repr(a.get_efcref()), " (0)" )
|
||||
self.assertEqual( a.get_efptr(), None )
|
||||
self.assertEqual( repr(a.get_efref()), " (0)" )
|
||||
|
||||
ee = pya.Enums()
|
||||
self.assertEqual( repr(ee), " (0)" )
|
||||
a.mod_efref( ee, pya.Enum.b )
|
||||
self.assertEqual( str(ee), "b" )
|
||||
a.mod_efptr( ee, pya.Enum.a )
|
||||
self.assertEqual( str(ee), "a|b" )
|
||||
|
||||
def test_12(self):
|
||||
|
||||
@@ -401,9 +404,10 @@ class BasicTest(unittest.TestCase):
|
||||
self.assertEqual( a3.a1(), -11 )
|
||||
|
||||
self.assertEqual( a1.a10_d(5.2), "5.2" )
|
||||
self.assertEqual( a1.a10_d_qstr(5.25), "5.25" )
|
||||
self.assertEqual( a1.a10_d_qstrref(5.2), "5.2" )
|
||||
self.assertEqual( a1.a10_d_qba(5.1), "5.1" )
|
||||
if "a10_d_qstr" in a1.__dict__:
|
||||
self.assertEqual( a1.a10_d_qstr(5.25), "5.25" )
|
||||
self.assertEqual( a1.a10_d_qstrref(5.2), "5.2" )
|
||||
self.assertEqual( a1.a10_d_qba(5.1), "5.1" )
|
||||
self.assertEqual( a1.a10_f(5.7), "5.7" )
|
||||
x = pya.Value(1.5)
|
||||
self.assertEqual( str(x.value), "1.5" )
|
||||
@@ -2313,63 +2317,65 @@ class BasicTest(unittest.TestCase):
|
||||
b.set_ss([])
|
||||
self.assertEqual(b.ss(), [])
|
||||
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qls(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qls([ "1" ])
|
||||
self.assertEqual(b.qls(), [ "1" ])
|
||||
b.set_qls([])
|
||||
self.assertEqual(b.qls(), [])
|
||||
if "set_qls" in b.__dict__:
|
||||
|
||||
v = [ "a", 1 ]
|
||||
pya.B.push_qlv(v, 2.5)
|
||||
self.assertEqual(v, [ "a", 1, 2.5 ])
|
||||
b.set_qlv([ 17, "1" ])
|
||||
self.assertEqual(b.qlv(), [ 17, "1" ])
|
||||
b.set_qlv([])
|
||||
self.assertEqual(b.qlv(), [])
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qls(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qls([ "1" ])
|
||||
self.assertEqual(b.qls(), [ "1" ])
|
||||
b.set_qls([])
|
||||
self.assertEqual(b.qls(), [])
|
||||
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qsl(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qsl([ "1" ])
|
||||
self.assertEqual(b.qsl(), [ "1" ])
|
||||
b.set_qsl([])
|
||||
self.assertEqual(b.qsl(), [])
|
||||
v = [ "a", 1 ]
|
||||
pya.B.push_qlv(v, 2.5)
|
||||
self.assertEqual(v, [ "a", 1, 2.5 ])
|
||||
b.set_qlv([ 17, "1" ])
|
||||
self.assertEqual(b.qlv(), [ 17, "1" ])
|
||||
b.set_qlv([])
|
||||
self.assertEqual(b.qlv(), [])
|
||||
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qvs(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qvs([ "1" ])
|
||||
self.assertEqual(b.qvs(), [ "1" ])
|
||||
b.set_qvs([])
|
||||
self.assertEqual(b.qvs(), [])
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qsl(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qsl([ "1" ])
|
||||
self.assertEqual(b.qsl(), [ "1" ])
|
||||
b.set_qsl([])
|
||||
self.assertEqual(b.qsl(), [])
|
||||
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qss(v, "x")
|
||||
v_sorted = v
|
||||
v_sorted.sort()
|
||||
self.assertEqual(v_sorted, [ "a", "b", "x" ])
|
||||
b.set_qss([ "1" ])
|
||||
self.assertEqual(b.qss(), [ "1" ])
|
||||
b.set_qss([])
|
||||
self.assertEqual(b.qss(), [])
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qvs(v, "x")
|
||||
self.assertEqual(v, [ "a", "b", "x" ])
|
||||
b.set_qvs([ "1" ])
|
||||
self.assertEqual(b.qvs(), [ "1" ])
|
||||
b.set_qvs([])
|
||||
self.assertEqual(b.qvs(), [])
|
||||
|
||||
v = { 1: "a", 17: "b" }
|
||||
pya.B.insert_qmap_is(v, 2, "x")
|
||||
self.assertEqual(v, { 1: "a", 17: "b", 2: "x" })
|
||||
b.set_qmap_is({ 1: "t", 17: "b" })
|
||||
self.assertEqual(b.qmap_is(), { 1: "t", 17: "b" })
|
||||
b.set_qmap_is({})
|
||||
self.assertEqual(b.qmap_is(), {})
|
||||
v = [ "a", "b" ]
|
||||
pya.B.push_qss(v, "x")
|
||||
v_sorted = v
|
||||
v_sorted.sort()
|
||||
self.assertEqual(v_sorted, [ "a", "b", "x" ])
|
||||
b.set_qss([ "1" ])
|
||||
self.assertEqual(b.qss(), [ "1" ])
|
||||
b.set_qss([])
|
||||
self.assertEqual(b.qss(), [])
|
||||
|
||||
v = { 1: "a", 17: "b" }
|
||||
pya.B.insert_qhash_is(v, 2, "x")
|
||||
self.assertEqual(v, { 1: "a", 17: "b", 2: "x" })
|
||||
b.set_qhash_is({ 1: "t", 17: "b" })
|
||||
self.assertEqual(b.qhash_is(), { 1: "t", 17: "b" })
|
||||
b.set_qhash_is({})
|
||||
self.assertEqual(b.qhash_is(), {})
|
||||
v = { 1: "a", 17: "b" }
|
||||
pya.B.insert_qmap_is(v, 2, "x")
|
||||
self.assertEqual(v, { 1: "a", 17: "b", 2: "x" })
|
||||
b.set_qmap_is({ 1: "t", 17: "b" })
|
||||
self.assertEqual(b.qmap_is(), { 1: "t", 17: "b" })
|
||||
b.set_qmap_is({})
|
||||
self.assertEqual(b.qmap_is(), {})
|
||||
|
||||
v = { 1: "a", 17: "b" }
|
||||
pya.B.insert_qhash_is(v, 2, "x")
|
||||
self.assertEqual(v, { 1: "a", 17: "b", 2: "x" })
|
||||
b.set_qhash_is({ 1: "t", 17: "b" })
|
||||
self.assertEqual(b.qhash_is(), { 1: "t", 17: "b" })
|
||||
b.set_qhash_is({})
|
||||
self.assertEqual(b.qhash_is(), {})
|
||||
|
||||
def test_51(self):
|
||||
|
||||
@@ -2390,6 +2396,9 @@ class BasicTest(unittest.TestCase):
|
||||
|
||||
def test_60(self):
|
||||
|
||||
if not "SQ" in pya.__dict__:
|
||||
return
|
||||
|
||||
class SignalCollector(object):
|
||||
|
||||
got_s0 = False
|
||||
@@ -2483,6 +2492,9 @@ class BasicTest(unittest.TestCase):
|
||||
|
||||
def test_61(self):
|
||||
|
||||
if not "SQ" in pya.__dict__:
|
||||
return
|
||||
|
||||
class SignalCollector(object):
|
||||
|
||||
got_s0a = 0
|
||||
|
||||
Vendored
+8
-7
@@ -310,7 +310,7 @@ class DBLayoutTest(unittest.TestCase):
|
||||
self.assertEqual( inst.nb, 20 )
|
||||
self.assertEqual( inst.cell_index, c1.cell_index() )
|
||||
|
||||
if( pya.Application.instance().is_editable() ):
|
||||
if ly.is_editable():
|
||||
for inst in c2.each_inst():
|
||||
c2.erase( inst )
|
||||
self.assertEqual( c2.bbox().to_s(), "()" )
|
||||
@@ -566,7 +566,7 @@ class DBLayoutTest(unittest.TestCase):
|
||||
self.assertEqual( inst.nb, 20 )
|
||||
self.assertEqual( inst.cell_index, c1.cell_index() )
|
||||
|
||||
if( pya.Application.instance().is_editable() ):
|
||||
if ly.is_editable():
|
||||
for inst in c2.each_inst():
|
||||
c2.erase( inst )
|
||||
self.assertEqual( c2.bbox().to_s(), "()" )
|
||||
@@ -727,9 +727,9 @@ class DBLayoutTest(unittest.TestCase):
|
||||
# Instances and bboxes (editable mode)
|
||||
def test_6_Layout_new(self):
|
||||
|
||||
if pya.Application.instance().is_editable():
|
||||
ly = pya.Layout()
|
||||
if ly.is_editable():
|
||||
|
||||
ly = pya.Layout()
|
||||
pv = { 17: "a", "b": [ 1, 5, 7 ] }
|
||||
pid1 = ly.properties_id( pv )
|
||||
pv = { 100: "x" }
|
||||
@@ -831,11 +831,12 @@ class DBLayoutTest(unittest.TestCase):
|
||||
# Copy/move between cells
|
||||
def test_7_cells_copy_move(self):
|
||||
|
||||
ly1 = pya.Layout()
|
||||
|
||||
# because of set_property ...
|
||||
if not pya.Application.instance().is_editable():
|
||||
if not ly1.is_editable():
|
||||
return
|
||||
|
||||
ly1 = pya.Layout()
|
||||
la1 = ly1.insert_layer(pya.LayerInfo(1, 0))
|
||||
lb1 = ly1.insert_layer(pya.LayerInfo(2, 0))
|
||||
ly1.dbu = 0.001
|
||||
@@ -1001,7 +1002,7 @@ class DBLayoutTest(unittest.TestCase):
|
||||
sv.append(i.to_s(True))
|
||||
self.assertEqual(";".join(sv), "")
|
||||
|
||||
if pya.Application.instance().is_editable():
|
||||
if ly.is_editable():
|
||||
|
||||
i1.cell_index = ci3
|
||||
|
||||
|
||||
Vendored
+46
-41
@@ -81,57 +81,59 @@ class PCellTestLib(pya.Library):
|
||||
self.register("PCellTestLib")
|
||||
|
||||
|
||||
# A PCell based on the declaration helper
|
||||
if "PCellDeclarationHelper" in pya.__dict__:
|
||||
|
||||
class BoxPCell2(pya.PCellDeclarationHelper):
|
||||
# A PCell based on the declaration helper
|
||||
|
||||
def __init__(self):
|
||||
class BoxPCell2(pya.PCellDeclarationHelper):
|
||||
|
||||
super(BoxPCell2, self).__init__()
|
||||
|
||||
self.param("layer", self.TypeLayer, "Layer", default = pya.LayerInfo(0, 0))
|
||||
self.param("width", self.TypeDouble, "Width", default = 1.0)
|
||||
self.param("height", self.TypeDouble, "Height", default = 1.0)
|
||||
def __init__(self):
|
||||
|
||||
super(BoxPCell2, self).__init__()
|
||||
|
||||
def display_text_impl(self):
|
||||
# provide a descriptive text for the cell
|
||||
return "Box2(L=" + str(self.layer) + ",W=" + ('%.3f' % self.width) + ",H=" + ('%.3f' % self.height) + ")"
|
||||
|
||||
def produce_impl(self):
|
||||
|
||||
dbu = self.layout.dbu
|
||||
|
||||
# fetch the parameters
|
||||
l = self.layer_layer
|
||||
w = self.width / self.layout.dbu
|
||||
h = self.height / self.layout.dbu
|
||||
self.param("layer", self.TypeLayer, "Layer", default = pya.LayerInfo(0, 0))
|
||||
self.param("width", self.TypeDouble, "Width", default = 1.0)
|
||||
self.param("height", self.TypeDouble, "Height", default = 1.0)
|
||||
|
||||
def display_text_impl(self):
|
||||
# provide a descriptive text for the cell
|
||||
return "Box2(L=" + str(self.layer) + ",W=" + ('%.3f' % self.width) + ",H=" + ('%.3f' % self.height) + ")"
|
||||
|
||||
# create the shape
|
||||
self.cell.shapes(l).insert(pya.Box(-w / 2, -h / 2, w / 2, h / 2))
|
||||
def produce_impl(self):
|
||||
|
||||
def can_create_from_shape_impl(self):
|
||||
return self.shape.is_box()
|
||||
dbu = self.layout.dbu
|
||||
|
||||
def transformation_from_shape_impl(self):
|
||||
return pya.Trans(self.shape.box.center() - pya.Point())
|
||||
# fetch the parameters
|
||||
l = self.layer_layer
|
||||
w = self.width / self.layout.dbu
|
||||
h = self.height / self.layout.dbu
|
||||
|
||||
# create the shape
|
||||
self.cell.shapes(l).insert(pya.Box(-w / 2, -h / 2, w / 2, h / 2))
|
||||
|
||||
def can_create_from_shape_impl(self):
|
||||
return self.shape.is_box()
|
||||
|
||||
def parameters_from_shape_impl(self):
|
||||
self.layer = self.layout.get_info(self.layer)
|
||||
self.width = self.shape.box.width() * self.layout.dbu
|
||||
self.height = self.shape.box.height() * self.layout.dbu
|
||||
def transformation_from_shape_impl(self):
|
||||
return pya.Trans(self.shape.box.center() - pya.Point())
|
||||
|
||||
def parameters_from_shape_impl(self):
|
||||
self.layer = self.layout.get_info(self.layer)
|
||||
self.width = self.shape.box.width() * self.layout.dbu
|
||||
self.height = self.shape.box.height() * self.layout.dbu
|
||||
|
||||
class PCellTestLib2(pya.Library):
|
||||
|
||||
def __init__(self):
|
||||
|
||||
class PCellTestLib2(pya.Library):
|
||||
# set the description
|
||||
self.description = "PCell test lib2"
|
||||
|
||||
# create the PCell declarations
|
||||
self.layout().register_pcell("Box2", BoxPCell2())
|
||||
|
||||
def __init__(self):
|
||||
|
||||
# set the description
|
||||
self.description = "PCell test lib2"
|
||||
|
||||
# create the PCell declarations
|
||||
self.layout().register_pcell("Box2", BoxPCell2())
|
||||
|
||||
# register us with the name "MyLib"
|
||||
self.register("PCellTestLib2")
|
||||
# register us with the name "MyLib"
|
||||
self.register("PCellTestLib2")
|
||||
|
||||
|
||||
def inspect_LayerInfo(self):
|
||||
@@ -304,6 +306,9 @@ class DBPCellTests(unittest.TestCase):
|
||||
|
||||
def test_1a(self):
|
||||
|
||||
if not "PCellDeclarationHelper" in pya.__dict__:
|
||||
return
|
||||
|
||||
# instantiate and register the library
|
||||
tl = PCellTestLib2()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user