From 31ac44040ea1b4985e0f8281d77fed15e51f9d8a Mon Sep 17 00:00:00 2001 From: fernando Date: Sat, 7 Dec 2013 14:20:43 +0100 Subject: [PATCH 1/3] Changeset: 45 Changeset: 45 Tests FoxUnit --- .../DATOS_READONLY/fb2p_test_bug_estructural.vct | Bin 0 -> 2153 bytes .../DATOS_READONLY/fb2p_test_bug_estructural.vcx | Bin 0 -> 1468 bytes .../fb2p_test_bug_metodo_movido.vct | Bin 0 -> 3198 bytes .../fb2p_test_bug_metodo_movido.vcx | Bin 0 -> 1577 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vct create mode 100644 TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vcx create mode 100644 TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vct create mode 100644 TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vcx diff --git a/TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vct b/TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vct new file mode 100644 index 0000000000000000000000000000000000000000..1fdad1e358dd14792478f3ed7393682e7f68124b GIT binary patch literal 2153 zcmeHI&2G~`5FS&vNi10^Prwj~N`M>Xr~Dm|2#zBnrAg&FlnbD3vT03iZ)!UdFT{~6 zFT$B801j{@!C}^Qz(p+*f(t5^CZ4|??|eJo2B7EyfI{;BxtIvZvtNH~*}I*75AP#l zqf)JsPx`MmLzj65Rt>yo;4K4dQtAdaq>x|B5(`7``B;R0X0GkHFS!?G)~e~TXlW?* z%&X?|PcK)VC7%~~Np8TRA1P-)^EWbdjpSXHFsFBsr z&Pf$YI-c?o!wElNRE^1cz8m=r1qK2qBE&KCViw{wK-0e2Z6ga}9^r`U$wW~}3NTZk zl&EkeNjJO-rsocijI@`FbF=@42hbOAU;xfrsk`%J*q?`jD#g(G$!Dl*lwyr(m?!lon>UVT) z&mF~wq~G1rHIq$ZR|I60P2u}AL^Xn<$9(>iD?5(UGY-Y&qAaY_kjWzZ(>NBvFPzHL z@9b#NF-kf6IeH~Sd3Mm`r|fv2Tky}aLxrwjqu(LNI<+k?h!inNj&rc1xKj8*4*8jj j&W){>FhkB_IolP7$djA?Hr@NV$~(3ky;@FfbtHrzP#c;3h@{<>J(Fs5%r>2?hjA;Q^3%09Iat z$7AP`2AV`}PcJz*3iR zqTnGFERZQCaH`^hhfGM1MFb2rm&}n28vp|Z2PQAMn^g!S1;_jx?k@8?&v>~)?q>`M z0jje1nVCYAtje-AA%aCrTr(GQ2M-Ue5>t^U*X$}X#o1i&QizLy?vQc{)f1lQ-Uf}X+q}^IG-EdtY z48yR@QGcXc_Dk+yj!(^NzV7AE&VHMa&(kxdLUYH58wM!)_y)$sVs`)l literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vct b/TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vct new file mode 100644 index 0000000000000000000000000000000000000000..92b14e4c7bd7129474f324169e1c290def01167e GIT binary patch literal 3198 zcmeHJ&5zqu5P#k;si7$xfkPQ8QFW1JHs0;FT?wSbad(4~IL*hFwuj<6-mHsbr;d$4 zNL=|7_&a*y!evj00|<#5Ai*9H;=++2FEh5EKXwzTz;c2oJ-_$n&71joX5PGE?Bd6a zF#-Gk?Z0UO^8E|@YPZ+W+VCa-Y)Ts&NF(~IRnO9G5jI4)CBk(PD%52WHmM`MlrUa0 z?1%2ew_IoBxxpl%u63*rOnaKFRux;H@`X@IsL!1}HdmN%SPOjLbrd&ne8ef2OZ&PV zm^iJJOM9j@IwbPecDZ!d8v2JgzkwTVeM~G@iukUSOIn1sA}M+_A)bVk+stX;{HdnO zjZ8?>JRs%QGfLl`6bT&EHiF`^IJnb_<+G^d6qPK^fgnq#A;?k;LEhr}Wa%shSt?>6 zH47aheBSA5idr9ZRp7s%*p~5LxztzR>0h{d6_n;ft<%Ry+U;tC&dyGO?b>>|^g7fA zyHHn~(E75k)ir2o`;EG`LpxDZr@jf}pM7`ef;okW?&;u}6VDw6hUG!vz@uO!!o>B! zw803DZ5n^KeQWGOhHq#Rt5$nk?Q5xQB-%O{7=|Y3j&FJvO2PS)z#Nj61Jg4d!_rB$ zL+9N`=3~=$i2)p!SZ!-Ov2-yN`Qd3KQ)?7hCJHZtiIG5zAmdS*)t*Xn^^s?e^i-^F z!`PaRT`|VyM8@FI4L1Up80mf8_|=u*nucO@5pCw{XlJ!uC!a(UvI=+WQZ4-L1eWM> zuP?eR9KZA3&Pry z)u*dRD^*7Mx7f(7FJXU*lgP#ExS$}J(`f&hABX2L`5NwctUJTM`Z`>kb8fykp_K;q z7NVm*zy0tLZBbxxK*l)4fO>~sn>#O(y%wFHM8;S|3v5OE-)9-M zsH~9k6|L1ma7oTDGR8^&?^%x0;rUo?aY7Uho~f?b&eavS@JZ#*=Bd!e=QI8Nv;;^g z*&Cgb(zjg3aw4Vjhx#UJN{P8jh12rtIHI$AycF2Xq~+^{j$YIHfh8&hceZr4t PShAubx0eK5;X?lj!HvM4 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vcx b/TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vcx new file mode 100644 index 0000000000000000000000000000000000000000..2d9d5f1bcc9ec24f4ec17d182126906603bed4b8 GIT binary patch literal 1577 zcmeH{y-ve05XVhvMM3QZ0}M!EK!^dUN%}zt1~)MxC>OW+XjLRY9Xfzup<-fWN386u zyajK=D==_LT}Ui9g&hy)^Zk5h|83c|YGtKF2q_nD(Pmp=nUJna!(;9P5^D)fIXi_! zp3{q%W5;|I&6>nR2UrkN=n~?sE4by-AeiRBHugm+KjAL7Fbq2i-k|{#HDFi4dFRxl zz~ZW~ui#zkGcSxWfdduyd6)U2!vX@jnup8^86E&M6dYK1!tF#Mv=topXK{PFzoUd_ zPk_4#LqdS6@?B=c5L==$n@xz%0_OLbje7?NC(Ywn1ma7c$4%tD99~Br<#0S380PRM z^79CfiVt%O`}fr6`iTB>Y8)?oFO7e#>_Q|q Kqymf7r1=--CTu7G literal 0 HcmV?d00001 From fb9d0cc41d39e35c8cb10715db2ff90b58a4df51 Mon Sep 17 00:00:00 2001 From: fernando Date: Sat, 7 Dec 2013 16:13:33 +0100 Subject: [PATCH 2/3] =?UTF-8?q?Changeset:=2047=20Changeset:=2047=20Arreglo?= =?UTF-8?q?=20definitivo=20del=20ENDPROC=20sobrante=20por=20tener=20un=20E?= =?UTF-8?q?NTER=20dem=C3=A1s=20luego=20del=20ENDPROC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...g__c_conversor_bin_a_prg__indentarMemo.prg | 175 ++++++++++++++++++ foxbin2prg.prg | 45 +++-- 2 files changed, 208 insertions(+), 12 deletions(-) create mode 100644 TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg diff --git a/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg b/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg new file mode 100644 index 0000000..3a7f7dc --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg @@ -0,0 +1,175 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo OF ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.PRG + #ENDIF + + #DEFINE C_FB2P_VALUE_I '' + #DEFINE C_FB2P_VALUE_F '' + #DEFINE CR_LF CHR(13) + CHR(10) + #DEFINE C_CR CHR(13) + #DEFINE C_LF CHR(10) + #DEFINE C_TAB CHR(9) + #DEFINE C_PROC 'PROCEDURE' + #DEFINE C_ENDPROC 'ENDPROC' + #DEFINE C_TEXT 'TEXT' + #DEFINE C_ENDTEXT 'ENDTEXT' + #DEFINE C_IF_F '#IF .F.' + #DEFINE C_ENDIF '#ENDIF' + #DEFINE C_DEFINE_CLASS 'DEFINE CLASS' + #DEFINE C_ENDDEFINE_CLASS 'ENDDEFINE' + icObj = NULL + + + ******************************************************************************************************************************************* + FUNCTION SETUP + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG') + oFXU_LIB.setup_comun() + + THIS.icObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loObj = THIS.icObj + loObj.l_Test = .T. + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION TearDown + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + THIS.icObj = NULL + + IF VARTYPE(oFXU_LIB) = "O" + oFXU_LIB.teardown_comun() + oFXU_LIB = NULL + ENDIF + RELEASE PROCEDURE 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Evaluate_results + LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tcMemo, tcMemo_Salida, tcMemo_Esperado + + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + IF ISNULL(toEx) + *-- Algunos ajustes para mejor visualización de caracteres especiales + tcMemo = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo ) + tcMemo_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo_Esperado ) + tcMemo_Salida = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo_Salida ) + + *-- Visualización de valores + THIS.messageout( ' Memo de entrada:' ) + THIS.messageout( '[' + tcMemo + ']' ) + + THIS.messageout( REPLICATE('-',80) ) + + THIS.messageout( ' Memo esperado:' ) + THIS.messageout( '[' + tcMemo_Esperado + ']' ) + + + *-- Evaluación de valores + THIS.assertequals( '[' + tcMemo_Esperado + ']', '[' + tcMemo_Salida + ']', "Contenido del Memo de PROCEDURE" ) + + ELSE + *-- Evaluación de errores + THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) ) + THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) ) + THIS.messageout( TRANSFORM(toEx.LINECONTENTS) ) + + THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' ) + ENDIF + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_evaluarUnMemo_PROCEDURE_YQuitarleLaCabecera_PROCEDURE_YElPie_ENDPROC_DejandoSoloElContenido + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcMemo, lcMemo_Salida, lcMemo_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + + TEXT TO lcMemo TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <<'PROCEDURE miMetodo'>> + Page1.Name = "Page1" + <<'ENDPROC'>> + + + ENDTEXT + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + + TEXT TO lcMemo_Esperado TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <><>Page1.Name = "Page1" + ENDTEXT + + + *-- TEST + lcMemo_Salida = loObj.IndentarMemo( @lcMemo, C_TAB+C_TAB ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, @lcMemo, @lcMemo_Salida, @lcMemo_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_evaluarUnMemo_PROCEDURE_YDarUnError_1098_Por_ProcedimientoSinCerrar + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcMemo, lcMemo_Salida, lcMemo_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + + TEXT TO lcMemo TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <<'PROCEDURE miMetodo'>> + Page1.Name = "Page1" + + + ENDTEXT + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnCodError_Esperado = 1098 + + TEXT TO lcMemo_Esperado TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <><>Page1.Name = "Page1" + ENDTEXT + + + *-- TEST + TRY + lcMemo_Salida = loObj.IndentarMemo( @lcMemo, C_TAB+C_TAB ) + CATCH TO loEx + ENDTRY + + THIS.Evaluate_results( loEx, lnCodError_Esperado, @lcMemo, @lcMemo_Salida, @lcMemo_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/foxbin2prg.prg b/foxbin2prg.prg index aa2a471..366af53 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -4823,7 +4823,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF *-- Genero el método SIN indentar, ya que se hace luego - *TEXT TO tcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *tcMethods2 = tcMethods + *TEXT TO tcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 * <<'PROCEDURE'>> <> * <> * <<'ENDPROC'>> @@ -4832,7 +4833,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + tcMethodName tcMethods = tcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)) ) tcMethods = tcMethods + CR_LF + 'ENDPROC' - tcMethods = tcMethods + CR_LF ENDFOR ENDIF @@ -5073,7 +5073,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LPARAMETERS tcMethod, tcIndentation *-- INDENTA EL CÓDIGO DE UN MÉTODO DADO Y QUITA LA CABECERA DE MÉTODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA TRY - LOCAL I, lcMethod, llProcedure, lnInicio, lnFin + LOCAL I, X, lcMethod, llProcedure, lnInicio, lnFin, laLineas(1) lcMethod = '' llProcedure = ( LEFT(tcMethod,10) == 'PROCEDURE ' ; OR LEFT(tcMethod,17) == 'HIDDEN PROCEDURE ' ; @@ -5083,6 +5083,24 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base IF VARTYPE(tcIndentation) # 'C' tcIndentation = '' ENDIF + + *-- Quito las líneas en blanco luego del final del ENDPROC + X = 0 + FOR I = lnFin TO 1 STEP -1 + IF NOT EMPTY(laLineas(I)) && Última línea de código + IF LEFT( laLineas(I), 10 ) <> C_ENDPROC + ERROR 'Procedimiento sin cerrar. La última línea de código debe ser ENDPROC. [' + laLineas(1) + ']' + ENDIF + EXIT + ENDIF + X = X + 1 + ENDFOR + + IF X > 0 + lnFin = lnFin - X + DIMENSION laLineas(lnFin) + ENDIF + *-- Si encuentra la cabecera de un PROCEDURE, la saltea IF llProcedure @@ -5377,26 +5395,29 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LPARAMETERS tcMethods *-- Finalmente, todos los métodos los ordeno y escribo juntos - LOCAL laMethods(1), laCode(1), lnMethodCount, I + LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods, lcMethods2 IF NOT EMPTY(tcMethods) + STORE '' TO lcMethods, lcMethods2 DIMENSION laMethods(1,3) THIS.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ) FOR I = 1 TO lnMethodCount *-- Genero los métodos indentados - *TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *TEXT TO lcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 * <><>PROCEDURE <> * <> * <>ENDPROC *ENDTEXT *-- Sustituyo el TEXT/ENDTEXT aquí porque a veces quita espacios de la derecha, y eso es peligroso - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + C_TAB + laMethods(I,3) + 'PROCEDURE ' + laMethods(I,1) - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) ) - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + C_TAB + 'ENDPROC' - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + 'PROCEDURE ' + laMethods(I,1) + lcMethods = lcMethods + CR_LF + THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) ) + lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' + lcMethods = lcMethods + CR_LF ENDFOR + + C_FB2PRG_CODE = C_FB2PRG_CODE + lcMethods ENDIF RETURN @@ -5411,8 +5432,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments TRY - LOCAL lcMethod, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods - STORE '' TO lcMethod, lcProcDef, lcMethods + LOCAL lcMethod, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods, lcMethods2 + STORE '' TO lcMethod, lcProcDef, lcMethods, lcMethods2 IF tnMethodCount > 0 THEN FOR I = 1 TO tnMethodCount @@ -5448,7 +5469,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF *-- Código del método - *TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *TEXT TO lcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 * <> * <>ENDPROC From e9727e69ae278ce7b62243aa526ba653fe2bf4ed Mon Sep 17 00:00:00 2001 From: fernando Date: Sat, 7 Dec 2013 16:32:52 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Changeset:=2048=20Changeset:=2048=20Nuevo?= =?UTF-8?q?=20test=20de=20bloques=20de=20exclusi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...or_base__IdentificarBloquesDeExclusion.prg | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg new file mode 100644 index 0000000..da7c064 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg @@ -0,0 +1,127 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion OF ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.PRG + #ENDIF + + #DEFINE C_PROC 'PROCEDURE' + #DEFINE C_ENDPROC 'ENDPROC' + #DEFINE C_TEXT 'TEXT' + #DEFINE C_ENDTEXT 'ENDTEXT' + #DEFINE C_IF_F '#IF .F.' + #DEFINE C_ENDIF '#ENDIF' + icObj = NULL + + ******************************************************************************************************************************************* + FUNCTION Setup + THIS.icObj = NEWOBJECT("c_conversor_prg_a_bin", "FOXBIN2PRG.PRG") + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION TearDown + THIS.icObj = NULL + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Evaluate_results + LPARAMETERS taExpected_Pos, taPos, tnPos_Count + + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + THIS.messageout( "Pares de posiciones esperados: " + TRANSFORM(tnPos_Count) ) + FOR I = 1 TO tnPos_Count + THIS.messageout( "Posición de Inicio/Fin esperados: " + TRANSFORM(taExpected_Pos(I,1)) + ',' + TRANSFORM(taExpected_Pos(I,2)) ) + ENDFOR + + THIS.assertequals( ALEN(taExpected_Pos,1), ALEN(taPos,1), "Posición de Inicio/Fin" ) + + FOR I = 1 TO tnPos_Count + THIS.assertequals( TRANSFORM(taExpected_Pos(I,1)) + ',' + TRANSFORM(taExpected_Pos(I,2)) ; + , TRANSFORM(taPos(I,1)) + ',' + TRANSFORM(taPos(I,2)) ; + , "Posición de Inicio/Fin" ) + ENDFOR + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_ObtenerLaUbicacionDelBloque_IF_ENDIF_CuandoCodigoCon_IF_ENDIF_predominante_esEvaluado + LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(2,2) + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + *-- Input and expected params + STORE '' TO lcMethod + laExpected_Pos(1,1) = 3 + laExpected_Pos(1,2) = 5 + laExpected_Pos(2,1) = 7 + laExpected_Pos(2,2) = 9 + + TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2+4 + <> myMethod_B + *-- Code Block + <> + <> + <> + *-- Code Block + <> + <> + <> + <> + ENDTEXT + + lnLineas = ALINES( laLineas, lcMethod ) + + *-- Test + loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laPos, @lnPos_Count ) + + THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_ObtenerLaUbicacionDelBloque_TEXT_ENDTEXT_CuandoCodigoCon_TEXT_ENDTEXT_predominante_esEvaluado + LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(2,2) + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + *-- Input and expected params + STORE '' TO lcMethod + laExpected_Pos(1,1) = 3 + laExpected_Pos(1,2) = 5 + laExpected_Pos(2,1) = 7 + laExpected_Pos(2,2) = 9 + + TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2+4 + <> myMethod_B + *-- Code Block + <> + <> + <> + *-- Code Block + <> + <> + <> + <> + ENDTEXT + + lnLineas = ALINES( laLineas, lcMethod ) + + *-- Test + loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laPos, @lnPos_Count ) + + THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count ) + + ENDFUNC + + +ENDDEFINE