From bbd511bc8b09d2f0121ca2ef1154d71d5932f987 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 15 Jan 2021 17:32:39 +0100 Subject: [PATCH] Added some tests for 'switch', small bug fix. --- .../drc/built-in-macros/_drc_complex_ops.rb | 4 ++-- testdata/drc/drcGenericTests_5.drc | 21 +++++++++++++++++- testdata/drc/drcGenericTests_au5.gds | Bin 6666 -> 8682 bytes testdata/drc/drcGenericTests_au5d.gds | Bin 6398 -> 8414 bytes 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/drc/drc/built-in-macros/_drc_complex_ops.rb b/src/drc/drc/built-in-macros/_drc_complex_ops.rb index 892e7ae1d..99ec74641 100644 --- a/src/drc/drc/built-in-macros/_drc_complex_ops.rb +++ b/src/drc/drc/built-in-macros/_drc_complex_ops.rb @@ -1516,8 +1516,8 @@ class DRCOpNodeCase < DRCOpNode types << a.result_type end end - if types.sort.uniq.size > 1 - raise("All result arguments need to have the same type (we got '" + types.collect(:to_s).join(",") + "')") + if types.uniq { |a,b| a.to_i <=> b.to_i }.size > 1 + raise("All result arguments of 'switch' need to render the same type (got '" + types.map!(&:to_s).join(",") + "')") end RBA::CompoundRegionOperationNode::new_case(nodes) diff --git a/testdata/drc/drcGenericTests_5.drc b/testdata/drc/drcGenericTests_5.drc index 33216870a..5f061d5da 100644 --- a/testdata/drc/drcGenericTests_5.drc +++ b/testdata/drc/drcGenericTests_5.drc @@ -20,6 +20,9 @@ l3.output(3, 0) l1.drc(rectangles).output(100, 0) l1.drc(primary.rectangles).output(101, 0) l2.drc(secondary(l1).rectangles).output(102, 0) +l1.drc(squares).output(103, 0) +l1.drc(primary.squares).output(104, 0) +l2.drc(secondary(l1).squares).output(105, 0) l1.drc(rectilinear).output(110, 0) l1.drc(primary.rectilinear).output(111, 0) @@ -37,8 +40,24 @@ l1.drc(! rectilinear).output(140, 0) l1.drc(! rectangles).output(141, 0) l1.drc(if_all(! rectangles, area < 8.0)).output(150, 0) -l1.drc(if_any(rectangles, area > 8.0)).output(151, 0) +l1.drc(if_any(rectangles, area >= 8.0)).output(151, 0) l1.drc(if_any(corners.count > 4)).output(160, 0) l1.drc(if_any(corners.count == 4)).output(161, 0) +l1.drc(switch(! rectangles, primary.sized(100.nm))).output(170, 0) +l1.drc(switch(! rectangles, primary.sized(100.nm), primary.sized(200.nm))).output(171, 0) + +error = "" +begin + l1.drc(switch(! rectangles, primary.sized(100.nm), squares, primary.sized(200.nm).edges)) +rescue => ex + error = ex.to_s +end +if error != "'drc': All result arguments of 'switch' need to render the same type (got 'Region,Edges')" + raise "switch did not give the right error when having different types. Was:\n" + error +end + +l1.drc(switch(! rectangles, primary.sized(100.nm), squares, primary.sized(200.nm))).output(172, 0) +l1.drc(switch(! rectangles, primary.sized(100.nm), squares, primary.sized(200.nm), primary)).output(173, 0) + diff --git a/testdata/drc/drcGenericTests_au5.gds b/testdata/drc/drcGenericTests_au5.gds index c904d68d31c7ae09901f9bf87c2bedd0f976b851..54c61c071ad4c3e93a054e92219ce6ee472c8c46 100644 GIT binary patch literal 8682 zcmd5>J!@1!6us_lcB4j(7%>403kwTD3qgb+Di(?XQ=||pi}+E9rVvp{r4|Yb7NUg~ zu`>A4S){ZOvGfO6h(-`mS)v5L$9vv=$2XhoggE;iynvkbzIX22x#!NE*;%PerE*Bt zFR3)%$r4#5tEFEy`Jbh`QXksCN2IUXwR88??FXLUZ|>MTwPoVY;SpKiwE(YPA2~QI zQtK9}uc)Z^`pSxkZ0xOyG+sLQt6yZ*gh=&0(Egv=Ypdt;HuqMY`?^nL?YQB?p-mv-eUDO`_n3wc8pQalMSI@DucUn^=^xXR&NYu?sis~4Q_Fh?NIO+?Jk#%mi-+P_=(FZ2xR$i6V={J{ArKdOFC7px!s z=cOP0l|?_s6RV%ckJ4||ccsk90?EY~f>pxNJ?_$CF(|=z2(_dNi zXFRd`Un)5N^q*J$>8~vLXFQ$eKX(0H?r{BGOZoqMZ+X2#-cUi`7Z_Jw^+tbXskd8^ zc_%NgyxdOXC`w2AFH7DTPwYDP_)+`hM8Wx{|Gesh{>q}?y)=KZ`g!~){T`&_Z%e+X z>pk&Ly`yaG$$lrQofYY=>1D+bFnwVW?9sss8fOC2zt*gANelaBOLl#cYDmyYyT79AN+r#dQM*YV56|Bl|!ZJ{QA0lSr} A+yDRo delta 78 zcmaFm+-0J~z{bGD6u}_F$i)7XfsuieL7c&uK^2)jQAt%8i}1#%PL9pVoQi^M>zi$**5FX#1*T= zL`tL-C@Dg5R6&X9T)3n_D5d`Z3Pc>qLSR`2S>zX!nVtK1Z-~JX zOA~{e@SGWX&ZhkKe)e7_YOW9gy-TfKM6Ds(be&EVeSG}H z^f9@!L)6}Fs}6gs#93ay#{BpiWn5$a`(Ru{d@ZZ`=1Rr@<{wY>&Je6#vjeo(hDEAF|@{N$oT#Pi*zPEmIl zZcHj)pTiJwagkrY=T_Tk+wK`^z1l}0;wiT_lWw<~v)roBqH#fg{aMF1r|Wa7v$LLG zwEm5^*{61f3#rJN^!lb{dcI-%C0B+m*A^jI^m$3dRFyQL|i`j z{ZH@%{FmUHK2ATK(5j;%bWQ2!@r(BF)!SezZ;Q|U{-^6t@4pQHeNmAARi8hJ`KLPR z+;a2E%`<&-VIJbXl%B|US@Y$;{md6HhaGA@dmCrXFY}PjMa)6WMPSa`6!lDNJ^B82 zJ~hAU?AJax%<(_+$M25-{XBk<|IU@HAM({jKh#r|e#jrHpT`fgyf{Gt2j>yrDAe0AwR>Zz*# z$X~So!VlVim)!gc;$JOUf8?u+{-~!a{gFRZ|8Gj}Kl0V3|EQ;`{v&_U{tG{7|6D7$ z|Gw+<3pZ7}E z9r@~_AL^+}zgzwOh3e<=gY^5=*YDXfGv8!>wk+o?@(sai+u``{a^`SD&RJr_eTs>5 zGvqrGzc=KZ?wE;zPMp)8_M~} zn4IU#0qxpfcY#{3tz{_ZG>cM?o*(vcqi1yhvCiWIna^cDn6Y{u39iez>}ne*bv(4( zhF0(Md54-`d8z!rm8=8u71aTG>Y@Ycsal74KmPHMsI$hbI4YVw{m3EWowbBdP@nL{ zXR?3fdW@qpL_5wa-w^Q>f4*cNAYV}*AWvO