From 47c042a559d5359a804cd790f3d8df6df6ccb002 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sun, 19 Jan 2014 10:18:10 -0500 Subject: [PATCH 1/2] minor clarification --- doc/testing.txt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/testing.txt b/doc/testing.txt index ee560a57..311f0b8b 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -3,10 +3,8 @@ Running regression tests: Prerequisites: cmake, python, ImageMagick 6.5.9.3 or newer -First, get a working qmake GUI build of the main openscad binary. It is -used by the tests. Next, get MCAD installed by using - - 'git submodule update --init' +First, get a working qmake GUI build of the main openscad binary and install MCAD. +See the main README. A) Building test environment @@ -38,10 +36,11 @@ $ ctest -C Adds extended tests belonging to configs. Default - Run default tests Heavy - Run more time consuming tests (> ~10 seconds) Examples - test all examples + Bugs - test known bugs (tests will fail) All - test everything -Adding a new regression test: ------------------------------- +Adding a new test: +------------------ 1) create a test file at an appropriate location under testdata/ 2) if the test is non-obvious, create a human readable description as comments in the test (or in another file in the same directory in case the file isn't human readable) From 556040439e702da771659d2ddd026825bde733f6 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sun, 19 Jan 2014 12:18:09 -0500 Subject: [PATCH 2/2] Added test of minkowski2 with >2 children --- testdata/scad/features/minkowski2-tests.scad | 7 +++++++ .../cgalpngtest/minkowski2-tests-expected.png | Bin 6984 -> 7257 bytes .../dumptest/minkowski2-tests-expected.csg | 7 +++++++ .../opencsgtest/minkowski2-tests-expected.png | Bin 7388 -> 7638 bytes .../minkowski2-tests-expected.png | Bin 7388 -> 7644 bytes 5 files changed, 14 insertions(+) diff --git a/testdata/scad/features/minkowski2-tests.scad b/testdata/scad/features/minkowski2-tests.scad index 37fad27c..92a7dcad 100644 --- a/testdata/scad/features/minkowski2-tests.scad +++ b/testdata/scad/features/minkowski2-tests.scad @@ -32,3 +32,10 @@ translate([25,0,0]) roundedBox2dSimple(); // One child translate([0,-20,0]) minkowski() { square(10); } + +// >2 children +translate([-20,-20,0]) minkowski() { + square(10); + square(2, center=true); + circle(1); +} diff --git a/tests/regression/cgalpngtest/minkowski2-tests-expected.png b/tests/regression/cgalpngtest/minkowski2-tests-expected.png index b85161b3aa590bb85f4102d4cc430637ec53f060..806153b290abbae69915ed4b1d7d9699d61437ee 100644 GIT binary patch literal 7257 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 literal 6984 zcmeHM`#;ld`2TDcb80#{_OMb?DM|03NLtdI*-)t*pHz~=RF5d4 z@QAPtNg^Z3X^b3(ZMGRUX507EAMySEAXP7j#s*QAhos23aRq` zv&QiUNcD|I0GxSLUh&LCHQ&uk{P;kXm_bv>Sw?aPG5~?fVDhfA%bPYJ(PX+g1cF-& z*Ftvwg$51;)s?GiA(22kI0^Pl4NiWQ;(Z7dVPrjUF4_|U>8uofH9?cffQ1qauJ!jW zB=GEzZ$Bt%0sg;DyRLzuyFc&F21O`cLko${e@zDd9tghzZiWV)g0|oXHfaH_24&Yk z5e`_Q$w1sIC^SD{?6E6o0D@Cq1+(gz)ibjiO{;lkH3R?u(}AQoVCbvKyA5$DMFjtt zT+XWZu6G=gKotl=k~|pVWp{)-A;U?`NA;UWkx?vcQ4Kf^=2xD z1P2_@IMuirCU&utCVEs6fz+5SikL<~aBz5?nV`#oH2WIggp-hMo_caV&h8+W=6Z|U zptUyQwyU>~wfYIokU+;qD$>IIMveoCdKcv{qGOc9e!Rf02fBD(OlxS*bJTf41&d1) zaZ#~nbXS~zjA}yj9Wr|)$!Ov%e)DpOS|iTQB=!RE>4Q%k0zPj&&vw7vkaK$cBXI9p z@e4!k>Lbe)w0=_GM6UtILZG9J*)l8r2F0;t!do2G^P6RBWky*^7U?k58=hPfiWBdd zBL~8B+(=G}ijNuF(jkmF9#;m%;WdR;2JjU-*&i~(Nz(Q>jqq;aOCvE~Nn%RNCYX=R zW52BIK88V^+H=b*vmdNXu6^bCQ*8Yq*-s!0;~hSbQ$6Cc)#Fw&Bnm!#M+8R_GA%o*5T6Z;?FP>BoO*D z-Po>UT?h5oh(S@Wl{EDApO0vcJg1!DVTKtHDOOC(6kobt-M1wcQa%*mvoq-QtqUa~ ziis@DNGH%OW>AVnUun@A>roG*^;&>YJgPIOxG69t zgOji=+wj?AcFm#=j+2PO2B+9qW0^WCI$D4VVI(pQo9k)58N;z1IqAK(qkEyFQ*CMJ z8XJTJ(V(mjJ zo!J`NzX=>yE2{lCK0O~cPw3R%_YP8i&dd}EXn$g|3SuepRC$VlXp>Ux#=gEGUY?Gm zMPwwrp8&U#A-=j84DSD=F?wD2Kw+=n@wP4eMUzTxL{oki8};kp>8f2j2v=B-FhxRhfciC z!XQY?2P+j@J24)7syt>M;eB(N);29NP=%9I@=>ALp2`{sr1H)uta!dw)p}Y*j%5`W=qr6UAsh*N%eo!koNpy9DzcSg_%iS`(5Kl%Li9Nr)C60 zldl|z-eQ>_bCQYjB!tv9JAS%j4}N}U<4p6h=tHjN_1v2CM$~TWRMNl{b#U`1%PQKg zp-ITDi-DTpJ*DXt3Okpp#QEhHf}ej`xYE-v?sH9)nn$ye9%#$wUcC@y=p6UfS4TZ) zTPN9$1kPk9WDm(XZjjoKC7dhGEywJLtjtr^B*A1WgDqd$!#3a6kkzPT0FuH)I$?3i zAv1Ob7Cm*-D5g7yK5#I0hKlmT7;!slNKxBeZUp*W2?klkaQapv*0-3+Yc4fJRV=QH zSh`I0J%>BGX=0m=9Nygi^hwK7ov4%yRJVCjt%io#AL^DagSJhc zq$Gb`a`m4)J(|P@9o^)AcrZ#b?qR(WNf_)we3%ds>hzKeUip<)asu>Nc>l?|5{5dQ z9FaZxIJ;gJ$fGH0q*=Y#y5YX6dCrsU=$l6kIhvny{Yvrv;l=N3#wH5DOWf1QWYV+i z+_L|AI%I=8o^r2Bm$auUc6SRUUusC|7Fk)sD;Xhem#=`~|hOfrXh7%)SdjhA$qP~eH-b|~1 zRZ4GP@!^o0)mySWvoshI6XOGkJ(p~4f$N7voj=L4==zMHG4Th^w<1`3YtGk&6%D?n zeTYvN=Q-p?MOLE8B#+Grx`v=tc$@p15dNCPQJuaB+VxJ9sjQ(lE8Bf2X?2qie|DG% zovV>CVuLO18$^~_dY44pqJQfY63|9K;!hZV&^iHsiq#M?TQKc@C#CzcTXd~}dHLUZ z=~IZs5akl4F?6~u;ZXl@lNVQzxib;rwu9Gc>2EQtcl!s!a2N2ZHuzfWbMg2a&xQKY zEA;Hn!wF#}ucdjnyBcijjv$U1p`3x!VI%LWSop$;K+&Kmsq*5{#HQ_Hn+F}T6Onl_ z{}{vQ0lmD43SPv?%k;USBj3iCzSioyIVoz)snzC!URfqeF~iTTDjr&h*nklP$B8h1 z6>igIFw+n-<5MWqcuS29-FMBRYy-KQ^t?vsK(|j9WggkyAW2Qhz}=ihU`D1Wgh$?c z*Mx2c+!Sq&^~($5t`Ya}9>INv>m{6IWWYr*#1if#F5SN#!7++LkTt8^XEvTrRc1GS z4)R5*&WDXXaU8zh0xVaq(f&z39?PZZ9AY#K z9*|0U6B`AN?8cIxYkjMA$Akf~n^jrJJ0Re zjqe9m(Cg2KolQ#X`DJXw>w@AA*aqcY*Sit3RYQO69ph^iQH*f?$+9lFEEAUD7$~&0 zE34mrqaBb8?8c%rKef=ut#kv!OzRFV)~*N+sK(m9*vl{f(*;2s2XvQjyvNV^(Q7D` z-G*3Ab~kZ5rjpT1Y`1`aF;ft4)Kj<)Vt24KTQwnU+3~@O`IJY|PT4LLR%5$d-FN zEOj8$rO+CP#Q@hBw8+Q2*{y|qSB;JYl5s{4z{S5rGx6YJ(@tZ+@tvneiOgUNTOO}8 z;{k)0?C9JHI5ziyplQQTKkkP>1L5=PQQksXg*y!<`9TXP2OVH~^ z2^?$D$B2wB(Vx?TvCLE;?jV@U?v#pT(56fn{FC~MG1Y#}`rm!1ok-xMb`sch`T|xB zOSWgWfaG@)0&y?**#>HtAULycd&!?uz4$}odeT-Y?_xdSSWg+fk$TApf=qc z3Cu;6*n{1cM_>c$^84S~Xb2>ob!ij0P5wqLV0+RDP&*Fh$`!-nbg-vYKn6_Dnt@s* z77dJxeeQrDOhMbNe*b{lC6J?NExUe$ScSOi#nrR88ZN6zXEiUbvdjM+M@vxV>UE8} T@^UWthYWBz;dZ>#9vA<=j8$Q6 diff --git a/tests/regression/dumptest/minkowski2-tests-expected.csg b/tests/regression/dumptest/minkowski2-tests-expected.csg index e653f8bb..75c5559f 100644 --- a/tests/regression/dumptest/minkowski2-tests-expected.csg +++ b/tests/regression/dumptest/minkowski2-tests-expected.csg @@ -34,4 +34,11 @@ group() { square(size = [10, 10], center = false); } } + multmatrix([[1, 0, 0, -20], [0, 1, 0, -20], [0, 0, 1, 0], [0, 0, 0, 1]]) { + minkowski(convexity = 0) { + square(size = [10, 10], center = false); + square(size = [2, 2], center = true); + circle($fn = 0, $fa = 12, $fs = 2, r = 1); + } + } } diff --git a/tests/regression/opencsgtest/minkowski2-tests-expected.png b/tests/regression/opencsgtest/minkowski2-tests-expected.png index 9ea580d74bde900ab05940f1ac868b0261be5aa6..8e7e96e0dab5ca4808fa15c76a5a16afb546a69e 100644 GIT binary patch literal 7638 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 literal 7388 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 N`kcerFaPn3`XB#kyuJVc diff --git a/tests/regression/throwntogethertest/minkowski2-tests-expected.png b/tests/regression/throwntogethertest/minkowski2-tests-expected.png index 9ea580d74bde900ab05940f1ac868b0261be5aa6..11182608e331d8ee175eaa66d520bf21c3d8ea0a 100644 GIT binary patch literal 7644 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 O;NU)&y|3(vss96K*N>(E literal 7388 zcmeHM_g7Qdw?8RBq9AqgQ65ENk9jsSbzbk$%r$2 z6%~{cN+4lqA|Sn&gqnmB0t5o7FRu4by!948-M!8^cb~n^+MjaneR09TQfY(Q1^|GP zwbj{606=9S6d-;*!qhB21F$>C`s|tCLm+d*)lE8UR~5MZZ=(t4>MkRUXBuy9-lDuU z#mu_7yHI+@^TKz%u;(yid6E8YWlf_^&!66Svt#cO<0EftqrZ<085LS@%JXgM@$;t+ zyLERvIy*_TpO|YF(K!+)G_`f9Yu;qObg3#oLcm_Kl*9lC6h4g%|1gp=_x4xpz5xLO zF?c|D2ZfS+#{Dy7gHW2{W^D}Vzj$zHAY||W29E~@FgRlKq2IJYtkFmba;?q>T>{x33P&Ko@%1$8XS3cn>tI+XiggnGKdTJkyC4wg;6~H647BTng%(aKKKEsO z?@2j#A+M8pGWdQkykxt}bS>4T(5lpGLMa*#R1cYI7ZlLEVkBpW7d@d3w!iez#f9`N zP&%9PwEAkw562DoAH!sR9X#EP*AR3_vHrG=nLe;79`s7xZWYXO^mEs=W6ZAZhZKxY z4Gb(o!%p)W9zCso+bqde0m7LN8hZK{Mu*UO2NZvPo1Ln$}-r zPex(K!<%vu_-njR`!Sw27gm6KK9keLG4qCZ5JildXZbS^i5o?%2L1AwS7>R6)c*nooao!W-~V7+ z1BM@(=y`@GVR>+)jut24feW(dP7=~o!s!*n5-H2{MjPyhA#dqQUd_X7b79?RswVjW zLo2GdXUnqR9o!QG2G(4f_hMX4pmf|rO6R&m3@#L{VL(y8iqmI( zt|&o)_+TrD$=?udkubV2T81_~4CG^1v=I1}u%f{Y*tJ)+Dne_Rg`%B2tqo?~b}`e8 zukg+si28Bh?ivC3l$lg~oJ$#(?5%}{a>rWYh!1&x+`C~A!BIxJ0hCxFp39MR&Krd(VBFC{C>Nvua;cYU!N42{0vFdaJ10fsivlIc&_+SAUG|Toul@ zh7PjA>Z|nLD&j3$(Yq=c-ue`Nk^(w(j@5!ii&?BRNmC(&F@*Ll79JFzXd5Q4isZ9| zOtbZ3uxBwC)PvVClVb zH$4xPw?=2cXfM#up9EaNfXqAAqW3vcPRq4p$of-DBWO|MsVXsNb;f;9z*P*mZe+8t zi5cnZKX5?ab+Gu!L*#C$8s&O-UWrP8;1mj(-r;#U`H_w`c!^nzV3Y2ac)ND``EKvo zxT;I4O=5&wx0~WrlHb{%jN@rwTB-(5$_%t75?Ek7&k^X-VY=(W^ig|;5d;#DLF|^< zZ7W@E&{5(r+OlzV9Ji$R(VYaWOd+qROWn2I^OZa;@oL=&*$2m#6B(2a>CGNzG%A}n zS0+R_&9msvXg)=q4w?O{qH2fF`?%ruc^>w?%8$4E7$$gQ8|28+F<8~&v7barF$cTT z&hu;N3vqs*c(pe_k~ucYlrGaHLK)z;`Pj$++x=25HdHj6|JZp8Y~uy@@>(aVtGJ_% z;=tGhmF(wgw55u^GqK?hid(B-t7A>An$}VKUJp`toA4c}un@tl3K^HFyV=DN13r0I zbpIKnh*AL&TW)&3@ru_Fi|dqOw00_@H13n0Ht5+oGA(dZj8~vtc&ej%XbSz-oF6m8 zgD_ZH7*ih)8GPtD{X5*3OuY72pX*6uN&+;fcY;Y=?KnL6-tobAIx`D?labtAhPyYG zRw=ujR0gfI=kyzLS;dx)Rl#Iw2rtK@N|b+){$z2PgQMrgSN*|9ueLaK7OZNm35oM_ z4VE6=a@eYK7%=oM_4ZtyPRLyK`5yCU!p@ay%ScTS<9Oerz8Sc%htNYpu8XSTcFj+F zWQAYwUrgU-$Ta|(ze`0)2XRuga(0;{4lNz;rAG?ddF2uld^>;W`gv!I;05-ve_);q zfz&*2Nj~olJg0EPEW}OGIWYJAU( zhEQQM;5lH|99_Xm;G#m?F=G$ zBR*_6la2i@6;1WQ9dHWV1T590ggeb_@MRr6d9gn6WV}j5e!E&eYf_i3fPE6?UTIG{ z3yK20%hj>!y*r)B$K5(ldtnE1r}Dx!;l1YV$YbXBOS}~P(tB6!g~?AIV~-FzK>K;$D%dlF-}keAcJDW1 zid9kWDV>e@VS2)SY7pnku=3!E;)|Ip{SA3YC}}E!wNlZmbR}@)KvBXN++ihkKnd_~ zoVv!Tw8s{xUYo5XUKmWoH7uT5V{g0xY+8w?GCczku0|4l#iEB(w#SH&ZD zP4ozl(9t_Jn4~JZ_`|-gf_oai^+Br`zkrv_PU`!rX=|8 z7vPd57U=j)t4FO_QUh_zSMRZ5DT=auD_P=HoVZljh7&P~SZVt?wBfa_GCJQhP4U;? z1zw441);1sN*-Duv_<02S>>00Up8!W3vZf7P7#G}HzZxSb2I$qo@X%6@xydy{VC2A zmo?vuz?TKZQS&Qx0(kl(6B-@?Yk>8&L{#(hgH(N^K4*jVm2>d2z`DS9liwalJ?Cm$1 zHKS8q`+B$kP#F$B)?`6A2P0K*CraZ87J{6H!29e@z)eM4#wSD?hkDp`g+FR)-jz6d z@1=zBZ?qxdZx~6M+4umR&i?u%))d#RX9mXyqGv+vM$~R)Oy5t-o2qR`A7HQTBRqzZ zgs&UVq(YpBTP<44K>$x#txU^qL_7DIu*XBvz)s3-MF|}3O^@#>a0NV~vGJtbE$tu< zKZP^*!q`F7F=2LW*7r1Mt_PFVPEcJ1j7QVN^Lcam`^G#IG=IejmbKiH#J3`U_zDa( zubPaUAI^Yd$lbO}l~mOL4%u+D|D$TzWd|9#6F(R0^;9?kUYOP{j-)Q)Ha?JAXV~h} zS(9-G0hp2XUPjlJN+4~=O*3crrN1|nS%T>t{nRb1vtDdRoTc>G`!5f*16~1^dE_xz zd2eAYK2YkJVyc7DPNT_euycAmA>}x&jOf?=r!AglOsJ5@cwESq6+u+r)4E0bwG)W| zSgZrbNnzqDx)O?C=s+$d9eV8SjFrhwCzi9MN4y z7(C6CumUCJh5g#N_ql8-g|KiG3SZgRb{p_08M0Dv=t94PaK!b)Z2^F1k`_yb;08VSsvJn*i5E*W4UzSf@`qtH`>Jp^?Q+&tFEddaE;EQmKes3M^$1cVY z*8hCB1)gRD?T3f1hpkK@1*qhmZxwOzs>ok(rd6P>)!>!q{IQ z{Jw2O;Ab^{N6W$}C{!Eay=#4N{Xo{6VI2tT%&^Xi>x%IIN)4sTa~HLlXVUU;vcHzV N`kcerFaPn3`XB#kyuJVc