From 3d322773fd55f5d8b5a5103ba0f51669e7a07fe2 Mon Sep 17 00:00:00 2001 From: sliptonic Date: Mon, 18 Sep 2017 22:59:48 -0500 Subject: [PATCH] Add test for imperial linuxcnc --- src/Mod/Path/PathTests/TestPathPost.py | 20 +++++++++++++++++++- src/Mod/Path/PathTests/boxtest.fcstd | Bin 7490 -> 11426 bytes 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Mod/Path/PathTests/TestPathPost.py b/src/Mod/Path/PathTests/TestPathPost.py index fbdfe67ae7..06007f0971 100644 --- a/src/Mod/Path/PathTests/TestPathPost.py +++ b/src/Mod/Path/PathTests/TestPathPost.py @@ -55,7 +55,7 @@ class PathPostTestCases(unittest.TestCase): def testLinuxCNC(self): from PathScripts.post import linuxcnc_post as postprocessor - args = '--no-header --no-line-numbers --no-comments --no-show-editor --output-precision=2' + args = '--no-header --no-line-numbers --no-comments --no-show-editor --precision=2' gcode = postprocessor.export(self.postlist, 'gcode.tmp', args) referenceFile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/test_linuxcnc_00.ngc' @@ -71,6 +71,24 @@ class PathPostTestCases(unittest.TestCase): msg = ''.join(difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True))) self.fail("linuxcnc output doesn't match: " + msg) + def testLinuxCNCImperial(self): + from PathScripts.post import linuxcnc_post as postprocessor + args = '--no-header --no-line-numbers --no-comments --no-show-editor --precision=2 --inches' + gcode = postprocessor.export(self.postlist, 'gcode.tmp', args) + + referenceFile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/test_linuxcnc_10.ngc' + with open(referenceFile, 'r') as fp: + refGCode = fp.read() + + # Use if this test fails in order to have a real good look at the changes + if False: + with open('tab.tmp', 'w') as fp: + fp.write(gcode) + + if gcode != refGCode: + msg = ''.join(difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True))) + self.fail("linuxcnc output doesn't match: " + msg) + def testCentroid(self): from PathScripts.post import centroid_post as postprocessor args = '--no-header --no-line-numbers --no-comments --no-show-editor --axis-precision=2 --feed-precision=2' diff --git a/src/Mod/Path/PathTests/boxtest.fcstd b/src/Mod/Path/PathTests/boxtest.fcstd index fc8f2bf7409fe687e94b979aed59a18f993bcbea..cc338da2d8a7e5d7ee585ca514cd1f5e868837f4 100644 GIT binary patch literal 11426 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 DAKnyw{(8K$? z(hg>Bc2Ij)c27IoofkGPGyKFiSw;clq4}BN=Azr*)wj0=ooDmS1j?ZT&2v)+YJ^Oc z*=X44`Z^w`?RyB~YIG?2IfeOF6R9yQKc0!O?~1O^D^lFun5@P7kjbzgsRCIZ`aA1E zm;B_-w<{}NLz!zMNA2xi?$`AeN2EeH5Q>bfcpi(-JU@>f(d8s63E^D&_#9odtiBJh zi(YsAX8I#Ykd=;ySYzq(T(DX&Ys9)Xi!Yr-9Y-?cH1SKRQ38bblzfHR9QHLW@7a#d z`hL^cl-PE>L%YX?2bS}$H!o1O%R4VZd+rhChk(_nNXu#OJ5E_WT?<096v8EZdE*yr}zwgn9>?4#kP?*6EMcyV7~}rQqgPXh;#Pkum}@>uZnBl z$j>$g%Ot8&rFRxMv8wwU#-j9YJ?@Ejt0C$b~HNPpDd05=Dx)SLUyP43$@faCX$R`bM0TFG)QG zoVZ`jLAbqh2}@P+tUEf1oQ*cjeJr5#O~M5Xat&vJXPNW#pASJ)Jarc7nN5eR>B;y5 zP`m!u$7L$y2_>kHE3U_Bbup!;_DY~)^;l2}DZNRx2_&ca%_J(7vb+J^=d_0GZACw; zd?k>U{P*4gywa*ub$l3anm+SIz3~sG9~e0i!&)8*#?;W^E{lZ1PV_~`8nPtsHe%WZ zgNb?^n?%rod8|ZJ$5pV#SFWxUe8IBC?2dsgYMqHBZHxT{eR|&Ka>j3zB#BY|bF0Qv zra(EG3Nq&kDLF`;P|E;pOxd&=9`!fRGeQHA65{%SJLNep2E&!0&BX598dIW<`h0!S z+<1znfEuq@&!5NBL6r&$~<+WJxpI@BGT2}MV#%mc&+{F$Y%hA z*V%)0^jM_Lu9wqNt+<#wUS^I>sMaMT21|j|<%c!VXVO-Nk%yA#TFaOG8EJUnmSnrn z*-(y`K%DxJ{7R)4a(LF2yiss`F{M5BY3H$f^2hpe5`d#Ti`06lt+bjq=Vdx6!8rHJ zHgGiGtfU#Ea+ZKyd*@q4Vah%9*2fd-aKzmZQM70SO%BMjTuIa=7vj-G0+tbO37!(k>Qarw%1@*Q`{p!RCkWMt^Qd0Ylk7_)y*tS*{766e32X%@uHTN9+kb zNpoJj5nQrm$afrF?4;6icS**owqAsyb8E+-Mpet;2T+2&H$VeY^WSIgr=pR)PY!% z+V3!uIGm0q=lFfi0@hDH8k9TW4*lL>U=R*9jfJ>x)2svcg`{Q6+{ImX@Ve zrC9hVNNI5UMR5kWM6NNlS=O#vR{f1w+ksq>;L+~2&>o$?SI4Q~SFye6cmoIKJ?1px7dz zEix8a+Aw@m>tW#Hqx0RUIZUY9h!Wui9J}?_Ibc#p4IeyQ!D+?#mPzc6Z=!+RzAC0J zRU=w~+R-o}A#;epVB{=Y!f(DY7JO=A`Q86?@pb|CQJ7%!;~Q!M%49+s!U!AFAd|&Q zv)HW0^dnB9ySL1sIgqYDFS?5y@F66SC&6KTMK3&V9BMkJoJ#V-z=dTt!-&4JOvAK6 zQy2zT&k4g)l0mts!5aX_cFa9y{wOU-`AK6tMR7gzDf1-br0!dz1U`*w0U-yiXi{=# zJZ@wLFl^;ix=93QE;KA+KZgtENSheAX}u|5uRX%CyD8DEs% zF!qZ_mvS`LsA=Khu<4rbFj#8gN@GSWWg)ginw5Iep$w~~PtZuEPWHHl*}F_mgkfVl z9@?zB-2{A8VRb?++{M%fR^6{_NTP?N^Qx~^mjzRFKMP^e79hym^n|gFer)?&$98{dh)j3g`5(-c@QxQcpC~CcODoAH|3PD zjE1F@Z>pI$6wHZOUkI}%t3WS?SS)}X@RVov$tNe80W7SC8O;*Q%U+MjKjh@u zjG@%BBa6}mF=S)`Xi@XdlXD#nw4Lu?7?=sD;E?olHa!Bzbn02pMh2`uKugETE*pCw z9M}N<0X}o|FKNt3lzT9~+*R}gip*U<`LTn>&3P4VFvd_}hzRV*BHFGYwM%8>~%jnGaEOxfTqD1@n`x4mhGZC|E9@f^NpmGVrQ_^xR*!iS5@2O_6DMGt_q66pH}Q#I zlKL)5u}00&5Jri*X`iZ*bF!8OvB?mr{Lu3cYr+AEA+|)U=1(3|5}BAQBQ}0&*0kg{~$|{78sqE5Y&{SgrfPi=|dIwIg*#<&UU(aYxBO< z*73PmXxE}05gpzvWX8V32)nd343{)c)c+vtnUyjzBgB!OqLhUb^1*Xwus!$oJ8~OM z{QFGP3IOn3KA613;>t9~ARqVJpxEA<3EgpExaR9{uqw&T?V>cC`T73rXJKpGxZl~v z>Vq=x%xL}Sj1#ky40i|LlAAg{{e|Ln@RW_gNS5f&0iC;v48${0CHmz@;?^&A9q0*0 zfwnPary9B9p{%A3rzV}q(K%n46lNHfT(7H{|TGCmF_6heZsllnV z{zCtcBmo>@Ia21*7a1Bw8#YmJ*U5jUGvmI>Nux*whM+8wJdnV_=_)XsA zkHu}4o}c$F`ok4fQ}L>qo+UONKyB#s2G$_e@x_tIIa(-hab56g@((wEZl_D%$PZn_ zjsuUwSnn+5FDh78`Q*zSnKM4wRFUQnR$ZLY;Jl>UKxhnC--ofv`Krdbtq%9M?=))m zbI82K>ZU%kR_N_v5h3PYs(V-^0rIC<+c#V4Es@LEH+`N(L5m!+mM~*aO*!SE*VcXWLX0-D!M!rF;+%G85Z<0;4 zk8J!N2q;4Xh&T|57tpu0d?Aj_;_!hhY#Z9AnFZ!`*QzX{^wl>+_^0m6psAIU_sm&w z(=F|S*@l9kte2l4!(y)$tTj1k${9*T=xfVXFpH!Q4cl^$62CF{;o>>0_zB6|y_c8> z)w5Q9YNTUO(5$q0(>`py^$qKp7_@d3v`xFmeBDzueGJzMTj1@&soC8$dgXhx{aedc zjf$ z=1cNdCX~R%B+KQ$2HsU#8kd*$Ggrp=s><{$9n4b9YMRN%>%6uj?vrOKc|l$@h2Br+E~BN?uXM+(m(tY^`hl;n9q?rGTHvxc%}D z74b4NhnahQ)Vd2@R)08Q5=sK`!x8GpQf68@Z4fRFVUEm=bN zFoVKSF-EBGrfz*&K0@M)2hik+K;1~eVQA#9pY5ct`IYy2Sh}2G{=5IpzRnYb1(MPN z;W+(p_{hp3pC%gDC=UpU-N-E17>NWG^l!X@w&LN=z0@rCl4IP@QV#a64sOoBWFJ?? z3=}5}{?XcQn%oqg+BW2dS3CxhwgPCnJ8Vz$c>iTber2tR3aqCOK4tELmJ zu>=6#of2R-Epo~S;Aw7Zwve|{Ue)2b@}+~0P_e&jvmPFq`jj$ue*F2C@ls%5NUO)w zSEbj+881KQvH2%FiYaN$)Hn@<#}u!mWe;C56KF7lJ|IPJ^a-a81SMjCHpOX$@%=D2 zn*V!M73Ei~Bv%BA!{*JQjr^1G^bd;2Ka{1MqW@yL>eA=wJHvcRG! zNoBa$O`RQ)eiJN7{GB=dy-;lTL2w^hTt-IHPzw_`TUR432M61G<;KvsqGCPdl@(cs zA>lZ%0#fQf{_fk4i`KR%AP~<}5D4dk8L=qN`^(kMTH!FEu^Yi8G>7k8DS<}u&=syl1Y`0-!PsZDIMN@D`ZC%{>{fDq z`2<`X+Dtw(EJ<7?%q~Fi1yvBv^A67_cdYN4 zx>%vQwcjioCEw_?LDTB2^pkdw#~j-snXOyVDb@Rf=N?Out+157m1+TOhh?YsNhISq zCPpU{DN`(C>#B#w>MzZ>s4g;OXeL%2&}oo}F}?))`(s`p#4H0@?z+eY6sZv`-qMKY zWFpuDtxL5VH0M>^4Ihd@u2J0!#UCev&C@HFpL&Mo^z7 zB8S?oW5&S-sar@i(Q5n8PI=)6!kNi-o@8lXH(f~!LN=^|9mJiauc7{$-(XHS@hH(| zO#{K%^jTxLj{3l5Rknf5rKOw520l2{DM*MlE_!=d7zT`Ebx+8X0POr7-jNdM7#cpM zS{{95!&8?$?-4+sDv>VbjM<+enn4&JO}(Z1B&|_lLp&CwkeIqj{BddZd746=VpUh_q!st_#-9CzrM7c zcQ$pLd{bDLbaYK4`vu~qQhW7736YfZk`*^e1z%3WbsC9?3Nhpv=fuliUOVg0I>dW!9QTow*tlcFyTGt7^KDq|@@DHFgjs9`U=;!fnSPSz{t@{ox zmGLSRh0_7d@8=UWBc(0%F!EtxulIJTAzL8Q;s{KGp3977XQqYA!>6;;Zl{@CEKSYe z9VU^JPrad|T7qfJl4k;WMQ|#UYjW0F>%5W4hkXa>t~aQ|*2gz<5-h?1cgEo@+rc!{ zFx>Z)QjuceY8<`)OXJ}#axp=|-dT{eojk#Mc^g2VR8VJ&E?b9cr#OxkC&F1uVthZh z=+3sh_9?LUe`#4@HV?9M`mp_zaj&$&m@rp8O2+nEW^B_DC?gtXT3h=?K!8Cz*5OLd{i~=gU0nm*$u!6;|~{Ic?dLlhqq_Dh8Lt zcma6b<)>3des)Uhy*2fsst{K|(<7!ZXF9_A&Y{pfka{Y>ohwtbuB3Wf_CtgFWA*x@ zg}t2?RzkHCOn9Dc$t8+*`@Z|uBg#qMzT&0Q@1CH%F0hnnbsXszHKO3JkFbN^@WkW_ zomB6(cO2=eC4;%J(Sy{Ha|*?-kH53cx>}~d1zdbfgOB{gh7N9 zpDDs$+7o<x=GwCHRZBtrOvq}-7A{j7 zLF#fe_>solOg;+ET{Io_2LF-s&JhgwZFPsqGH@XODn(%444i+Slrum`5D*EG{@)%m zjE#x)Pn01O8Da_+%!`R!>;F|U_sjhsqb7hC@9(-sP4VApe_1#6JqmIkzx?6vQ4`>X z4>N*L{9z)$`}IGdF8u#>@86UE!Xf?z#{QdhKi33&zjrY;6K7Y=S0;|oKP>Ne?q8Ni z{$J1gn_m;~;9iwq4hS=WkkkMA@ZU}DALxsF=)L8^B$!D4l+2Eq?8OP`{T98Ig@v07 zRLa5D!TI+`f0ZG8hIXIhSN!|6naDsOB`f;M1&