Changeset: 54 Changeset: 54 - Arreglo del bug del método movido y de los espacios que se pierden por el TEXT/ENDTEXT
- Nuevos casos de prueba FoxUnit para comprobar la solución (UT) - Arreglo definitivo del ENDPROC sobrante por tener un ENTER demás luego del ENDPROC - Nuevo test FoxUnit de bloques de exclusión
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vct
Normal file
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vct
Normal file
Binary file not shown.
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vcx
Normal file
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_estructural.vcx
Normal file
Binary file not shown.
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vct
Normal file
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vct
Normal file
Binary file not shown.
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vcx
Normal file
BIN
TESTS/DATOS_READONLY/fb2p_test_bug_metodo_movido.vcx
Normal file
Binary file not shown.
@@ -71,39 +71,41 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
|
||||||
|
|
||||||
*-- TEST
|
*-- TEST
|
||||||
TRY
|
IF ISNULL(toEx) && Respetar errores previos
|
||||||
lcTipoBinario = UPPER( JUSTEXT( tc_OutputFile ) )
|
TRY
|
||||||
|
lcTipoBinario = UPPER( JUSTEXT( tc_OutputFile ) )
|
||||||
|
|
||||||
IF FILE(tc_OutputFile)
|
IF FILE(tc_OutputFile)
|
||||||
SELECT 0
|
SELECT 0
|
||||||
USE (tc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN
|
USE (tc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN
|
||||||
ELSE
|
ELSE
|
||||||
ERROR 'No se encontr<74> el archivo "' + tc_OutputFile + '"'
|
ERROR 'No se encontr<74> el archivo "' + tc_OutputFile + '"'
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF EMPTY(tcParent) AND EMPTY(tcClass) AND EMPTY(tcObjName)
|
|
||||||
DO CASE
|
|
||||||
CASE lcTipoBinario = 'SCX'
|
|
||||||
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Screen "
|
|
||||||
CASE lcTipoBinario = 'VCX'
|
|
||||||
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Class "
|
|
||||||
ENDCASE
|
|
||||||
IF NOT FOUND()
|
|
||||||
ERROR 'No se encontr<74> el registro de cabecera "' + UniqueID + '"'
|
|
||||||
ENDIF
|
ENDIF
|
||||||
ELSE
|
|
||||||
LOCATE FOR CLASS==tcClass AND PARENT==tcParent AND objName==tcObjName
|
IF EMPTY(tcParent) AND EMPTY(tcClass) AND EMPTY(tcObjName)
|
||||||
IF NOT FOUND()
|
DO CASE
|
||||||
ERROR 'No se encontr<74> el registro para CLASS=="' + tcClass + '" AND PARENT=="' + tcParent + '" AND objName=="' + tcObjName + '"'
|
CASE lcTipoBinario = 'SCX'
|
||||||
|
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Screen "
|
||||||
|
CASE lcTipoBinario = 'VCX'
|
||||||
|
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Class "
|
||||||
|
ENDCASE
|
||||||
|
IF NOT FOUND()
|
||||||
|
ERROR 'No se encontr<74> el registro de cabecera "' + UniqueID + '"'
|
||||||
|
ENDIF
|
||||||
|
ELSE
|
||||||
|
LOCATE FOR CLASS==tcClass AND PARENT==tcParent AND objName==tcObjName
|
||||||
|
IF NOT FOUND()
|
||||||
|
ERROR 'No se encontr<74> el registro para CLASS=="' + tcClass + '" AND PARENT=="' + tcParent + '" AND objName=="' + tcObjName + '"'
|
||||||
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
|
||||||
|
|
||||||
SCATTER MEMO NAME toReg
|
SCATTER MEMO NAME toReg
|
||||||
|
|
||||||
CATCH TO toEx
|
CATCH TO toEx
|
||||||
FINALLY
|
FINALLY
|
||||||
USE IN (SELECT("TABLABIN"))
|
USE IN (SELECT("TABLABIN"))
|
||||||
ENDTRY
|
ENDTRY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
IF ISNULL(toEx)
|
IF ISNULL(toEx)
|
||||||
@@ -225,8 +227,18 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
*-- METHODS
|
*-- METHODS
|
||||||
|
lcMensaje = "Tama<6D>o de METHODS para " + lcExtraData
|
||||||
|
* COMPROBAR "BUG DEL M<>TODO MOVIDO"
|
||||||
|
IF LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) <> LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) )
|
||||||
|
IF "BUG DEL M<>TODO MOVIDO" $ toReg.METHODS AND NOT "BUG DEL M<>TODO MOVIDO" $ toReg_Esperado.METHODS
|
||||||
|
lcMensaje = lcMensaje + ' >>> ATENCI<43>N!! - COMPROBAR "BUG DEL M<>TODO MOVIDO"'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
*-- Fin comprobaci<63>n
|
||||||
|
|
||||||
THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ;
|
THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ;
|
||||||
, LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), "Tama<6D>o de METHODS para " + lcExtraData )
|
, LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), lcMensaje )
|
||||||
|
|
||||||
THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData )
|
THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData )
|
||||||
FOR I = 1 TO lnMethods_Count_Esperado
|
FOR I = 1 TO lnMethods_Count_Esperado
|
||||||
THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ;
|
THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ;
|
||||||
@@ -320,13 +332,125 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
*loCnv.l_Debug = .F.
|
*loCnv.l_Debug = .F.
|
||||||
loCnv.l_ShowErrors = .F.
|
loCnv.l_ShowErrors = .F.
|
||||||
*loCnv.l_Test = .T.
|
*loCnv.l_Test = .T.
|
||||||
loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
|
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
|
||||||
loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
|
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
|
||||||
|
|
||||||
|
|
||||||
*-- DATOS DE ENTRADA
|
*-- DATOS DE ENTRADA
|
||||||
STORE 0 TO lnCodError
|
STORE 0 TO lnCodError
|
||||||
lc_File = 'fb2p_test.vcx' && 'THCALC.VCX' &&
|
lc_File = 'fb2p_test.vcx'
|
||||||
|
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
|
||||||
|
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
|
||||||
|
|
||||||
|
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||||
|
|
||||||
|
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
|
||||||
|
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
|
||||||
|
|
||||||
|
SELECT 0
|
||||||
|
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
|
||||||
|
|
||||||
|
SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
|
||||||
|
*-- DATOS ESPERADOS
|
||||||
|
STORE 0 TO lnCodError_Esperado
|
||||||
|
SCATTER MEMO NAME loReg_Esperado
|
||||||
|
lcClass = loReg_Esperado.CLASS
|
||||||
|
lcParent = loReg_Esperado.PARENT
|
||||||
|
lcObjName = loReg_Esperado.objName
|
||||||
|
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
ENDSCAN
|
||||||
|
|
||||||
|
CATCH TO loEx
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
|
||||||
|
FINALLY
|
||||||
|
USE IN (SELECT("ARCHIBOBIN_IN"))
|
||||||
|
ENDTRY
|
||||||
|
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************************************
|
||||||
|
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarEl_BUG_DelMetodoMovidoEntreClases
|
||||||
|
LOCAL lnCodError, lnCodError_Esperado ;
|
||||||
|
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ;
|
||||||
|
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loEx AS EXCEPTION
|
||||||
|
#IF .F.
|
||||||
|
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
|
TRY
|
||||||
|
loEx = NULL
|
||||||
|
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||||
|
*loCnv.l_Debug = .F.
|
||||||
|
loCnv.l_ShowErrors = .F.
|
||||||
|
*loCnv.l_Test = .T.
|
||||||
|
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
|
||||||
|
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
|
||||||
|
|
||||||
|
|
||||||
|
*-- DATOS DE ENTRADA
|
||||||
|
STORE 0 TO lnCodError
|
||||||
|
lc_File = 'fb2p_test_bug_metodo_movido.vcx'
|
||||||
|
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
|
||||||
|
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
|
||||||
|
|
||||||
|
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||||
|
|
||||||
|
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
|
||||||
|
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
|
||||||
|
|
||||||
|
SELECT 0
|
||||||
|
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
|
||||||
|
|
||||||
|
SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
|
||||||
|
*-- DATOS ESPERADOS
|
||||||
|
STORE 0 TO lnCodError_Esperado
|
||||||
|
SCATTER MEMO NAME loReg_Esperado
|
||||||
|
lcClass = loReg_Esperado.CLASS
|
||||||
|
lcParent = loReg_Esperado.PARENT
|
||||||
|
lcObjName = loReg_Esperado.objName
|
||||||
|
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
ENDSCAN
|
||||||
|
|
||||||
|
CATCH TO loEx
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
|
||||||
|
FINALLY
|
||||||
|
USE IN (SELECT("ARCHIBOBIN_IN"))
|
||||||
|
ENDTRY
|
||||||
|
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************************************
|
||||||
|
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarEl_BUG_Del_PROCEDURE_SIN_ENDPROC
|
||||||
|
LOCAL lnCodError, lnCodError_Esperado ;
|
||||||
|
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ;
|
||||||
|
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loEx AS EXCEPTION
|
||||||
|
#IF .F.
|
||||||
|
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
|
TRY
|
||||||
|
loEx = NULL
|
||||||
|
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||||
|
*loCnv.l_Debug = .F.
|
||||||
|
loCnv.l_ShowErrors = .F.
|
||||||
|
*loCnv.l_Test = .T.
|
||||||
|
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
|
||||||
|
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
|
||||||
|
|
||||||
|
|
||||||
|
*-- DATOS DE ENTRADA
|
||||||
|
STORE 0 TO lnCodError
|
||||||
|
lc_File = 'fb2p_test_bug_estructural.vcx'
|
||||||
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
|
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
|
||||||
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
|
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
|
||||||
|
|
||||||
|
|||||||
@@ -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<63>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<63>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<63>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
|
||||||
|
<<C_PROC>> myMethod_B
|
||||||
|
*-- Code Block
|
||||||
|
<<C_IF_F>>
|
||||||
|
<<C_TEXT>>
|
||||||
|
<<C_ENDIF>>
|
||||||
|
*-- Code Block
|
||||||
|
<<C_IF_F>>
|
||||||
|
<<C_ENDTEXT>>
|
||||||
|
<<C_ENDIF>>
|
||||||
|
<<C_ENDPROC>>
|
||||||
|
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
|
||||||
|
<<C_PROC>> myMethod_B
|
||||||
|
*-- Code Block
|
||||||
|
<<C_TEXT>>
|
||||||
|
<<C_IF_F>>
|
||||||
|
<<C_ENDTEXT>>
|
||||||
|
*-- Code Block
|
||||||
|
<<C_TEXT>>
|
||||||
|
<<C_ENDIF>>
|
||||||
|
<<C_ENDTEXT>>
|
||||||
|
<<C_ENDPROC>>
|
||||||
|
ENDTEXT
|
||||||
|
|
||||||
|
lnLineas = ALINES( laLineas, lcMethod )
|
||||||
|
|
||||||
|
*-- Test
|
||||||
|
loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laPos, @lnPos_Count )
|
||||||
|
|
||||||
|
THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count )
|
||||||
|
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
ENDDEFINE
|
||||||
175
TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg
Normal file
175
TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__indentarMemo.prg
Normal 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
|
||||||
130
foxbin2prg.prg
130
foxbin2prg.prg
@@ -46,7 +46,8 @@
|
|||||||
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
|
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
|
||||||
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
|
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
|
||||||
* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad
|
* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad
|
||||||
* 03/12/2013 FDBOZZO v1.9 Arreglo bug p<>rdida de propiedades causado por una mejora anterior
|
* 06/12/2013 FDBOZZO v1.9 Arreglo bug p<>rdida de propiedades causado por una mejora anterior
|
||||||
|
* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de m<>todos de una clase con la siguiente
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
||||||
@@ -55,6 +56,7 @@
|
|||||||
* 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la <20>ltima (arreglado en v.1.7)
|
* 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la <20>ltima (arreglado en v.1.7)
|
||||||
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa del arreglo anterior (arreglado en v.1.8)
|
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa del arreglo anterior (arreglado en v.1.8)
|
||||||
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa de una mejora anterior (arreglado en v.1.9)
|
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa de una mejora anterior (arreglado en v.1.9)
|
||||||
|
* 06/12/2013 Fidel Charny REPORTE BUG: Cuando hay m<>todos que tienen el mismo nombre, aparecen mezclados en objetos a los que no corresponden
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
|
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
|
||||||
@@ -350,7 +352,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
|
l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
|
||||||
lFileMode = .F.
|
lFileMode = .F.
|
||||||
nClassTimeStamp = ''
|
nClassTimeStamp = ''
|
||||||
n_FB2PRG_Version = 1.9
|
n_FB2PRG_Version = 1.10
|
||||||
o_Conversor = NULL
|
o_Conversor = NULL
|
||||||
c_VC2 = 'VC2'
|
c_VC2 = 'VC2'
|
||||||
c_SC2 = 'SC2'
|
c_SC2 = 'SC2'
|
||||||
@@ -2428,11 +2430,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
#ENDIF
|
#ENDIF
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL loProcedure AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG'
|
LOCAL llEsProcedureDeClase, loProcedure AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG'
|
||||||
|
|
||||||
IF '.' $ tcProcedureAbierto AND VARTYPE(toObjeto) = 'O' AND toObjeto._Procedure_Count > 0
|
IF '.' $ tcProcedureAbierto AND VARTYPE(toObjeto) = 'O' AND toObjeto._Procedure_Count > 0
|
||||||
loProcedure = toObjeto._Procedures(toObjeto._Procedure_Count)
|
loProcedure = toObjeto._Procedures(toObjeto._Procedure_Count)
|
||||||
ELSE
|
ELSE
|
||||||
|
llEsProcedureDeClase = .T.
|
||||||
loProcedure = toClase._Procedures(toClase._Procedure_Count)
|
loProcedure = toClase._Procedures(toClase._Procedure_Count)
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -2443,10 +2446,22 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
IF NOT .lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
|
IF NOT .lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
|
||||||
AND NOT .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
|
AND NOT .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
|
||||||
|
|
||||||
IF LEFT( tcLine, 8 ) + ' ' == C_ENDPROC + ' ' && Fin del PROCEDURE
|
DO CASE
|
||||||
*tcProcedureAbierto = ''
|
CASE LEFT( tcLine, 8 ) + ' ' == C_ENDPROC + ' ' && Fin del PROCEDURE
|
||||||
|
tcProcedureAbierto = ''
|
||||||
EXIT
|
EXIT
|
||||||
ENDIF
|
|
||||||
|
CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado
|
||||||
|
IF llEsProcedureDeClase
|
||||||
|
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
|
||||||
|
+ toClase._Nombre + ' (' + loProcedure._Nombre + ')' ;
|
||||||
|
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
|
||||||
|
ELSE
|
||||||
|
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
|
||||||
|
+ toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ;
|
||||||
|
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
|
||||||
|
ENDIF
|
||||||
|
ENDCASE
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
*-- Quito 2 TABS de la izquierda (si se puede y si el integrador/desarrollador no la li<6C> quit<69>ndolos)
|
*-- Quito 2 TABS de la izquierda (si se puede y si el integrador/desarrollador no la li<6C> quit<69>ndolos)
|
||||||
@@ -2650,14 +2665,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE analizarBloque_DEFINE_CLASS
|
PROCEDURE analizarBloque_DEFINE_CLASS
|
||||||
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ;
|
LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ;
|
||||||
, taBloquesExclusion, tnBloquesExclusion, tc_Comentario
|
, taBloquesExclusion, tnBloquesExclusion, tc_Comentario
|
||||||
|
|
||||||
EXTERNAL ARRAY taCodeLines, tnBloquesExclusion, taBloquesExclusion
|
EXTERNAL ARRAY taCodeLines, tnBloquesExclusion, taBloquesExclusion
|
||||||
|
|
||||||
#IF .F.
|
#IF .F.
|
||||||
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
|
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
|
||||||
LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
|
|
||||||
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
|
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
|
||||||
#ENDIF
|
#ENDIF
|
||||||
|
|
||||||
@@ -2668,7 +2682,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
llBloqueEncontrado = .T.
|
llBloqueEncontrado = .T.
|
||||||
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
|
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
|
||||||
, llMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
|
, llMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
|
||||||
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed
|
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed ;
|
||||||
|
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
|
||||||
|
|
||||||
STORE '' TO tcProcedureAbierto
|
STORE '' TO tcProcedureAbierto
|
||||||
toClase = CREATEOBJECT('CL_CLASE')
|
toClase = CREATEOBJECT('CL_CLASE')
|
||||||
@@ -2699,11 +2714,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
tc_Comentario = ''
|
tc_Comentario = ''
|
||||||
.set_Line( @tcLine, @taCodeLines, I )
|
.set_Line( @tcLine, @taCodeLines, I )
|
||||||
|
|
||||||
|
|
||||||
.lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
|
|
||||||
|
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ;
|
CASE .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
|
||||||
|
LOOP
|
||||||
|
|
||||||
|
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @loObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ;
|
||||||
, @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
|
, @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
|
||||||
*-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN
|
*-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN
|
||||||
llCLASS_PROPERTY_Completed = .T.
|
llCLASS_PROPERTY_Completed = .T.
|
||||||
@@ -2722,7 +2737,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
llHIDDEN_Completed = .T.
|
llHIDDEN_Completed = .T.
|
||||||
|
|
||||||
|
|
||||||
CASE NOT llINCLUDE_Completed AND .c_Type <> "SCX" AND .analizarBloque_INCLUDE( @toModulo, @toClase, @toObjeto, @tcLine, @taCodeLines ;
|
CASE NOT llINCLUDE_Completed AND .c_Type <> "SCX" AND .analizarBloque_INCLUDE( @toModulo, @toClase, @tcLine, @taCodeLines ;
|
||||||
, @I, @tnCodeLines, @tcProcedureAbierto )
|
, @I, @tnCodeLines, @tcProcedureAbierto )
|
||||||
llINCLUDE_Completed = .T.
|
llINCLUDE_Completed = .T.
|
||||||
|
|
||||||
@@ -2848,7 +2863,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE analizarBloque_INCLUDE
|
PROCEDURE analizarBloque_INCLUDE
|
||||||
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
|
LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
|
||||||
LOCAL llBloqueEncontrado
|
LOCAL llBloqueEncontrado
|
||||||
|
|
||||||
#IF .F.
|
#IF .F.
|
||||||
@@ -2906,13 +2921,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE analizarBloque_OLE_DEF
|
PROCEDURE analizarBloque_OLE_DEF
|
||||||
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
|
LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
|
||||||
LOCAL llBloqueEncontrado
|
LOCAL llBloqueEncontrado
|
||||||
|
|
||||||
#IF .F.
|
#IF .F.
|
||||||
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
|
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
|
||||||
LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
|
|
||||||
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
|
|
||||||
#ENDIF
|
#ENDIF
|
||||||
|
|
||||||
IF LEFT( tcLine + ' ', C_LEN_OLE_I + 1 ) == C_OLE_I + ' '
|
IF LEFT( tcLine + ' ', C_LEN_OLE_I + 1 ) == C_OLE_I + ' '
|
||||||
@@ -2992,7 +3005,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
|
|
||||||
IF llBloqueEncontrado
|
IF llBloqueEncontrado
|
||||||
*-- Eval<61>o todo el contenido del PROCEDURE
|
*-- Eval<61>o todo el contenido del PROCEDURE
|
||||||
THIS.analizarLineasDeProcedure( @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines, tcProcedureAbierto ;
|
THIS.analizarLineasDeProcedure( @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines, @tcProcedureAbierto ;
|
||||||
, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
|
, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -3063,6 +3076,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
IF lnObjProc = 0
|
IF lnObjProc = 0
|
||||||
*-- Procedimiento de clase
|
*-- Procedimiento de clase
|
||||||
toClase.add_Procedure( loProcedure )
|
toClase.add_Procedure( loProcedure )
|
||||||
|
toObjeto = NULL
|
||||||
ELSE
|
ELSE
|
||||||
*-- Procedimiento de objeto
|
*-- Procedimiento de objeto
|
||||||
toObjeto = toClase._AddObjects( lnObjProc )
|
toObjeto = toClase._AddObjects( lnObjProc )
|
||||||
@@ -3113,7 +3127,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
LOCAL I, loEx AS EXCEPTION ;
|
LOCAL I, loEx AS EXCEPTION ;
|
||||||
, llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed ;
|
, llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed ;
|
||||||
, lc_Comentario, lcProcedureAbierto, lcLine ;
|
, lc_Comentario, lcProcedureAbierto, lcLine ;
|
||||||
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' ;
|
|
||||||
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
|
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
|
||||||
|
|
||||||
STORE '' TO lcProcedureAbierto
|
STORE '' TO lcProcedureAbierto
|
||||||
@@ -3136,21 +3149,19 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
CASE THIS.lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
|
CASE THIS.lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
|
||||||
OR .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vac<61>a o solo Comentarios
|
OR .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vac<61>a o solo Comentarios
|
||||||
|
|
||||||
*.analizarLineasDeProcedure( @loClase, @loObjeto, @lcLine, @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto )
|
|
||||||
|
|
||||||
CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines )
|
CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines )
|
||||||
llFoxBin2Prg_Completed = .T.
|
llFoxBin2Prg_Completed = .T.
|
||||||
|
|
||||||
CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @loClase, @loObjeto, @lcLine, @taCodeLines ;
|
CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ;
|
||||||
, @I, tnCodeLines, @lcProcedureAbierto )
|
, @I, tnCodeLines, @lcProcedureAbierto )
|
||||||
*-- Puede haber varios
|
*-- Puede haber varios
|
||||||
|
|
||||||
CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @loObjeto, @lcLine ;
|
CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @lcLine ;
|
||||||
, @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto )
|
, @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto )
|
||||||
* Espec<65>fico para SCX que lo tiene al inicio
|
* Espec<65>fico para SCX que lo tiene al inicio
|
||||||
llINCLUDE_SCX_Completed = .T.
|
llINCLUDE_SCX_Completed = .T.
|
||||||
|
|
||||||
CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @loObjeto, @lcLine, @taCodeLines, @I, tnCodeLines ;
|
CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ;
|
||||||
, @lcProcedureAbierto, @taBloquesExclusion, @tnBloquesExclusion, @lc_Comentario )
|
, @lcProcedureAbierto, @taBloquesExclusion, @tnBloquesExclusion, @lc_Comentario )
|
||||||
*-- Puede haber varias
|
*-- Puede haber varias
|
||||||
|
|
||||||
@@ -3168,8 +3179,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
THROW
|
THROW
|
||||||
|
|
||||||
FINALLY
|
FINALLY
|
||||||
STORE NULL TO loObjeto, loClase
|
STORE NULL TO loClase
|
||||||
RELEASE loObjeto, loClase
|
RELEASE loClase
|
||||||
ENDTRY
|
ENDTRY
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
@@ -4812,11 +4823,16 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
*-- Genero el m<>todo SIN indentar, ya que se hace luego
|
*-- 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
|
||||||
<<'PROCEDURE'>> <<tcMethodName>>
|
*TEXT TO tcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||||
<<THIS.IndentarMemo( taCode(taMethods(I,2)) )>>
|
* <<'PROCEDURE'>> <<tcMethodName>>
|
||||||
<<'ENDPROC'>>
|
* <<THIS.IndentarMemo( taCode(taMethods(I,2)) )>>
|
||||||
ENDTEXT
|
* <<'ENDPROC'>>
|
||||||
|
*ENDTEXT
|
||||||
|
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
|
||||||
|
tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + tcMethodName
|
||||||
|
tcMethods = tcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)) )
|
||||||
|
tcMethods = tcMethods + CR_LF + 'ENDPROC'
|
||||||
ENDFOR
|
ENDFOR
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -5057,7 +5073,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
LPARAMETERS tcMethod, tcIndentation
|
LPARAMETERS tcMethod, tcIndentation
|
||||||
*-- INDENTA EL C<>DIGO DE UN M<>TODO DADO Y QUITA LA CABECERA DE M<>TODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA
|
*-- INDENTA EL C<>DIGO DE UN M<>TODO DADO Y QUITA LA CABECERA DE M<>TODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA
|
||||||
TRY
|
TRY
|
||||||
LOCAL I, lcMethod, llProcedure, lnInicio, lnFin
|
LOCAL I, X, lcMethod, llProcedure, lnInicio, lnFin, laLineas(1)
|
||||||
lcMethod = ''
|
lcMethod = ''
|
||||||
llProcedure = ( LEFT(tcMethod,10) == 'PROCEDURE ' ;
|
llProcedure = ( LEFT(tcMethod,10) == 'PROCEDURE ' ;
|
||||||
OR LEFT(tcMethod,17) == 'HIDDEN PROCEDURE ' ;
|
OR LEFT(tcMethod,17) == 'HIDDEN PROCEDURE ' ;
|
||||||
@@ -5067,6 +5083,24 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
IF VARTYPE(tcIndentation) # 'C'
|
IF VARTYPE(tcIndentation) # 'C'
|
||||||
tcIndentation = ''
|
tcIndentation = ''
|
||||||
ENDIF
|
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
|
*-- Si encuentra la cabecera de un PROCEDURE, la saltea
|
||||||
IF llProcedure
|
IF llProcedure
|
||||||
@@ -5361,21 +5395,29 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
LPARAMETERS tcMethods
|
LPARAMETERS tcMethods
|
||||||
|
|
||||||
*-- Finalmente, todos los m<>todos los ordeno y escribo juntos
|
*-- 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)
|
IF NOT EMPTY(tcMethods)
|
||||||
|
STORE '' TO lcMethods, lcMethods2
|
||||||
DIMENSION laMethods(1,3)
|
DIMENSION laMethods(1,3)
|
||||||
THIS.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount )
|
THIS.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount )
|
||||||
|
|
||||||
FOR I = 1 TO lnMethodCount
|
FOR I = 1 TO lnMethodCount
|
||||||
*-- Genero los m<>todos indentados
|
*-- 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)>>
|
* <<C_TAB>><<laMethods(I,3)>>PROCEDURE <<laMethods(I,1)>>
|
||||||
<<THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
|
* <<THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
|
||||||
<<C_TAB>>ENDPROC
|
* <<C_TAB>>ENDPROC
|
||||||
|
|
||||||
ENDTEXT
|
*ENDTEXT
|
||||||
|
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
|
||||||
|
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
|
ENDFOR
|
||||||
|
|
||||||
|
C_FB2PRG_CODE = C_FB2PRG_CODE + lcMethods
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
@@ -5390,8 +5432,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments
|
EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL lcMethod, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods
|
LOCAL lcMethod, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods, lcMethods2
|
||||||
STORE '' TO lcMethod, lcProcDef, lcMethods
|
STORE '' TO lcMethod, lcProcDef, lcMethods, lcMethods2
|
||||||
|
|
||||||
IF tnMethodCount > 0 THEN
|
IF tnMethodCount > 0 THEN
|
||||||
FOR I = 1 TO tnMethodCount
|
FOR I = 1 TO tnMethodCount
|
||||||
@@ -5427,13 +5469,15 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
*-- C<>digo del m<>todo
|
*-- 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) )>>
|
* <<THIS.IndentarMemo( taCode(taMethods(I,2)), CHR(9) + CHR(9) )>>
|
||||||
* <<C_TAB>>ENDPROC
|
* <<C_TAB>>ENDPROC
|
||||||
|
|
||||||
*ENDTEXT
|
*ENDTEXT
|
||||||
|
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
|
||||||
lcMethods = lcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
|
lcMethods = lcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
|
||||||
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' + CR_LF
|
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
|
||||||
|
lcMethods = lcMethods + CR_LF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
*TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
*TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||||
|
|||||||
Reference in New Issue
Block a user