From 896bac3c1ac8ab1b12f5bd270fd76875591d6996 Mon Sep 17 00:00:00 2001 From: fernando Date: Sat, 7 Dec 2013 20:00:19 +0100 Subject: [PATCH] Changeset: 56 Changeset: 56 En desarrollo FRX --- TESTS/ut__foxbin2prg.prg | 479 +++++++++++++++++++++++++-------------- foxbin2prg.prg | 9 +- 2 files changed, 316 insertions(+), 172 deletions(-) diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index c27a768..3125c76 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -54,7 +54,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Evaluate_results - LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tc_OutputFile, tcParent, tcClass, tcObjName, toReg_Esperado + LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tc_OutputFile, tcParent, tcClass, tcObjName, toReg_Esperado ; + , toReg, tcTipoBinario #IF .F. PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' @@ -66,184 +67,149 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF - LOCAL lnCodError, lcTipoBinario, toReg ; - , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; - , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" - - *-- TEST - IF ISNULL(toEx) && Respetar errores previos - TRY - lcTipoBinario = UPPER( JUSTEXT( tc_OutputFile ) ) - - IF FILE(tc_OutputFile) - SELECT 0 - USE (tc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN - ELSE - ERROR 'No se encontró 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ó el registro de cabecera "' + UniqueID + '"' - ENDIF - ELSE - LOCATE FOR CLASS==tcClass AND PARENT==tcParent AND objName==tcObjName - IF NOT FOUND() - ERROR 'No se encontró el registro para CLASS=="' + tcClass + '" AND PARENT=="' + tcParent + '" AND objName=="' + tcObjName + '"' - ENDIF - ENDIF - - SCATTER MEMO NAME toReg - - CATCH TO toEx - FINALLY - USE IN (SELECT("TABLABIN")) - ENDTRY - ENDIF - - IF ISNULL(toEx) - LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; - , lnPropsAndComments_Count, lnPropsAndComments_Count_Esperado, laPropsAndComments(1,2), laPropsAndComments_Esperado(1,2) ; - , laProtected(1), lnProtected_Count, laProtected_Esperado(1), lnProtected_Count_Esperado ; - , laMethods(1,2), lnMethods_Count, laMethods_Esperado(1,2), lnMethods_Count_Esperado, lcExtraData - LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" - - *-- Algunos ajustes para mejor visualización de caracteres especiales - *tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) - loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") - - *-- Reserved3 - loObj.get_PropsAndCommentsFrom_RESERVED3( toReg.RESERVED3, .F., @laPropsAndComments, @lnPropsAndComments_Count, '' ) - loObj.get_PropsAndCommentsFrom_RESERVED3( toReg_Esperado.RESERVED3, .F., @laPropsAndComments_Esperado, @lnPropsAndComments_Count_Esperado, '' ) - - *-- Properties - loObj.get_PropsAndValuesFrom_PROPERTIES( toReg.PROPERTIES, 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) - loObj.get_PropsAndValuesFrom_PROPERTIES( toReg_Esperado.PROPERTIES, 0, @laPropsAndValues_Esperado, @lnPropsAndValues_Count_Esperado, '' ) - - *-- Protected - loObj.get_PropsFrom_PROTECTED( toReg.PROTECTED, .F., @laProtected, @lnProtected_Count, '' ) - loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' ) - - *-- Methods - loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count ) - loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado ) - - lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')' + DO CASE + CASE INLIST(tcTipoBinario, 'FRX') - *-- Visualización de valores - THIS.messageout( LOWER(PROGRAM(PROGRAM(-1)-1)) ) + CASE INLIST(tcTipoBinario, 'VCX', 'SCX') + LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , lnPropsAndComments_Count, lnPropsAndComments_Count_Esperado, laPropsAndComments(1,2), laPropsAndComments_Esperado(1,2) ; + , laProtected(1), lnProtected_Count, laProtected_Esperado(1), lnProtected_Count_Esperado ; + , laMethods(1,2), lnMethods_Count, laMethods_Esperado(1,2), lnMethods_Count_Esperado, lcExtraData + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" - THIS.messageout( 'PROPERTIES esperadas para ' + lcExtraData + ': ' ; - + TRANSFORM(lnPropsAndValues_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.PROPERTIES)) + ' bytes)' ) - *THIS.messageout( REPLICATE('-',80) ) - *FOR I = 1 TO lnPropsAndValues_Count_Esperado - * THIS.messageout( 'PropName = ' + TRANSFORM(laPropsAndValues_Esperado(I,1)) ) - *ENDFOR + *-- Algunos ajustes para mejor visualización de caracteres especiales + *tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") - THIS.messageout( 'PROTECTED esperadas para ' + lcExtraData + ': ' ; - + TRANSFORM(lnProtected_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.PROTECTED)) + ' bytes)' ) - *THIS.messageout( REPLICATE('-',80) ) - *FOR I = 1 TO lnProtected_Count_Esperado - * THIS.messageout( 'PropName = ' + TRANSFORM(laProtected_Esperado(I,1)) ) - *ENDFOR + *-- Reserved3 + loObj.get_PropsAndCommentsFrom_RESERVED3( toReg.RESERVED3, .F., @laPropsAndComments, @lnPropsAndComments_Count, '' ) + loObj.get_PropsAndCommentsFrom_RESERVED3( toReg_Esperado.RESERVED3, .F., @laPropsAndComments_Esperado, @lnPropsAndComments_Count_Esperado, '' ) - THIS.messageout( 'RESERVED3 esperadas para ' + lcExtraData + ': ' ; - + TRANSFORM(lnPropsAndComments_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.RESERVED3)) + ' bytes)' ) - *THIS.messageout( REPLICATE('-',80) ) - *FOR I = 1 TO lnPropsAndComments_Count_Esperado - * THIS.messageout( 'PropName = ' + TRANSFORM(laPropsAndComments_Esperado(I,1)) ) - *ENDFOR + *-- Properties + loObj.get_PropsAndValuesFrom_PROPERTIES( toReg.PROPERTIES, 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + loObj.get_PropsAndValuesFrom_PROPERTIES( toReg_Esperado.PROPERTIES, 0, @laPropsAndValues_Esperado, @lnPropsAndValues_Count_Esperado, '' ) - THIS.messageout( 'METHODS esperadas para ' + lcExtraData + ': ' ; - + TRANSFORM(lnMethods_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.METHODS)) + ' bytes)' ) - *THIS.messageout( REPLICATE('-',80) ) - *FOR I = 1 TO lnMethods_Count_Esperado - * THIS.messageout( 'Name = ' + TRANSFORM(laMethods_Esperado(I,1)) ) - *ENDFOR + *-- Protected + loObj.get_PropsFrom_PROTECTED( toReg.PROTECTED, .F., @laProtected, @lnProtected_Count, '' ) + loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' ) - THIS.messageout( 'OLE2 esperado para ' + lcExtraData + ': ' + TRANSFORM(toReg_Esperado.OLE2) ) + *-- Methods + loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count ) + loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado ) - THIS.messageout( 'Checksum OLE esperado para ' + lcExtraData + ': ' + TRANSFORM(SYS(2007, toReg_Esperado.OLE)) ) + lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')' - *-- Evaluación de valores - THIS.assertequals( toReg_Esperado.Reserved1, toReg.Reserved1, "Valor de RESERVED1 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved1), LEN(toReg.Reserved1), "Tamaño de RESERVED1 para " + lcExtraData ) + *-- Visualización de valores + THIS.messageout( LOWER(PROGRAM(PROGRAM(-1)-1)) ) - THIS.assertequals( toReg_Esperado.Reserved2, toReg.Reserved2, "Valor de RESERVED2 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved2), LEN(toReg.Reserved2), "Tamaño de RESERVED2 para " + lcExtraData ) + THIS.messageout( 'PROPERTIES esperadas para ' + lcExtraData + ': ' ; + + TRANSFORM(lnPropsAndValues_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.PROPERTIES)) + ' bytes)' ) + *THIS.messageout( REPLICATE('-',80) ) + *FOR I = 1 TO lnPropsAndValues_Count_Esperado + * THIS.messageout( 'PropName = ' + TRANSFORM(laPropsAndValues_Esperado(I,1)) ) + *ENDFOR - THIS.assertequals( toReg_Esperado.Reserved4, toReg.Reserved4, "Valor de RESERVED4 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved4), LEN(toReg.Reserved4), "Tamaño de RESERVED4 para " + lcExtraData ) + THIS.messageout( 'PROTECTED esperadas para ' + lcExtraData + ': ' ; + + TRANSFORM(lnProtected_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.PROTECTED)) + ' bytes)' ) + *THIS.messageout( REPLICATE('-',80) ) + *FOR I = 1 TO lnProtected_Count_Esperado + * THIS.messageout( 'PropName = ' + TRANSFORM(laProtected_Esperado(I,1)) ) + *ENDFOR - THIS.assertequals( toReg_Esperado.Reserved5, toReg.Reserved5, "Valor de RESERVED5 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved5), LEN(toReg.Reserved5), "Tamaño de RESERVED5 para " + lcExtraData ) + THIS.messageout( 'RESERVED3 esperadas para ' + lcExtraData + ': ' ; + + TRANSFORM(lnPropsAndComments_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.RESERVED3)) + ' bytes)' ) + *THIS.messageout( REPLICATE('-',80) ) + *FOR I = 1 TO lnPropsAndComments_Count_Esperado + * THIS.messageout( 'PropName = ' + TRANSFORM(laPropsAndComments_Esperado(I,1)) ) + *ENDFOR - THIS.assertequals( toReg_Esperado.Reserved6, toReg.Reserved6, "Valor de RESERVED6 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved6), LEN(toReg.Reserved6), "Tamaño de RESERVED6 para " + lcExtraData ) + THIS.messageout( 'METHODS esperadas para ' + lcExtraData + ': ' ; + + TRANSFORM(lnMethods_Count_Esperado) + ' (Tamaño = ' + TRANSFORM(LEN(toReg_Esperado.METHODS)) + ' bytes)' ) + *THIS.messageout( REPLICATE('-',80) ) + *FOR I = 1 TO lnMethods_Count_Esperado + * THIS.messageout( 'Name = ' + TRANSFORM(laMethods_Esperado(I,1)) ) + *ENDFOR - THIS.assertequals( toReg_Esperado.Reserved7, toReg.Reserved7, "Valor de RESERVED7 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved7), LEN(toReg.Reserved7), "Tamaño de RESERVED7 para " + lcExtraData ) + THIS.messageout( 'OLE2 esperado para ' + lcExtraData + ': ' + TRANSFORM(toReg_Esperado.OLE2) ) - THIS.assertequals( toReg_Esperado.Reserved8, toReg.Reserved8, "Valor de RESERVED8 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.Reserved8), LEN(toReg.Reserved8), "Tamaño de RESERVED8 para " + lcExtraData ) + THIS.messageout( 'Checksum OLE esperado para ' + lcExtraData + ': ' + TRANSFORM(SYS(2007, toReg_Esperado.OLE)) ) - THIS.assertequals( toReg_Esperado.OLE2, toReg.OLE2, "Valor de OLE2 para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.OLE2), LEN(toReg.OLE2), "Tamaño de OLE2 para " + lcExtraData ) - THIS.assertequals( SYS(2007, toReg_Esperado.OLE), SYS(2007, toReg.OLE), "Valor de OLE (Checksum) para " + lcExtraData ) - THIS.assertequals( LEN(toReg_Esperado.OLE), LEN(toReg.OLE), "Tamaño de OLE para " + lcExtraData ) + *-- Evaluación de valores + THIS.assertequals( toReg_Esperado.Reserved1, toReg.Reserved1, "Valor de RESERVED1 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved1), LEN(toReg.Reserved1), "Tamaño de RESERVED1 para " + lcExtraData ) - *-- PROPERTIES - THIS.assertequals( LEN(toReg_Esperado.PROPERTIES), LEN(toReg.PROPERTIES), "Tamaño de PROPERTIES para " + lcExtraData ) - THIS.assertequals( lnPropsAndValues_Count_Esperado, lnPropsAndValues_Count, "Cantidad de PROPERTIES para " + lcExtraData ) - FOR I = 1 TO lnPropsAndValues_Count_Esperado - THIS.asserttrue( ASCAN( laPropsAndValues, laPropsAndValues_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; - , ' Comprobación de que existe la Property "' + TRANSFORM(laPropsAndValues_Esperado(I,1)) + '"' + " para " + lcExtraData ) - ENDFOR + THIS.assertequals( toReg_Esperado.Reserved2, toReg.Reserved2, "Valor de RESERVED2 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved2), LEN(toReg.Reserved2), "Tamaño de RESERVED2 para " + lcExtraData ) - *-- RESERVED3 - THIS.assertequals( LEN(toReg_Esperado.RESERVED3), LEN(toReg.RESERVED3), "Tamaño de RESERVED3 para " + lcExtraData ) - THIS.assertequals( lnPropsAndComments_Count_Esperado, lnPropsAndComments_Count, "Cantidad de RESERVED3 para " + lcExtraData ) - FOR I = 1 TO lnPropsAndComments_Count_Esperado - THIS.asserttrue( ASCAN( laPropsAndComments, laPropsAndComments_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; - , ' Comprobación de que existe la Reserved3 "' + TRANSFORM(laPropsAndComments_Esperado(I,1)) + '"' + " para " + lcExtraData ) - ENDFOR + THIS.assertequals( toReg_Esperado.Reserved4, toReg.Reserved4, "Valor de RESERVED4 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved4), LEN(toReg.Reserved4), "Tamaño de RESERVED4 para " + lcExtraData ) - *-- PROTECTED - THIS.assertequals( LEN(toReg_Esperado.PROTECTED), LEN(toReg.PROTECTED), "Tamaño de PROTECTED para " + lcExtraData ) - THIS.assertequals( lnProtected_Count_Esperado, lnProtected_Count, "Cantidad de PROTECTED para " + lcExtraData ) - FOR I = 1 TO lnProtected_Count_Esperado - THIS.asserttrue( ASCAN( laProtected, laProtected_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; - , ' Comprobación de que existe la Protected "' + TRANSFORM(laProtected_Esperado(I,1)) + '"' + " para " + lcExtraData ) - ENDFOR + THIS.assertequals( toReg_Esperado.Reserved5, toReg.Reserved5, "Valor de RESERVED5 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved5), LEN(toReg.Reserved5), "Tamaño de RESERVED5 para " + lcExtraData ) - *-- METHODS - lcMensaje = "Tamañ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ÓN!! - COMPROBAR "BUG DEL MÉTODO MOVIDO"' + THIS.assertequals( toReg_Esperado.Reserved6, toReg.Reserved6, "Valor de RESERVED6 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved6), LEN(toReg.Reserved6), "Tamaño de RESERVED6 para " + lcExtraData ) + + THIS.assertequals( toReg_Esperado.Reserved7, toReg.Reserved7, "Valor de RESERVED7 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved7), LEN(toReg.Reserved7), "Tamaño de RESERVED7 para " + lcExtraData ) + + THIS.assertequals( toReg_Esperado.Reserved8, toReg.Reserved8, "Valor de RESERVED8 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.Reserved8), LEN(toReg.Reserved8), "Tamaño de RESERVED8 para " + lcExtraData ) + + THIS.assertequals( toReg_Esperado.OLE2, toReg.OLE2, "Valor de OLE2 para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.OLE2), LEN(toReg.OLE2), "Tamaño de OLE2 para " + lcExtraData ) + + THIS.assertequals( SYS(2007, toReg_Esperado.OLE), SYS(2007, toReg.OLE), "Valor de OLE (Checksum) para " + lcExtraData ) + THIS.assertequals( LEN(toReg_Esperado.OLE), LEN(toReg.OLE), "Tamaño de OLE para " + lcExtraData ) + + *-- PROPERTIES + THIS.assertequals( LEN(toReg_Esperado.PROPERTIES), LEN(toReg.PROPERTIES), "Tamaño de PROPERTIES para " + lcExtraData ) + THIS.assertequals( lnPropsAndValues_Count_Esperado, lnPropsAndValues_Count, "Cantidad de PROPERTIES para " + lcExtraData ) + FOR I = 1 TO lnPropsAndValues_Count_Esperado + THIS.asserttrue( ASCAN( laPropsAndValues, laPropsAndValues_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; + , ' Comprobación de que existe la Property "' + TRANSFORM(laPropsAndValues_Esperado(I,1)) + '"' + " para " + lcExtraData ) + ENDFOR + + *-- RESERVED3 + THIS.assertequals( LEN(toReg_Esperado.RESERVED3), LEN(toReg.RESERVED3), "Tamaño de RESERVED3 para " + lcExtraData ) + THIS.assertequals( lnPropsAndComments_Count_Esperado, lnPropsAndComments_Count, "Cantidad de RESERVED3 para " + lcExtraData ) + FOR I = 1 TO lnPropsAndComments_Count_Esperado + THIS.asserttrue( ASCAN( laPropsAndComments, laPropsAndComments_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; + , ' Comprobación de que existe la Reserved3 "' + TRANSFORM(laPropsAndComments_Esperado(I,1)) + '"' + " para " + lcExtraData ) + ENDFOR + + *-- PROTECTED + THIS.assertequals( LEN(toReg_Esperado.PROTECTED), LEN(toReg.PROTECTED), "Tamaño de PROTECTED para " + lcExtraData ) + THIS.assertequals( lnProtected_Count_Esperado, lnProtected_Count, "Cantidad de PROTECTED para " + lcExtraData ) + FOR I = 1 TO lnProtected_Count_Esperado + THIS.asserttrue( ASCAN( laProtected, laProtected_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; + , ' Comprobación de que existe la Protected "' + TRANSFORM(laProtected_Esperado(I,1)) + '"' + " para " + lcExtraData ) + ENDFOR + + *-- METHODS + lcMensaje = "Tamañ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ÓN!! - COMPROBAR "BUG DEL MÉTODO MOVIDO"' + ENDIF ENDIF - ENDIF - *-- Fin comprobación - - THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ; - , LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), lcMensaje ) - - THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData ) - FOR I = 1 TO lnMethods_Count_Esperado - THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; - , ' Comprobación de que existe el Method "' + TRANSFORM(laMethods_Esperado(I,1)) + '"' + " para " + lcExtraData ) - ENDFOR + *-- Fin comprobación + + THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ; + , LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), lcMensaje ) + + THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData ) + FOR I = 1 TO lnMethods_Count_Esperado + THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; + , ' Comprobación de que existe el Method "' + TRANSFORM(laMethods_Esperado(I,1)) + '"' + " para " + lcExtraData ) + ENDFOR + + ENDCASE ELSE *-- Evaluación de errores @@ -261,10 +227,82 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElReporte_FB2P_FRX_YValidarLosCamposDelRegistro + *-- REPORTE (FRX) + LOCAL lnCodError, lnCodError_Esperado ; + , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ; + , 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. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_File = 'fb2p_foxuser.frx' + lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) + lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) + + 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() + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + SCATTER MEMO NAME loReg_Esperado + lcUniqueID = loReg_Esperado.UNIQUEID + + *-- TEST + IF FILE(lc_OutputFile) + SELECT 0 + USE (lc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' + ENDIF + + LOCATE FOR UNIQUEID==lcUniqueID + + IF NOT FOUND() + ERROR 'No se encontró el registro con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"' + ENDIF + + SCATTER MEMO NAME loReg + USE IN (SELECT("TABLABIN")) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) + 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_ParaElForm_FB2P_SCX_YValidarLosCamposDelRegistro LOCAL lnCodError, lnCodError_Esperado ; - , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ; + , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ; , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -285,6 +323,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lc_File = 'fb2p_frm_1.scx' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) ) @@ -294,7 +333,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN - SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Form',10) OR PLATFORM==PADR("WINDOWS",8) ) + SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Form',10) OR PLATFORM==PADR("WINDOWS",8) ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado SCATTER MEMO NAME loReg_Esperado @@ -302,7 +341,31 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lcParent = loReg_Esperado.PARENT lcObjName = loReg_Esperado.objName - THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + *-- TEST + IF FILE(lc_OutputFile) + SELECT 0 + USE (lc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' + ENDIF + + IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Screen",10) + IF NOT FOUND() + ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ENDIF + ELSE + LOCATE FOR CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName + IF NOT FOUND() + ERROR 'No se encontró el registro para CLASS=="' + lcClass + '" AND PARENT=="' + lcParent + '" AND objName=="' + lcObjName + '"' + ENDIF + ENDIF + + SCATTER MEMO NAME loReg + USE IN (SELECT("TABLABIN")) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) ENDSCAN CATCH TO loEx @@ -310,6 +373,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIBOBIN_IN")) + USE IN (SELECT("TABLABIN")) ENDTRY ENDFUNC @@ -318,7 +382,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarLosCamposDelRegistro LOCAL lnCodError, lnCodError_Esperado ; - , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ; + , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ; , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -341,6 +405,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lc_File = 'fb2p_test.vcx' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) ) @@ -350,7 +415,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg 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) ) + 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 @@ -358,7 +423,31 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lcParent = loReg_Esperado.PARENT lcObjName = loReg_Esperado.objName - THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + *-- TEST + IF FILE(lc_OutputFile) + SELECT 0 + USE (lc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' + ENDIF + + IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + IF NOT FOUND() + ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ENDIF + ELSE + LOCATE FOR CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName + IF NOT FOUND() + ERROR 'No se encontró el registro para CLASS=="' + lcClass + '" AND PARENT=="' + lcParent + '" AND objName=="' + lcObjName + '"' + ENDIF + ENDIF + + SCATTER MEMO NAME loReg + USE IN (SELECT("TABLABIN")) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) ENDSCAN CATCH TO loEx @@ -366,6 +455,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIBOBIN_IN")) + USE IN (SELECT("TABLABIN")) ENDTRY ENDFUNC @@ -374,7 +464,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* 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 ; + , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ; , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -397,6 +487,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lc_File = 'fb2p_test_bug_metodo_movido.vcx' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) ) @@ -406,7 +497,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg 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) ) + 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 @@ -414,7 +505,31 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lcParent = loReg_Esperado.PARENT lcObjName = loReg_Esperado.objName - THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + *-- TEST + IF FILE(lc_OutputFile) + SELECT 0 + USE (lc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' + ENDIF + + IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + IF NOT FOUND() + ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ENDIF + ELSE + LOCATE FOR CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName + IF NOT FOUND() + ERROR 'No se encontró el registro para CLASS=="' + lcClass + '" AND PARENT=="' + lcParent + '" AND objName=="' + lcObjName + '"' + ENDIF + ENDIF + + SCATTER MEMO NAME loReg + USE IN (SELECT("TABLABIN")) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) ENDSCAN CATCH TO loEx @@ -422,6 +537,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIBOBIN_IN")) + USE IN (SELECT("TABLABIN")) ENDTRY ENDFUNC @@ -430,7 +546,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* 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 ; + , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ; , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -453,6 +569,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lc_File = 'fb2p_test_bug_estructural.vcx' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) ) @@ -462,7 +579,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg 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) ) + 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 @@ -470,14 +587,40 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg lcParent = loReg_Esperado.PARENT lcObjName = loReg_Esperado.objName - THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + *-- TEST + IF FILE(lc_OutputFile) + SELECT 0 + USE (lc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' + ENDIF + + IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + IF NOT FOUND() + ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ENDIF + ELSE + LOCATE FOR CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName + IF NOT FOUND() + ERROR 'No se encontró el registro para CLASS=="' + lcClass + '" AND PARENT=="' + lcParent + '" AND objName=="' + lcObjName + '"' + ENDIF + ENDIF + + SCATTER MEMO NAME loReg + USE IN (SELECT("TABLABIN")) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) ENDSCAN CATCH TO loEx - THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; + , loReg_Esperado, loReg, lcTipoBinario ) FINALLY USE IN (SELECT("ARCHIBOBIN_IN")) + USE IN (SELECT("TABLABIN")) ENDTRY ENDFUNC diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3b5c4d1..93e0321 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -48,6 +48,7 @@ * 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad * 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 y agregado soporte preliminar de conversión de reportes (FRX/FR2) +* 07/12/2013 FDBOZZO v1.11 * *--------------------------------------------------------------------------------------------------- * TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS) @@ -56,7 +57,7 @@ * 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la última (arreglado en v.1.7) * 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementación defectuosa del arreglo anterior (arreglado en v.1.8) * 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementació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 +* 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 (arreglado en v.1.10) * *--------------------------------------------------------------------------------------------------- * TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES: @@ -5854,7 +5855,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> + <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 @@ -5967,7 +5968,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> + <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 @@ -6080,7 +6081,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> + <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2