Changeset: 47 Changeset: 47 Arreglo definitivo del ENDPROC sobrante por tener un ENTER demás luego del ENDPROC

This commit is contained in:
fernando
2013-12-07 16:13:33 +01:00
parent 31ac44040e
commit fb9d0cc41d
2 changed files with 208 additions and 12 deletions

View File

@@ -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 '<fb2p_value>'
#DEFINE C_FB2P_VALUE_F '</fb2p_value>'
#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<63>n de caracteres especiales
tcMemo = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo )
tcMemo_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo_Esperado )
tcMemo_Salida = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo_Salida )
*-- Visualizaci<63>n de valores
THIS.messageout( ' Memo de entrada:' )
THIS.messageout( '[' + tcMemo + ']' )
THIS.messageout( REPLICATE('-',80) )
THIS.messageout( ' Memo esperado:' )
THIS.messageout( '[' + tcMemo_Esperado + ']' )
*-- Evaluaci<63>n de valores
THIS.assertequals( '[' + tcMemo_Esperado + ']', '[' + tcMemo_Salida + ']', "Contenido del Memo de PROCEDURE" )
ELSE
*-- Evaluaci<63>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
<<C_TAB>><<C_TAB>>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
<<C_TAB>><<C_TAB>>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

View File

@@ -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'>> <<tcMethodName>>
* <<THIS.IndentarMemo( taCode(taMethods(I,2)) )>>
* <<'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)) && <20>ltima l<>nea de c<>digo
IF LEFT( laLineas(I), 10 ) <> C_ENDPROC
ERROR 'Procedimiento sin cerrar. La <20>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
* <<C_TAB>><<laMethods(I,3)>>PROCEDURE <<laMethods(I,1)>>
* <<THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
* <<C_TAB>>ENDPROC
*ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> 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
* <<THIS.IndentarMemo( taCode(taMethods(I,2)), CHR(9) + CHR(9) )>>
* <<C_TAB>>ENDPROC