From f45409393b54a6ebab7acf2f68e7f79cb0d12eb1 Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 6 Dec 2013 01:09:53 +0100 Subject: [PATCH 01/11] Changeset: 25 Changeset: 25 --- foxbin2prg.prg | 1629 +++++++++++++++++++++++++++++++----------------- 1 file changed, 1049 insertions(+), 580 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 6d6ea79..511c534 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -46,6 +46,7 @@ * 01/12/2013 FDBOZZO v1.6 Refactorización completa generació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ámetros, verificació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.9 Arreglo bug pérdida de propiedades causado por una mejora anterior * *--------------------------------------------------------------------------------------------------- * TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS) @@ -53,6 +54,7 @@ * 27/11/2013 Fidel Charny REPORTE BUG: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6) * 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) * *--------------------------------------------------------------------------------------------------- * TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES: @@ -121,12 +123,15 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE C_FILE_TXT_F '*' #DEFINE C_FB2P_VALUE_I '' #DEFINE C_FB2P_VALUE_F '' -#DEFINE C_MEMBERDATA_I '' -#DEFINE C_MEMBERDATA_F '' -#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I) -#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F) #DEFINE C_LEN_FB2P_VALUE_I LEN(C_FB2P_VALUE_I) #DEFINE C_LEN_FB2P_VALUE_F LEN(C_FB2P_VALUE_F) +#DEFINE C_VFPDATA_I '' +#DEFINE C_VFPDATA_F '' +#DEFINE C_MEMBERDATA_I C_VFPDATA_I +#DEFINE C_MEMBERDATA_F C_VFPDATA_F +#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I) +#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F) +#DEFINE C_TAG_REPORTE 'reportes' #DEFINE C_TAB CHR(9) #DEFINE C_CR CHR(13) #DEFINE C_LF CHR(10) @@ -315,6 +320,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] @@ -335,6 +343,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM c_MN2 = 'MN2' c_FR2 = 'FR2' c_LB2 = 'LB2' + c_DB2 = 'DB2' + c_CD2 = 'CD2' + c_DC2 = 'DC2' ******************************************************************************************************************* @@ -397,6 +408,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_PJ2 ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) + CASE JUSTEXT(THIS.c_InputFile) = 'FRX' + THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_FR2 ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2 THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) @@ -409,6 +424,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'PJX' ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) + CASE JUSTEXT(THIS.c_InputFile) = THIS.c_FR2 + THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'FRX' ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + OTHERWISE ERROR 'El archivo [' + THIS.c_InputFile + '] no está soportado' @@ -547,10 +566,12 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -1254,6 +1275,26 @@ DEFINE CLASS c_conversor_base AS SESSION ENDPROC + ******************************************************************************************************************* + PROCEDURE encode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' ) + ENDFOR + RETURN tcText + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE decode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) ) + ENDFOR + RETURN tcText + ENDPROC ENDDEFINE @@ -2491,9 +2532,18 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *toProject.setParsedProjInfoLine( @tcLine ) lnPos = AT( ' ', tcLine, 1 ) lnPos2 = AT( '&'+'&', tcLine ) - lcDefinedPAM = lcDefinedPAM ; - + RTRIM( SUBSTR( tcLine, lnPos+1, lnPos2 - lnPos - 1 ), 0, ' ', CHR(9) ) + ' ' + SUBSTR( tcLine, lnPos2 + 3 ) ; - + CR_LF + + IF lnPos2 > 0 + *-- Con comentarios + lcDefinedPAM = lcDefinedPAM ; + + RTRIM( SUBSTR( tcLine, lnPos+1, lnPos2 - lnPos - 1 ), 0, ' ', CHR(9) ) + ' ' + SUBSTR( tcLine, lnPos2 + 3 ) ; + + CR_LF + ELSE + *-- Sin comentarios + lcDefinedPAM = lcDefinedPAM ; + + RTRIM( SUBSTR( tcLine, lnPos+1 ), 0, ' ', CHR(9) ) + ' ' ; + + CR_LF + ENDIF ENDCASE ENDFOR ENDWITH && THIS @@ -4179,577 +4229,6 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ENDDEFINE -******************************************************************************************************************* -DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg - #IF .F. - LOCAL THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' - #ENDIF - *_MEMBERDATA = [] ; - + [] ; - + [] - - ******************************************************************************************************************* - PROCEDURE Convertir - DODEFAULT() - - TRY - LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; - , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) - STORE 0 TO lnCodError, lnLastClass - STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) - STORE NULL TO loRegClass, loRegObj - - USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN - - INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE - SET ORDER TO 0 IN TABLABIN - - THIS.write_PROGRAM_HEADER() - - THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - - THIS.write_DefinicionObjetosOLE() - - *-- Escribo los métodos ordenados - lnLastClass = 0 - - *---------------------------------------------- - *-- RECORRO LAS CLASES - *---------------------------------------------- - SELECT TABLABIN - SET ORDER TO PARENT_OBJ - - SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" - SCATTER MEMO NAME loRegClass - lcObjName = ALLTRIM(loRegClass.OBJNAME) - - THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) - - THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) - - THIS.write_Define_Class_COMMENTS( @loRegClass ) - - THIS.write_METADATA( @loRegClass ) - - THIS.write_INCLUDE( @loRegClass ) - - THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ) - - - *------------------------------------------------------------------------------- - *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN - *------------------------------------------------------------------------------- - lnRecno = RECNO() - LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - SCATTER MEMO NAME loRegObj - ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios - THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) - ENDSCAN - - GOTO RECORD (lnRecno) - - - *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO - DIMENSION laMethods(1,3) - lcMethods = '' - THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ) - - THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) - - lnLastClass = 1 - lcMethods = '' - - *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS - lnRecno = RECNO() - LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCAN REST ; - FOR TABLABIN.PLATFORM = "WINDOWS" AND NOT TABLABIN.RESERVED1=="Class" ; - WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCATTER MEMO NAME loRegObj - THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) - ENDSCAN - - THIS.write_ALL_OBJECT_METHODS( @lcMethods ) - - GOTO RECORD (lnRecno) - ENDSCAN - - THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) - - *-- Genero el VC2 - IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 - ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' - ENDIF - - CATCH TO loEx - lnCodError = loEx.ERRORNO - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - FINALLY - USE IN (SELECT("TABLABIN")) - - ENDTRY - - RETURN lnCodError - ENDPROC -ENDDEFINE - - -******************************************************************************************************************* -DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg - #IF .F. - LOCAL THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' - #ENDIF - *_MEMBERDATA = [] ; - + [] ; - + [] - - - ******************************************************************************************************************* - PROCEDURE Convertir - DODEFAULT() - - TRY - LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; - , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) - STORE 0 TO lnCodError, lnLastClass - STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) - STORE NULL TO loRegClass, loRegObj - - USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN - - *IF FILE('C_SUB_OBJS.CDX') - * ERASE 'C_SUB_OBJS.CDX' - *ENDIF - INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE - SET ORDER TO 0 IN TABLABIN - - THIS.write_PROGRAM_HEADER() - - THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - - THIS.write_DefinicionObjetosOLE() - - *-- Escribo los métodos ordenados - lnLastObj = 0 - lnLastClass = 0 - - *---------------------------------------------- - *-- RECORRO LAS CLASES - *---------------------------------------------- - SELECT TABLABIN - SET ORDER TO PARENT_OBJ - GOTO RECORD 1 - - SCATTER FIELDS RESERVED8 MEMO NAME loRegClass - - IF NOT EMPTY(loRegClass.RESERVED8) THEN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - #INCLUDE "<>" - - ENDTEXT - ENDIF - - - SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" ; - AND (EMPTY(TABLABIN.PARENT) ; - AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) - SCATTER MEMO NAME loRegClass - lcObjName = ALLTRIM(loRegClass.OBJNAME) - - THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) - - THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) - - THIS.write_Define_Class_COMMENTS( @loRegClass ) - - THIS.write_METADATA( @loRegClass ) - - THIS.write_INCLUDE( @loRegClass ) - - THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ) - - - *------------------------------------------------------------------------------- - *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN - *------------------------------------------------------------------------------- - lnRecno = RECNO() - LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - SCATTER MEMO NAME loRegObj - ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios - THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) - ENDSCAN - - GOTO RECORD (lnRecno) - - - *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO - DIMENSION laMethods(1,3) - lcMethods = '' - THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ) - - THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) - - lnLastClass = 1 - lcMethods = '' - - *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS - lnRecno = RECNO() - LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCAN REST ; - FOR TABLABIN.PLATFORM = "WINDOWS" ; - AND NOT (EMPTY(TABLABIN.PARENT) ; - AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) ; - WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName - - SCATTER MEMO NAME loRegObj - THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) - ENDSCAN - - THIS.write_ALL_OBJECT_METHODS( @lcMethods ) - - GOTO RECORD (lnRecno) - ENDSCAN - - THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) - - *-- Genero el SC2 - IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 - ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' - ENDIF - - CATCH TO loEx - lnCodError = loEx.ERRORNO - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - FINALLY - USE IN (SELECT("TABLABIN")) - - ENDTRY - - RETURN lnCodError - ENDPROC -ENDDEFINE - - -******************************************************************************************************************* -DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg - #IF .F. - LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' - #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - - - ******************************************************************************************************************* - PROCEDURE write_PROGRAM_HEADER - *-- Cabecera del PRG e inicio de DEF_CLASS - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - *-------------------------------------------------------------------------------------------------------------------------------------------------------- - * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO. - * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT. - *-------------------------------------------------------------------------------------------------------------------------------------------------------- - <> Version="<>" SourceFile="<>" Generated="<>" <> (Para uso con Visual FoxPro 9.0) - * - ENDTEXT - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE Convertir - DODEFAULT() - - TRY - LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo ; - , loEx AS EXCEPTION ; - , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ; - , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; - , loServerData AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG' - - STORE NULL TO loProject, loReg, loServerHead, loServerData - USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN - loServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD') - - - *-- Obtengo los archivos del proyecto - loProject = CREATEOBJECT('CL_PROJECT') - SCATTER MEMO NAME loReg - loProject._HomeDir = ALLTRIM( loReg.HOMEDIR ) - loProject._ServerInfo = loReg.RESERVED2 - loProject._Debug = loReg.DEBUG - loProject._Encrypted = loReg.ENCRYPT - lcDevInfo = loReg.DEVINFO - - - *--- Ubico el programa principal - LOCATE FOR MAINPROG - - IF FOUND() - loProject._MainProg = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) - ENDIF - - - *-- Ubico el Project Hook - LOCATE FOR TYPE == 'W' - - IF FOUND() - loProject._ProjectHookLibrary = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) - loProject._ProjectHookClass = LOWER( ALLTRIM( RESERVED1, 0, ' ', CHR(0) ) ) - ENDIF - - - *-- Ubico el icono del proyecto - LOCATE FOR TYPE == 'i' - - IF FOUND() - loProject._Icon = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) - ENDIF - - - *-- Escaneo el proyecto - SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) - SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg - loReg.NAME = LOWER( ALLTRIM( loReg.NAME, 0, ' ', CHR(0) ) ) - loReg.COMMENTS = CHRTRAN( ALLTRIM( loReg.COMMENTS, 0, ' ', CHR(0) ), ['], ["] ) - - TRY - loProject.ADD( loReg, loReg.NAME ) - CATCH TO loEx WHEN loEx.ERRORNO = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) - *-- Saltear y no agregar el archivo duplicado / Bypass and not add the duplicated file - ENDTRY - ENDSCAN - - - THIS.write_PROGRAM_HEADER() - - - *-- Directorio de inicio - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - LPARAMETERS tcDir - - lcCurdir = SYS(5)+CURDIR() - CD ( EVL( tcDir, JUSTPATH( SYS(16) ) ) ) - - ENDTEXT - - - *-- Información del programa - loProject.parseDeviceInfo( lcDevInfo ) - C_FB2PRG_CODE = C_FB2PRG_CODE + loProject.getFormattedDeviceInfoText() + CR_LF - - - *-- Información de los Servidores definidos - IF NOT EMPTY(loProject._ServerInfo) - loServerHead.parseServerInfo( loProject._ServerInfo ) - C_FB2PRG_CODE = C_FB2PRG_CODE + loServerHead.getFormattedServerText() + CR_LF - loServerHead = NULL - ENDIF - - - *-- Generación del proyecto - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <> - FOR EACH loProj IN _VFP.Projects FOXOBJECT - <>loProj.Close() - ENDFOR - - STRTOFILE( '', '__newproject.f2b' ) - BUILD PROJECT <> FROM '__newproject.f2b' - ENDTEXT - - - *-- Abro el proyecto - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - FOR EACH loProj IN _VFP.Projects FOXOBJECT - <>loProj.Close() - ENDFOR - - MODIFY PROJECT '<>' NOWAIT NOSHOW NOPROJECTHOOK - - loProject = _VFP.Projects('<>') - - WITH loProject.FILES - ENDTEXT - - - *-- Definir archivos del proyecto y metadata: CPID, Timestamp, ID, etc. - loProject.KEYSORT = 2 - - FOR EACH loReg IN loProject &&FOXOBJECT - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.ADD('<>') - ENDTEXT - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 - <><><<'&'>><<'&'>> <> - Type="<>" - Cpid="<>" - Timestamp="<>" - ID="<>" - ObjRev="<>" - <> - ENDTEXT - ENDFOR - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> - - <>.ITEM('__newproject.f2b').Remove() - - ENDTEXT - - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> - ENDTEXT - - - *-- Agrego los comentarios - loProject.KEYSORT = 2 - - FOR EACH loReg IN loProject &&FOXOBJECT - IF NOT EMPTY(loReg.COMMENTS) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.ITEM(lcCurdir + '<>').Description = '<>' - ENDTEXT - ENDIF - ENDFOR - - - *-- Exclusiones - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> - - <><> - ENDTEXT - - loProject.KEYSORT = 2 - - FOR EACH loReg IN loProject &&FOXOBJECT - IF loReg.EXCLUDE - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.ITEM(lcCurdir + '<>').Exclude = .T. - ENDTEXT - ENDIF - ENDFOR - - - *-- Tipos de archivos especiales - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> - - <><> - ENDTEXT - - loProject.KEYSORT = 2 - - FOR EACH loReg IN loProject &&FOXOBJECT - IF INLIST( UPPER( JUSTEXT( loReg.NAME ) ), 'H','FPW' ) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.ITEM(lcCurdir + '<>').Type = 'T' - ENDTEXT - ENDIF - ENDFOR - - - *-- ProjectHook, Debug, Encrypt, Build y cierre - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> - ENDWITH - - WITH loProject - <><> - ENDTEXT - - IF NOT EMPTY(loProject._MainProg) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.SetMain(lcCurdir + '<>') - ENDTEXT - ENDIF - - IF NOT EMPTY(loProject._Icon) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.Icon = lcCurdir + '<>' - ENDTEXT - ENDIF - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <>.Debug = <> - <>.Encrypted = <> - <>*<.CmntStyle = <> /> - <>*<.NoLogo = <> /> - <>*<.SaveCode = <> /> - <>.ProjectHookLibrary = '<>' - <>.ProjectHookClass = '<>' - <><> - ENDWITH - - ENDTEXT - - - *-- Build y cierre - * _VFP.Projects('<>').FILES('__newproject.f2b').Remove() - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - - _VFP.Projects('<>').Close() - ENDTEXT - - *-- Restauro Directorio de inicio - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - *ERASE '__newproject.f2b' - CD (lcCurdir) - RETURN - ENDTEXT - - - *-- Genero el PJ2 - IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 - ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' - ENDIF - *COMPILE ( THIS.c_outputFile ) - - - CATCH TO loEx - lnCodError = loEx.ERRORNO - - DO CASE - CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) - loEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME - ENDCASE - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - FINALLY - USE IN (SELECT("TABLABIN")) - - ENDTRY - - RETURN lnCodError - ENDPROC -ENDDEFINE - - ******************************************************************************************************************* DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base #IF .F. @@ -4770,8 +4249,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -5045,18 +4527,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lcPropsMethodsDefd = '' TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><> + <><> ENDTEXT FOR I = 1 TO tnPropsAndComments_Count + IF EMPTY(taPropsAndComments(I,1)) + LOOP + ENDIF + lcType = LEFT( taPropsAndComments(I,1), 1 ) lcType = ICASE( lcType == '*', 'm' ; , lcType == '^', 'a' ; , 'p' ) TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <><>*<>: <> <<'&'>><<'&'>> <> + <><>*<>: <> ENDTEXT + + IF NOT EMPTY(taPropsAndComments(I,2)) + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <><><<'&'>><<'&'>> <> + ENDTEXT + ENDIF ENDFOR TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 @@ -5270,6 +4762,339 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT ENDIF ENDPROC + + + ******************************************************************************************************************* + PROCEDURE write_CABECERA_REPORTE + LPARAMETERS toReg + + TRY + LOCAL lc_TAG_REPORTE + lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' ' + lc_TAG_REPORTE_F = ' >' + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + objcode="<>" name="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + vpos="<>" hpos="<>" height="toReg.height" width="toReg.width" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + picture="<>" order="<>" unique="<>" comment="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + environ="<>" boxchar="<>" fillchar="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + tag="<>" tag2="<>" penred="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + ruler="<>" rulerlines="<>" grid="<>" gridv="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1 + gridh="<>" float="<>" stretch="<>" stretchtop="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + general="<>" spacing="<>" double="<>" swapheader="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + summary="<>" addalias="<>" offset="<>" topmargin="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + supgroup="<>" supvalchng="<>" supexpr="<>" user="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + style=>]]> + expr=>]]> + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <> + ENDTEXT + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE write_DETALLE_REPORTE + LPARAMETERS toReg + + TRY + LOCAL lc_TAG_REPORTE + lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' ' + lc_TAG_REPORTE_F = ' >' + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + objcode="<>" name="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + vpos="<>" hpos="<>" height="toReg.height" width="toReg.width" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + picture="<>" order="<>" unique="<>" comment="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + environ="<>" boxchar="<>" fillchar="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + tag="<>" tag2="<>" penred="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + ruler="<>" rulerlines="<>" grid="<>" gridv="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + gridh="<>" float="<>" stretch="<>" stretchtop="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + general="<>" spacing="<>" double="<>" swapheader="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + summary="<>" addalias="<>" offset="<>" topmargin="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + supgroup="<>" supvalchng="<>" supexpr="<>" user="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + style="<>" + expr="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <> + ENDTEXT + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE write_DATAENVIRONMENT_REPORTE + LPARAMETERS toReg + + TRY + LOCAL lc_TAG_REPORTE + lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' ' + lc_TAG_REPORTE_F = ' >' + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + objcode="<>" name="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + vpos="<>" hpos="<>" height="toReg.height" width="toReg.width" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + picture="<>" order="<>" unique="<>" comment="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + environ="<>" boxchar="<>" fillchar="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + tag="<>" tag2="<>" penred="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + ruler="<>" rulerlines="<>" grid="<>" gridv="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + gridh="<>" float="<>" stretch="<>" stretchtop="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + general="<>" spacing="<>" double="<>" swapheader="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + summary="<>" addalias="<>" offset="<>" topmargin="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + supgroup="<>" supvalchng="<>" supexpr="<>" user="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + style="<>" + expr="<>" + ENDTEXT + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + <> + ENDTEXT + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN + ENDPROC ******************************************************************************************************************* @@ -5880,6 +5705,650 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg + #IF .F. + LOCAL THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' + #ENDIF + *_MEMBERDATA = [] ; + + [] ; + + [] + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; + , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) + STORE 0 TO lnCodError, lnLastClass + STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) + STORE NULL TO loRegClass, loRegObj + + USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN + + INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE + SET ORDER TO 0 IN TABLABIN + + THIS.write_PROGRAM_HEADER() + + THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) + + THIS.write_DefinicionObjetosOLE() + + *-- Escribo los métodos ordenados + lnLastClass = 0 + + *---------------------------------------------- + *-- RECORRO LAS CLASES + *---------------------------------------------- + SELECT TABLABIN + SET ORDER TO PARENT_OBJ + + SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" + SCATTER MEMO NAME loRegClass + lcObjName = ALLTRIM(loRegClass.OBJNAME) + + THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) + + THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) + + THIS.write_Define_Class_COMMENTS( @loRegClass ) + + THIS.write_METADATA( @loRegClass ) + + THIS.write_INCLUDE( @loRegClass ) + + THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ) + + + *------------------------------------------------------------------------------- + *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN + *------------------------------------------------------------------------------- + lnRecno = RECNO() + LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + SCATTER MEMO NAME loRegObj + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios + THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) + ENDSCAN + + GOTO RECORD (lnRecno) + + + *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO + DIMENSION laMethods(1,3) + lcMethods = '' + THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ) + + THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + + lnLastClass = 1 + lcMethods = '' + + *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS + lnRecno = RECNO() + LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCAN REST ; + FOR TABLABIN.PLATFORM = "WINDOWS" AND NOT TABLABIN.RESERVED1=="Class" ; + WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCATTER MEMO NAME loRegObj + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) + ENDSCAN + + THIS.write_ALL_OBJECT_METHODS( @lcMethods ) + + GOTO RECORD (lnRecno) + ENDSCAN + + THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) + + *-- Genero el VC2 + IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' + ENDIF + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + + ENDTRY + + RETURN lnCodError + ENDPROC +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg + #IF .F. + LOCAL THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' + #ENDIF + *_MEMBERDATA = [] ; + + [] ; + + [] + + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; + , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) + STORE 0 TO lnCodError, lnLastClass + STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) + STORE NULL TO loRegClass, loRegObj + + USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN + + INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE + SET ORDER TO 0 IN TABLABIN + + THIS.write_PROGRAM_HEADER() + + THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) + + THIS.write_DefinicionObjetosOLE() + + *-- Escribo los métodos ordenados + lnLastObj = 0 + lnLastClass = 0 + + *---------------------------------------------- + *-- RECORRO LAS CLASES + *---------------------------------------------- + SELECT TABLABIN + SET ORDER TO PARENT_OBJ + GOTO RECORD 1 + + SCATTER FIELDS RESERVED8 MEMO NAME loRegClass + + IF NOT EMPTY(loRegClass.RESERVED8) THEN + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + #INCLUDE "<>" + + ENDTEXT + ENDIF + + + SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" ; + AND (EMPTY(TABLABIN.PARENT) ; + AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) + SCATTER MEMO NAME loRegClass + lcObjName = ALLTRIM(loRegClass.OBJNAME) + + THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) + + THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) + + THIS.write_Define_Class_COMMENTS( @loRegClass ) + + THIS.write_METADATA( @loRegClass ) + + THIS.write_INCLUDE( @loRegClass ) + + THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ) + + + *------------------------------------------------------------------------------- + *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN + *------------------------------------------------------------------------------- + lnRecno = RECNO() + LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + SCATTER MEMO NAME loRegObj + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios + THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) + ENDSCAN + + GOTO RECORD (lnRecno) + + + *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO + DIMENSION laMethods(1,3) + lcMethods = '' + THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ) + + THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + + lnLastClass = 1 + lcMethods = '' + + *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS + lnRecno = RECNO() + LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCAN REST ; + FOR TABLABIN.PLATFORM = "WINDOWS" ; + AND NOT (EMPTY(TABLABIN.PARENT) ; + AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) ; + WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName + + SCATTER MEMO NAME loRegObj + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) + ENDSCAN + + THIS.write_ALL_OBJECT_METHODS( @lcMethods ) + + GOTO RECORD (lnRecno) + ENDSCAN + + THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) + + *-- Genero el SC2 + IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' + ENDIF + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + + ENDTRY + + RETURN lnCodError + ENDPROC +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg + #IF .F. + LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' + #ENDIF + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE write_PROGRAM_HEADER + *-- Cabecera del PRG e inicio de DEF_CLASS + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + *-------------------------------------------------------------------------------------------------------------------------------------------------------- + * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO. + * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT. + *-------------------------------------------------------------------------------------------------------------------------------------------------------- + <> Version="<>" SourceFile="<>" Generated="<>" <> (Para uso con Visual FoxPro 9.0) + * + ENDTEXT + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo ; + , loEx AS EXCEPTION ; + , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ; + , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; + , loServerData AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG' + + STORE NULL TO loProject, loReg, loServerHead, loServerData + USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN + loServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD') + + + *-- Obtengo los archivos del proyecto + loProject = CREATEOBJECT('CL_PROJECT') + SCATTER MEMO NAME loReg + loProject._HomeDir = ALLTRIM( loReg.HOMEDIR ) + loProject._ServerInfo = loReg.RESERVED2 + loProject._Debug = loReg.DEBUG + loProject._Encrypted = loReg.ENCRYPT + lcDevInfo = loReg.DEVINFO + + + *--- Ubico el programa principal + LOCATE FOR MAINPROG + + IF FOUND() + loProject._MainProg = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) + ENDIF + + + *-- Ubico el Project Hook + LOCATE FOR TYPE == 'W' + + IF FOUND() + loProject._ProjectHookLibrary = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) + loProject._ProjectHookClass = LOWER( ALLTRIM( RESERVED1, 0, ' ', CHR(0) ) ) + ENDIF + + + *-- Ubico el icono del proyecto + LOCATE FOR TYPE == 'i' + + IF FOUND() + loProject._Icon = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) ) + ENDIF + + + *-- Escaneo el proyecto + SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) + SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg + loReg.NAME = LOWER( ALLTRIM( loReg.NAME, 0, ' ', CHR(0) ) ) + loReg.COMMENTS = CHRTRAN( ALLTRIM( loReg.COMMENTS, 0, ' ', CHR(0) ), ['], ["] ) + + TRY + loProject.ADD( loReg, loReg.NAME ) + CATCH TO loEx WHEN loEx.ERRORNO = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) + *-- Saltear y no agregar el archivo duplicado / Bypass and not add the duplicated file + ENDTRY + ENDSCAN + + + THIS.write_PROGRAM_HEADER() + + + *-- Directorio de inicio + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + LPARAMETERS tcDir + + lcCurdir = SYS(5)+CURDIR() + CD ( EVL( tcDir, JUSTPATH( SYS(16) ) ) ) + + ENDTEXT + + + *-- Información del programa + loProject.parseDeviceInfo( lcDevInfo ) + C_FB2PRG_CODE = C_FB2PRG_CODE + loProject.getFormattedDeviceInfoText() + CR_LF + + + *-- Información de los Servidores definidos + IF NOT EMPTY(loProject._ServerInfo) + loServerHead.parseServerInfo( loProject._ServerInfo ) + C_FB2PRG_CODE = C_FB2PRG_CODE + loServerHead.getFormattedServerText() + CR_LF + loServerHead = NULL + ENDIF + + + *-- Generación del proyecto + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> + FOR EACH loProj IN _VFP.Projects FOXOBJECT + <>loProj.Close() + ENDFOR + + STRTOFILE( '', '__newproject.f2b' ) + BUILD PROJECT <> FROM '__newproject.f2b' + ENDTEXT + + + *-- Abro el proyecto + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + FOR EACH loProj IN _VFP.Projects FOXOBJECT + <>loProj.Close() + ENDFOR + + MODIFY PROJECT '<>' NOWAIT NOSHOW NOPROJECTHOOK + + loProject = _VFP.Projects('<>') + + WITH loProject.FILES + ENDTEXT + + + *-- Definir archivos del proyecto y metadata: CPID, Timestamp, ID, etc. + loProject.KEYSORT = 2 + + FOR EACH loReg IN loProject &&FOXOBJECT + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.ADD('<>') + ENDTEXT + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 + <><><<'&'>><<'&'>> <> + Type="<>" + Cpid="<>" + Timestamp="<>" + ID="<>" + ObjRev="<>" + <> + ENDTEXT + ENDFOR + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <><> + + <>.ITEM('__newproject.f2b').Remove() + + ENDTEXT + + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <><> + ENDTEXT + + + *-- Agrego los comentarios + loProject.KEYSORT = 2 + + FOR EACH loReg IN loProject &&FOXOBJECT + IF NOT EMPTY(loReg.COMMENTS) + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.ITEM(lcCurdir + '<>').Description = '<>' + ENDTEXT + ENDIF + ENDFOR + + + *-- Exclusiones + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <><> + + <><> + ENDTEXT + + loProject.KEYSORT = 2 + + FOR EACH loReg IN loProject &&FOXOBJECT + IF loReg.EXCLUDE + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.ITEM(lcCurdir + '<>').Exclude = .T. + ENDTEXT + ENDIF + ENDFOR + + + *-- Tipos de archivos especiales + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <><> + + <><> + ENDTEXT + + loProject.KEYSORT = 2 + + FOR EACH loReg IN loProject &&FOXOBJECT + IF INLIST( UPPER( JUSTEXT( loReg.NAME ) ), 'H','FPW' ) + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.ITEM(lcCurdir + '<>').Type = 'T' + ENDTEXT + ENDIF + ENDFOR + + + *-- ProjectHook, Debug, Encrypt, Build y cierre + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <><> + ENDWITH + + WITH loProject + <><> + ENDTEXT + + IF NOT EMPTY(loProject._MainProg) + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.SetMain(lcCurdir + '<>') + ENDTEXT + ENDIF + + IF NOT EMPTY(loProject._Icon) + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.Icon = lcCurdir + '<>' + ENDTEXT + ENDIF + + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>.Debug = <> + <>.Encrypted = <> + <>*<.CmntStyle = <> /> + <>*<.NoLogo = <> /> + <>*<.SaveCode = <> /> + <>.ProjectHookLibrary = '<>' + <>.ProjectHookClass = '<>' + <><> + ENDWITH + + ENDTEXT + + + *-- Build y cierre + * _VFP.Projects('<>').FILES('__newproject.f2b').Remove() + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + + _VFP.Projects('<>').Close() + ENDTEXT + + *-- Restauro Directorio de inicio + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *ERASE '__newproject.f2b' + CD (lcCurdir) + RETURN + ENDTEXT + + + *-- Genero el PJ2 + IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' + ENDIF + *COMPILE ( THIS.c_outputFile ) + + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + DO CASE + CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) + loEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME + ENDCASE + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + + ENDTRY + + RETURN lnCodError + ENDPROC +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg + #IF .F. + LOCAL THIS AS c_conversor_frx_a_prg OF 'FOXBIN2PRG.PRG' + #ENDIF + *_MEMBERDATA = [] ; + + [] ; + + [] + + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, loEx AS EXCEPTION, loRegCab, loRegDataEnv, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; + , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) + STORE 0 TO lnCodError, lnLastClass + STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) + STORE NULL TO loRegObj, loRegCab, loRegDataEnv + + USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0 + + GO TOP && Tiene que ser objType = 1 + SCATTER MEMO NAME loRegCab + GOTO BOTTOM && Tiene que ser objType = 25 + SCATTER MEMO NAME loRegDataEnv + + SELECT * FROM TABLABIN_0 ; + WHERE objType NOT IN (1,25) ; + ORDER BY vpos,hpos ; + INTO CURSOR TABLABIN READWRITE + + loRegObj = NULL + USE IN (SELECT("TABLABIN_0")) + + + THIS.write_PROGRAM_HEADER() + + *---------------------------------------------- + SELECT TABLABIN + GOTO TOP + THIS.write_CABECERA_REPORTE( @loRegCab ) + + SCAN ALL + SCATTER MEMO NAME loRegObj + THIS.write_DETALLE_REPORTE( @loRegObj ) + ENDSCAN + + THIS.write_DATAENVIRONMENT_REPORTE( @loRegDataEnv ) + + *-- Genero el SC2 + IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' + ENDIF + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + USE IN (SELECT("TABLABIN_0")) + + ENDTRY + + RETURN lnCodError + ENDPROC +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS CL_BASE AS CUSTOM *-- Propiedades. CLASS, From 1bf27c011c28db86536bb8163dc5af23d194cd2a Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 6 Dec 2013 01:41:59 +0100 Subject: [PATCH 02/11] Changeset: 26 Changeset: 26 --- TESTS/DATOS_READONLY/fb2p_frm_1.sct | Bin 0 -> 12295 bytes TESTS/DATOS_READONLY/fb2p_frm_1.scx | Bin 0 -> 4303 bytes TESTS/DATOS_READONLY/fb2p_frm_2.sct | Bin 0 -> 857 bytes TESTS/DATOS_READONLY/fb2p_frm_2.scx | Bin 0 -> 1469 bytes TESTS/DATOS_READONLY/fb2p_test.pjt | Bin 0 -> 4917 bytes TESTS/DATOS_READONLY/fb2p_test.pjx | Bin 0 -> 2623 bytes TESTS/DATOS_READONLY/fb2p_test.vct | Bin 0 -> 7469 bytes TESTS/DATOS_READONLY/fb2p_test.vcx | Bin 0 -> 2667 bytes ...fxu_lib_objetos_y_funciones_de_soporte.prg | 89 + TESTS/ut__foxbin2prg.prg | 1999 +++++++++++++++++ ...in2prg__c_conversor_base__GetTimeStamp.prg | 266 +++ ...in2prg__c_conversor_base__RowTimeStamp.prg | 325 +++ ...versor_base__get_SeparatedPropAndValue.prg | 127 ++ ...nversor_base__normalizarValorPropiedad.prg | 235 ++ ...prg__get_PropsAndValuesFrom_PROPERTIES.prg | 296 +++ ...a_bin__analizarAsignacion_TAG_Indicado.prg | 300 +++ ...conversor_prg_a_bin__insert_AllObjects.prg | 161 ++ foxbin2prg.prg | 13 +- ignore.conf | 7 + 19 files changed, 3814 insertions(+), 4 deletions(-) create mode 100644 TESTS/DATOS_READONLY/fb2p_frm_1.sct create mode 100644 TESTS/DATOS_READONLY/fb2p_frm_1.scx create mode 100644 TESTS/DATOS_READONLY/fb2p_frm_2.sct create mode 100644 TESTS/DATOS_READONLY/fb2p_frm_2.scx create mode 100644 TESTS/DATOS_READONLY/fb2p_test.pjt create mode 100644 TESTS/DATOS_READONLY/fb2p_test.pjx create mode 100644 TESTS/DATOS_READONLY/fb2p_test.vct create mode 100644 TESTS/DATOS_READONLY/fb2p_test.vcx create mode 100644 TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg create mode 100644 TESTS/ut__foxbin2prg.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__GetTimeStamp.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__RowTimeStamp.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado.prg create mode 100644 TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects.prg create mode 100644 ignore.conf diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct new file mode 100644 index 0000000000000000000000000000000000000000..53249836eb294239db30a28a3d1f6771edc247db GIT binary patch literal 12295 zcmeHN(U03m8K2#4yKTCG79mc8JLFb6xJoN4c9QKbJ&?B9RNd2dvn1OV9f91$nQYv8 z?VRJZTaJ_Zc;bZ@I0<+_Jn)8ukhll_2{@1tJRTC_;iQugLh!(~%lFyy*%QafhF*&( zSFgOb$K(0F@Av)Yn{Q^qSYeSdHV5akp+t$9UXtKiS~{ z7w#R~_uPHq21gWcWY&Id*Xu*Wr9vs6+Y;RX?hPZKyJ>fV9^9ABLOyp@*n2&EV;0~E z+i7@1-x5%wZ(rZq((}1(zK@URQ$o(?b5g4l*3ch#e&*9+C46U)0jWl0aS&;W3X!6! zZfmQF)<(h1=hhvY4^SuJT0=1i_yDwtB*p5-uk=p4n^+43PM!#bn$iibvg_D)2zWn~!HzR8jV^mv;rE+4-N(o%E;Z=OWgAnpv1#fB< zO>foKhEw{?d* zo)1t%!*KP57+Ag?c$#oE;b_Q)bK`B1o+%X~eJyW)pSvCD(n|DX=#lXeIuojl_;f;@ zShQ?+icIrpnPYy-l$tn3S|dF(T3N+Ea?j}dq03w7gqF1*VgsPB_dK6#fh}C2g^mcJ z9{nsf*lCTthzz&)`JQkMqMx}E@tukz(9N|-A1YNfErufLjUr4IsbXTZipGla8R0xC z#?)0Yk>8^>6*!%iECMky0v#Xpcwb~aoM_-1ie{2|~cJOhLgvIe3VgM(;Z@qAJ7 zqWDo*E-ag67y~x!0dG5^lYVKeq|k!8gqC7{0@-ngw}nGQP#;b^ZRZHMezZOeyoUX) zc=Wjm&c5k$OdLWBFLUd5L%JRmtMG8>L3F8Q(1dt&5x9^6LK%w_qyS@;4Zs(&PtiBA zFU5h><4M3|vjc;@1R%|aKhMku8(VoyWB{8a4j57%BN;9xV3FYoQj?i*5|EvS()S;o z24S-b2hiXQ+lxRRg#$opl>^Y#6b?|6(xoYnryg^FLxnqb*PcXyzsyVlD{5x~3Ccw< zZ6qR04G3UUMqemGak|U@XYl|63SpI)J_`wQK!WK={qWIgARA7IP+H3l21N{%NiYCH zt3)t>CS+ZrZem@^`Kd_t89$vo`{V zEKQ)9-utJ)^7f;1yOlIUOiG;&kX&WEVJ{+MKETF98sBF&H`l?|2j3{=v*{ z_o=06u2(|<`g$4_;$UcE`alE0Dmd~ZQUS5_$bJJ{OFX3n^tIXF&l?6 z^nN84Aiqa=0ilA7RCP{_JhtcC9qD!TereC|RB3G>n-vQuASD~_yA^L3W{a4T2}cCt z8uxEw_HzaDyErj4O5i?9b8zyo!(Ev7LApEc|GKasiONVhL2vcl?!A7PFvrmXKq7_| zkuD=xC~2T-9JCqPVd%5vx>TDamBAP)OEa0u$qDi~mT69tN%>Utk*Slw63&T2=uJIa zpfd4^>cs+!(*!1?chr0_5eZ(RvTTvXcuhgpi$#{EiKJm7`lu8OT!9EjW!VBtDS@R} zV0oHAH9$oI%CXSIljRA(mQzB@AXN5_>pS&YrMhvwUe(sSf$;0zU1-13l_y*> zj`F{-&Wmv3#1@aY;5-KBeK_g(aDgqb>x@0e7TM4L$=Jg@`@x5mzt6FM%(Dj%;ne~= z#kMQ8teo)P-K(38E4BKyMOLp~saG3U&$2NSm&3*n4-NJ@`yIn2!O;WtdI8Q? z;KX}&0Zud~4J5$mM3r7rCSJz-qF-koi--TH=H9eDjdvp;1f)j+vJ==u{2={47}y(L9(; z2vtf9cw7L|>h6mQfE1ZX^b?D6@kh~=PxSgC1Li7<45A3TKq~9Kb3tnW;}89 zNcdBWURk1dL1CXd06uX9NrC@5f=iaNIUrHUD$C={Cf-Dl6;n%Ka}O>LgTRAfJ4$pR z%cR{ANQ>eO_adZaGQmw&E--JWyv@YTs&p7P%+)B2kL0S#lHQ1dVU80jO#2*R@+nKC zbOU6{uM9m_uN-ELvL>ly;HG6rkfDRT$NLdA;r1 zzN#A$i<(Z}(HefDcf8mSP{abvOvRHNcrCHU)U)-rgzxjtsNRroC+n}xmn&FBQC!WN zL!@y3MUvvQvVl0cXerv`i}s|l=`>%MNGEVy>@Q?anocGj$$fng8pM-+4 z4yYq}l(%3P+kv@pxFbV_S)1#*v1*^d9n|<+%3M={j=d709@0#@sf62HvC%8QCDPd_ zg1g88qs_-UFR^!jbN0QT{Nl5J0(D1@ufP=K;o&KELMg>W3D592!`M9B;Pb=7!^5bM zF}QtpJVgjR0A104c;Y-1ug{K;4+3@O!C$~MR%I?+eRhw!@=Vvyu;X!`k7L7xFW=?A z{OLFT`s=v`cz+**2OJBm#vE7;sj)V@1y>7n*kBy~^QgiR|3A;>!}hQ_^x6^C3;lv+rV%aHqRc(BB|Nn!)Yj1t~(s%#xxii0d=h*!7 z?0fU)Dy2`M|G$%G>;oVJKF!M3G8fv35w74d}f+`j=YUrC<; literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx new file mode 100644 index 0000000000000000000000000000000000000000..0391e148e8bdf64665902703eff40186470ce31f GIT binary patch literal 4303 zcmeH~$!il~7{)(q!L@1?wbq5Gbpxd{nWRY(rO9M!qxmxFOk!Kbos=prxKuqT;)19M zdJ*;JL0s@sVf*` z(_4>Wt*w@+j1_XJV!v*1IO-HE(`z?jrF?ddyw+w&=|SyTB2AHR??w0zOB8Q+1;3X8^)o9RkD04;$-;57Au zM+Q5tuz0di71nND`cV;RH%J46dctXJ^@hpLk!9!}GYH)aPJ+wSYb-`=?G1}MVO_Jt zMhY|y3~-Qo;e;tpSbnw`xf?nL&Vw7&3nwh*gsq`VUks{(5-3wIoUphPX3h~K_d}0? zOW+Rm!U^kf!sNMPWFJ%q`@jk6g%g%=!gBM($Pwr$I18>*FPyNX6V}x(Mk>%W*a=3d z7fx8O6SjN47&!(V2RFe(>V*@Qa>DwoKZmFsbQl~37pQk@5o42}k@Ehi(^iZS}iZnul$DrrHHSnBz%>;VGGIp3ObuJMj*F$@N298iKoG{G} zQ>6Pe_zCm{cm*b@7fx8e9VSb|onquD^bEKPo>4EHux)mjB7LC2U!lK1%TmVHfo9A5 zoekJwvh;ukKY>nw*WerVnhErVW$iFUTDVM%?1Czw50t4FPS|!kOqSl$;4jdhU<#h_ z)>=<_O_uk_cGzKxG(>|(q2u5RcuKuy@?2pmPgLDvI;>}A)JA9@D1kEdgwxpS4Xe7v z9Epfw7om5-V=w`lEmzp^Hr23BBmNQNf8+O6_?}iXwg{{TTR|RF*CV`t)?M8Re*Ndc U!hRC1ezNe}?bAOF_S?7fH@pU4yZ`_I literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sct b/TESTS/DATOS_READONLY/fb2p_frm_2.sct new file mode 100644 index 0000000000000000000000000000000000000000..803343d210fb85749264294f9b8a56e8dcb94770 GIT binary patch literal 857 zcmZQzV2)&9U|J1# zZfaf$0bv)csv|@43xEb2@N)U2rj@Fh0~wMaQDd#2g(3104lR9R*Vz1w#-v(orx5VW2n{09w9EegFUf literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.scx b/TESTS/DATOS_READONLY/fb2p_frm_2.scx new file mode 100644 index 0000000000000000000000000000000000000000..d52cd12b2fbb9b9409deb1d151c76dde5f559abb GIT binary patch literal 1469 zcmeH{u};H442BKuP!OG15E4=t7#I*qLkk@ku8Avx;#``$P#7wNPzMGWctBQG9)Jhn z1=w-Y08P21f*B9K(|z`Twxf&P-e@!dpw+x*U$)f-KpYA^lnF8MR@k-5A&^GFD8<0f z_!_(Q1+D`^r3J+R(WZfWp-^g;Lp!`?wai=2L+SAu?Xp|s1EH|cpgjYZgY!rbW|FjT z;IT+B(isLiF!4mjnCJi%kYnZ=J&im7>KZtqK9hdlA@vQM>+_^PtM4@Dh^IueXvUQtMRNZkG94^vMZED4u|7@+$#vYVTGm8K==KmPavirbYwE~xyX}MU zf%rgs;tOD>+uCHw7=jnpo|J2R_w(KT&T$hPhVk7njQ8qV$*Kdo1CP}85$=W-@o|VcgU8L|LpvPwn`tCzCe8HQc~#H;O@#H&KA#9eztpAJCc9xwGaTw#!YLMv zXW^8bH_ww%)tsVD7x~u_p01%$15YFu#o%=#8#f3~QarxIb&v(SLdQ%{LfFsog1P1v zvPq2NlGB%1QUmhXba^I~)5Vur33JB~@`R3M-q|})57wpVtF^jlba6r-EXjIeZ8o9} zi)KWyR5E^#XRtojf9SF45RV#=rx$_^PxR(lDw)v_1deHf#pzOUS7cqm;|Y<=y7zbV zdVkU?zq9dpIKe~O=vdm8i++Pvh%!IkUQ>=5f5nuQY1M&M2UZ(ZVz>%vL{L{RACq|K|4@!og?Vja36H{ zkShI8>ZqXcJg3?A4x^m|{SKUqu3<~7Iiy*DXy5C8l4fDX`+}zGyoN`nGF->dfHzv* zYVTF1g$RU@6G~3`MAk$oExSZ-VF)@3gAwQ<1O&Rf(QlNI|Gj z-9@>5`JcS9Vts2ZH^ z0ERK^lBeygJOk$0cDgiF&RMMzUO}k~7F^6!mKVAN-vhi~e_wEx<`R?fYZjb6rNu1O z>x=7v_xbT8FDoe~02MbZc%94{6*@t2(}JgLJj2Bx#Vt_%{H&yMQ7Mhzw&0~G#6%$M z6n88*<)y0C0y|LNwcuj>NU}LDcglO9cC@)tDVyhIrVH@<;O_UYUhuIfYFxm53l8}i z)$|=6S#Ua?Ck3vC`VT@4+{8f{-xs;?ZUXG?5ikNixovR7q2J zHR?RyL3etf83f)4QItM|A4@kda0mV|JunO?lQKzrcl?!@ic29Ijd$kFd-Hzt z-kX`77lfXD86gydviJNyEkJ!gv63q;T`A=8d5m#NNhX0t>9WzR*iB;Cmgm?_M%=$> zZjh$STKh6h-Q|s#%BWJG)WD&X!hEh!T_c7Enloq1S52#C-*C(Brt6VbN-I02(eO4> znqnIpvcv}0E)#RLK}BX}W$CI}^BPcBQ>rZG^%jBp=`P%-L&<(vv1vBwskCG2%>+&+ z@ROxs#@>`t4Bk7ATV{bGX$`>yTSZIjgWTBSxR1{fHA zZL6}bH*E)(Okxq-v2f6A1F1&pU_)D$1_-()7hJY<95P^_^AU7M#|`3uLPwTf3Rwmy zujqzBTo>=k=DOyp1#HYb{Zo&9b)n;Vww19v7Imd2ODlS_L%j!n3_UzG6M1+RI(7mF zqRV-_lAbRVaW;qN(>ODqUdjy=imY-TD;JgS$celQp;Pc%s*=(D3XLvC5;_IwoIjj` z3PH+=^Q2BEI~`F1-vNtN1IXk}2dX{yLgO2hgYY5!yP2 zO7~*uejH6a_)7+YKgJmJuHuzD6l@9i5J8 z%ofp$8silx??a*WF(}_ad6iiUy$FpVW(F1s{do82FCTyY%&)-K^}Gf{ZEYX)P0l;0 z0$TiM0wL-m+TPmU-VTTeL3QtWj4bdFuu}i=@)$wigZeL6ponbv^AJWkWWn1(n|vvc z^gfREg=;?C8-_?Ge?E~f|NcXaZc_f{0k1JsKutv8w~E%_Z2*QW(&1MhGDwDHUhSH$Z0L?D^1t^w~3Hr%MI9`B>h;A6JG3udqDuntor~z}e&?;!G zp+)e3joN@^v}f`W^i%u4&W0a{H?k}ZK-)2hijROsR~RkgI_GgL(tK9egGPPCN(qaP8g%y|)hoTajLx7j$RUw9rv#=K()_z(o%Y?h@JX&{I&k zOzDT9`0%0YHYEgKGcow4i6d%*n`OtVt7YAC%`#j<>&cttIwT9cY7;8Sa@{hU{E2rQF$8UGZq%5&}-K=nhPR&I(-AuD$w)9nEMRz&WgF=dU*lhOsBCH|T zt6IC_5!X}JjSWUT2-6S7Wdx^ZDz061NZWQjy*c7+rluh~FzRg7@Mb!EHat!B&u0_6 z8(yksz^=^PVATNL9Mt&bS(^fXT+oec8JnhUAjL5~olv#8gn9<1!>`j|VZ&~W3j$Z4A-IWl@PzC{al*8aChK9;S zuUl9wA2tME?X(Jxz$)nHjeQb&YX%}E@@5b{DtM4Pt}l9$e(XRDb;XVy<*I1t@Ptv1 z#azQM8pOB;S(d=doG*k!y}*ePEKXVSHk&Ln$4M;SBPkBtcOB>Afx_A$!ako4LD&-~ z!7$ws#c6#Qc_@ORInMx$QBW|Zp)qj;V!{^8&D?)TpzRb9gHyfLz>ct6Gpj=_bV_Op zoXs&$&q7z$&NxK(s4tWfWG#h7dJ&Esz|JiW@kdXWXg1!g0^;D@h%k4l9Qgnqy!Lty;*(k88jjgE%s(y2pJT8W+Z8SeY5l?f z-59hB3{k3fEWJY0UKOL|Z}2!{TNri*VtKk_+6mkyjvXcA!>sDNBc;db8N>tR3~aA` z+WNEG;;saiW|QWJ4Fp_BVG${kLMLkAxR8+}n2R>}u6#LX6xDIB_xJI2OFw5=Z@A(k gEW*wpV2Mr;0ZaFx5NzP|nvAR8KnVc`8IV|zOV$=^b)*-|>mck8N^Zm$&ok2e@`G?$g z4NSAMDO}flDq^rw3U~GEj>agD%GOhONAsu?a7@@n8u#1|^#Y6fgemDfphiHk0qjZ& zXEfMy&9Fk&OyPJx!!@J#YlS?y1Fju15W=)Hf19ct!on((-h_D6r(U0$cz0%D(Ik!_ zj34qOUIFh;;Z^Y76pp=NH>dC#_;3oZgO8^02Kc=c-b4AA=Eio>$n`CS=zmi*T*mMv z6pe?Yy}e@6X4;~7sPf+IOe4QG0)OVl?CPvJF2Xy)|AVq zqYwrB&>3R#?UR-1j?oTyW%V+wUJ`-d zqF2S(n2>B4^J@~Dlb$nI_N|ch{U@(WR;Fzl)plH2MSa5mXu&=q(F-wtJ|XD?@SoE4 zza@O4D7cNutM5APYJ5S|%3TC@p=(eHItlHbid|>#rDWR;Mc+^6A#e*?hmJxy=;Ddl zlf)iUvg9_dBJcs|$8kcwKp&wY^tYBwrgxOh{{ETS2waCQKr7H9^jbQHSrTWyjZ7pt z_b] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + cOldPath = '' + cPath = 'FOXUNIT;TESTS;TESTS\DATOS_TEST' + cPathDatosReadOnly = 'TESTS\DATOS_READONLY' + cPathDatosTest = 'TESTS\DATOS_TEST' + cSetDate = '' + + + *---------------------------------------------------------------------------------------- + PROCEDURE INIT + THIS.cSetDate = SET("Date") + + SET DATE TO YMD + SET HOURS TO 24 + SET SAFETY OFF + SET TABLEPROMPT OFF + SET TALK OFF + + THIS.cOldPath = SET("Path") + SET PATH TO (THIS.cPath) + ENDPROC + + + *---------------------------------------------------------------------------------------- + PROCEDURE DESTROY + SET PATH TO (THIS.cOldPath) + SET DATE (THIS.cSetDate) + ENDPROC + + + *---------------------------------------------------------------------------------------- + PROCEDURE SETUP_COMUN + + ENDPROC + + + *---------------------------------------------------------------------------------------- + PROCEDURE TEARDOWN_COMUN + + ENDPROC + + + *---------------------------------------------------------------------------------------- + PROCEDURE copiarArchivosParaTest + LPARAMETERS tcFileSpec + + COPY FILE (FORCEPATH( tcFileSpec, THIS.cPathDatosReadOnly )) TO (FORCEPATH( tcFileSpec, THIS.cPathDatosTest )) + ENDPROC + + + *---------------------------------------------------------------------------------------- + FUNCTION mejorarPresentacionCaracteresEspeciales + LPARAMETERS tcText + RETURN STRTRAN( ; + STRTRAN( ; + STRTRAN( ; + STRTRAN( ; + STRTRAN( ; + STRTRAN( tcText, CHR(13)+CHR(10), '' ) ; + , CHR(13), '' ) ; + , CHR(10), '' ) ; + , CHR(9), '' ) ; + , ' ', '·' ) ; + , '', ''+CHR(13)+CHR(10) ) + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg new file mode 100644 index 0000000..a1e009a --- /dev/null +++ b/TESTS/ut__foxbin2prg.prg @@ -0,0 +1,1999 @@ +DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg OF ut__foxbin2prg.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_base", "FOXBIN2PRG.PRG") + *loObj = THIS.icObj + *loObj.l_Test = .F. + + 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 ; + , tc_InputFile, taPropsAndValues, tnPropsAndValues_Count ; + , taPropsAndValues_Esperado, tnPropsAndValues_Count_Esperado, tcParent, tcClass, tcObjName + + #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_base 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 + *tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) + + + *-- Visualización de valores + THIS.messageout( LOWER(PROGRAM(PROGRAM(-1)-1)) ) + THIS.messageout( '' ) + THIS.messageout( 'Propiedades esperadas para ' + tcParent + '.' + tcObjName + ' (' + tcClass + ')' + ': ' ) + THIS.messageout( REPLICATE('-',80) ) + FOR I = 1 TO tnPropsAndValues_Count_Esperado + THIS.messageout( 'PropName = ' + TRANSFORM(taPropsAndValues_Esperado(I,1)) ) + ENDFOR + + + *-- Evaluación de valores + THIS.assertequals( tnPropsAndValues_Count_Esperado, tnPropsAndValues_Count, "Cantidad de propiedades" ) + FOR I = 1 TO tnPropsAndValues_Count_Esperado + THIS.asserttrue( ASCAN( taPropsAndValues, taPropsAndValues_Esperado(I,1), 1, -1, 1, 0+2+4) > 0, ' Comprobación de que existe la propiedad "' + TRANSFORM(taPropsAndValues_Esperado(I,1)) + '"' ) + ENDFOR + + 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_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__dataenvironment + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('dataenvironment') + lcParent = '' + lcObjName = 'Dataenvironment' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Top = 404 + Left = 11 + Width = 520 + Height = 200 + DataSource = .NULL. + Name = "Dataenvironment" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__dataenvironment__Cursor1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('cursor') + lcParent = 'Dataenvironment' + lcObjName = 'Cursor1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Top = 20 + Left = 10 + Height = 98 + Width = 102 + Alias = "encuestas" + CursorSource = encuestas.dbf + Name = "Cursor1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('cl_form') + lcParent = '' + lcObjName = 'Cl_form1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Top = 0 + Left = 0 + Height = 345 + Width = 644 + DoCreate = .T. + Name = "Cl_form1" + Cl_optiongroup1.Option1.Value = 0 + Cl_optiongroup1.Option1.Left = 8 + Cl_optiongroup1.Option1.Top = 8 + Cl_optiongroup1.Option1.Name = "Option1" + Cl_optiongroup1.Option2.Value = 1 + Cl_optiongroup1.Option2.Left = 124 + Cl_optiongroup1.Option2.Top = 8 + Cl_optiongroup1.Option2.Name = "Option2" + Cl_optiongroup1.Value = 2 + Cl_optiongroup1.ZOrderSet = 1 + Cl_optiongroup1.propiedad_de_clase_sin_valor = Valor reescrito en el form! + Cl_optiongroup1.Name = "Cl_optiongroup1" + Cl_commandgroup1.Command1.Top = 4 + Cl_commandgroup1.Command1.Left = 8 + Cl_commandgroup1.Command1.Name = "Command1" + Cl_commandgroup1.Command2.Top = 4 + Cl_commandgroup1.Command2.Left = 124 + Cl_commandgroup1.Command2.Name = "Command2" + Cl_commandgroup1.ZOrderSet = 2 + Cl_commandgroup1.una_prop_cmgroup = Ahora tiene valor + Cl_commandgroup1.Name = "Cl_commandgroup1" + Cl_imagen1.Left = 268 + Cl_imagen1.Top = 292 + Cl_imagen1.ZOrderSet = 3 + Cl_imagen1.Name = "Cl_imagen1" + Cl_imagen2.Left = 316 + Cl_imagen2.Top = 292 + Cl_imagen2.ZOrderSet = 4 + Cl_imagen2.Name = "Cl_imagen2" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__shape1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('shape') + lcParent = 'Cl_form1' + lcObjName = 'Shape1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Top = 284 + Left = 264 + Height = 49 + Width = 101 + BorderStyle = 2 + BorderWidth = 1 + Curvature = 16 + SpecialEffect = 0 + ZOrderSet = 0 + Name = "Shape1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__txtPromotor + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1' + lcObjName = 'txtPromotor' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Comment = "" + ControlSource = "encuestas.promotor" + Height = 23 + Left = 328 + MaxLength = 20 + ReadOnly = .T. + TabIndex = 4 + Top = 164 + Width = 149 + ForeColor = 0,0,255 + DisabledForeColor = 0,0,160 + ZOrderSet = 5 + Name = "txtPromotor" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblPromotor + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('label') + lcParent = 'Cl_form1' + lcObjName = 'lblPromotor' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + AutoSize = .T. + WordWrap = .T. + BackStyle = 0 + Caption = "Promotor" + Left = 271 + Top = 164 + Width = 51 + TabIndex = 3 + ZOrderSet = 6 + Name = "lblPromotor" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__txtIdenc + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1' + lcObjName = 'txtIdenc' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Comment = "" + ControlSource = "encuestas.idenc" + Height = 23 + Left = 328 + MaxLength = 20 + ReadOnly = .T. + TabIndex = 6 + Top = 192 + Width = 149 + ForeColor = 0,0,255 + DisabledForeColor = 0,0,160 + ZOrderSet = 7 + Name = "txtIdenc" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblIdenc + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('label') + lcParent = 'Cl_form1' + lcObjName = 'lblIdenc' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + AutoSize = .T. + WordWrap = .T. + BackStyle = 0 + Caption = "Idenc" + Left = 292 + Top = 192 + Width = 30 + TabIndex = 5 + ZOrderSet = 8 + Name = "lblIdenc" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__txtCalific + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1' + lcObjName = 'txtCalific' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Comment = "" + ControlSource = "encuestas.calific" + Height = 23 + Left = 532 + MaxLength = 2 + ReadOnly = .T. + TabIndex = 8 + Top = 164 + Width = 38 + ForeColor = 0,0,255 + DisabledForeColor = 0,0,160 + ZOrderSet = 9 + Name = "txtCalific" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblCalific + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('label') + lcParent = 'Cl_form1' + lcObjName = 'lblCalific' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + AutoSize = .T. + WordWrap = .T. + BackStyle = 0 + Caption = "Calific" + Left = 491 + Top = 164 + Width = 34 + TabIndex = 7 + ZOrderSet = 10 + Name = "lblCalific" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblCalific + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1' + lcObjName = 'txtFecha' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Comment = "" + ControlSource = "encuestas.fecha" + Height = 23 + Left = 532 + ReadOnly = .T. + TabIndex = 10 + Top = 192 + Width = 73 + ForeColor = 0,0,255 + DisabledForeColor = 0,0,160 + ZOrderSet = 11 + Name = "txtFecha" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblFecha + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('label') + lcParent = 'Cl_form1' + lcObjName = 'lblFecha' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + AutoSize = .T. + WordWrap = .T. + BackStyle = 0 + Caption = "Fecha" + Left = 491 + Top = 192 + Width = 34 + TabIndex = 9 + ZOrderSet = 12 + Name = "lblFecha" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__txtResultado + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1' + lcObjName = 'txtResultado' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Comment = "" + ControlSource = "encuestas.resultado" + Height = 23 + Left = 532 + MaxLength = 10 + ReadOnly = .T. + TabIndex = 12 + Top = 220 + Width = 81 + ForeColor = 0,0,255 + DisabledForeColor = 0,0,160 + ZOrderSet = 13 + Name = "txtResultado" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__lblResultado + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('label') + lcParent = 'Cl_form1' + lcObjName = 'lblResultado' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + AutoSize = .T. + WordWrap = .T. + BackStyle = 0 + Caption = "Resultado" + Left = 472 + Top = 220 + Width = 57 + TabIndex = 11 + ZOrderSet = 14 + Name = "lblResultado" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1__grdEncuestas + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('grid') + lcParent = 'Cl_form1' + lcObjName = 'grdEncuestas' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + ColumnCount = 5 + DeleteMark = .F. + Height = 140 + Left = 268 + Panel = 1 + ReadOnly = .T. + RecordSource = "encuestas" + RecordSourceType = 1 + Top = 12 + Width = 320 + ZOrderSet = 15 + Name = "grdEncuestas" + Column1.ControlSource = "encuestas.promotor" + Column1.Width = 58 + Column1.ReadOnly = .T. + Column1.Name = "Column1" + Column2.ControlSource = "encuestas.idenc" + Column2.Width = 46 + Column2.ReadOnly = .T. + Column2.Name = "Column2" + Column3.ControlSource = "encuestas.calific" + Column3.Width = 41 + Column3.ReadOnly = .T. + Column3.Name = "Column3" + Column4.ControlSource = "encuestas.fecha" + Column4.Width = 69 + Column4.ReadOnly = .T. + Column4.Name = "Column4" + Column5.ControlSource = "encuestas.resultado" + Column5.Width = 58 + Column5.ReadOnly = .T. + Column5.Name = "Column5" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column1__Header1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('header') + lcParent = 'Cl_form1.grdEncuestas.Column1' + lcObjName = 'Header1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Caption = "promotor" + Name = "Header1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column1__Text1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1.grdEncuestas.Column1' + lcObjName = 'Text1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + BorderStyle = 0 + Margin = 0 + ReadOnly = .T. + ForeColor = 0,0,0 + BackColor = 255,255,255 + Name = "Text1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column2__Header1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('header') + lcParent = 'Cl_form1.grdEncuestas.Column2' + lcObjName = 'Header1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Caption = "idenc" + Name = "Header1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column2__Text1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1.grdEncuestas.Column2' + lcObjName = 'Text1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + BorderStyle = 0 + Margin = 0 + ReadOnly = .T. + ForeColor = 0,0,0 + BackColor = 255,255,255 + Name = "Text1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column3__Header1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('header') + lcParent = 'Cl_form1.grdEncuestas.Column3' + lcObjName = 'Header1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Caption = "calific" + Name = "Header1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column3__Text1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1.grdEncuestas.Column3' + lcObjName = 'Text1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + BorderStyle = 0 + Margin = 0 + ReadOnly = .T. + ForeColor = 0,0,0 + BackColor = 255,255,255 + Name = "Text1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column4__Header1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('header') + lcParent = 'Cl_form1.grdEncuestas.Column4' + lcObjName = 'Header1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Caption = "fecha" + Name = "Header1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column4__Text1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1.grdEncuestas.Column4' + lcObjName = 'Text1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + BorderStyle = 0 + Margin = 0 + ReadOnly = .T. + ForeColor = 0,0,0 + BackColor = 255,255,255 + Name = "Text1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column5__Header1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('header') + lcParent = 'Cl_form1.grdEncuestas.Column5' + lcObjName = 'Header1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + Caption = "resultado" + Name = "Header1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1_grdEncuestas_Column5__Text1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('textbox') + lcParent = 'Cl_form1.grdEncuestas.Column5' + lcObjName = 'Text1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + BorderStyle = 0 + Margin = 0 + ReadOnly = .T. + ForeColor = 0,0,0 + BackColor = 255,255,255 + Name = "Text1" + ENDTEXT + + lnPropsAndValues_Count_Esperado = ALINES( laProps, lcMemo, 1+4 ) + DIMENSION laPropsAndValues_Esperado(lnPropsAndValues_Count_Esperado,2) + + FOR I = 1 TO lnPropsAndValues_Count_Esperado + loObj.get_SeparatedPropAndValue( laProps(I), @lcProp, @lcValue ) + laPropsAndValues_Esperado(I,1) = lcProp + laPropsAndValues_Esperado(I,2) = lcValue + ENDFOR + + + *-- TEST + DO FOXBIN2PRG.prg WITH lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + DO FOXBIN2PRG.prg WITH FORCEEXT(lc_InputFile,'VC2'), lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress + + IF FILE(lc_InputFile) + USE (lc_InputFile) SHARED NOUPDATE ALIAS TABLABIN + ELSE + ERROR 'No se encontró el archivo "' + lc_InputFile + '"' + ENDIF + + SELECT Properties FROM TABLABIN WHERE CLASS==lcClass AND PARENT==lcParent AND objName==lcObjName INTO ARRAY laDatos + USE IN (SELECT("TABLABIN")) + loObj.get_PropsAndValuesFrom_PROPERTIES( laDatos(1), 0, @laPropsAndValues, @lnPropsAndValues_Count, '' ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_InputFile, @laPropsAndValues, lnPropsAndValues_Count ; + , @laPropsAndValues_Esperado, lnPropsAndValues_Count_Esperado, lcParent, lcClass, lcObjName ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_SCX_YValidarElCampo_PROPERTIES_ParaElObjeto__Cl_form1___Commandgroup1 + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lc_InputFile, lcType_na, lcTextName_na, llGenText_na, lcDontShowErrors, lcDebug, lcDontShowProgress ; + , laPropsAndValues(1,2), lnPropsAndValues_Count, laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado ; + , laDatos(1,1), lcParent, lcClass, lcObjName, lcMemo, laProps(1), lcProp, lcValue ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loEx = NULL + oFXU_LIB.copiarArchivosParaTest( 'FB2P_FRM_1.SC?' ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lc_InputFile = 'TESTS\DATOS_TEST\fb2p_frm_1.scx' + lcDontShowErrors = '1' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcClass = LOWER('commandgroup') + lcParent = 'Cl_form1' + lcObjName = 'Commandgroup1' + + TEXT TO lcMemo NOSHOW FLAGS 1+2 PRETEXT 1+2+4 + ButtonCount = 2 + Value = 1 + Height = 76 + Left = 8 + Top = 172 + Width = 244 + BackColor = 255,128,255 + ZOrderSet = 16 + Name = "Commandgroup1" + Command1.Top = 8 + Command1.Left = 12 + Command1.Height = 56 + Command1.Width = 100 + Command1.Picture = bmps\carpetaabierta.bmp + Command1.Caption = "\' + #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_base", "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, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_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_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + IF ISNULL(toEx) + + *-- Visualización de valores + THIS.messageout( ' TimeStamp (T) = ' + TRANSFORM(ltTimeStamp) ) + THIS.messageout( ' TimeStamp (N) = ' + TRANSFORM(lnTimeStamp) ) + + + *-- Evaluación de valores + THIS.assertequals( ltTimeStamp_Esperado, ltTimeStamp, "[Fecha y Hora]" ) + + 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_DevolverLaFechaHora_2013_12_01_08_02_00_ParaElValor_1132544064 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544064 && Corresponde a {^2013/12/01 8:02:00} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:02:00}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_02_01_ParaElValor_1132544065 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544065 && Corresponde a {^2013/12/01 8:02:01} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:02:01}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_02_30_ParaElValor_1132544094 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544094 && Corresponde a {^2013/12/01 8:02:30} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:02:30}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_02_31_ParaElValor_1132544095 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544095 && Corresponde a {^2013/12/01 8:02:31} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:02:31}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_03_00_ParaElValor_1132544096 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544096 && Corresponde a {^2013/12/01 8:02:32} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:03:00}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_03_01_ParaElValor_1132544097 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544097 && Corresponde a {^2013/12/01 8:02:33} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:03:01}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverLaFechaHora_2013_12_01_08_03_27_ParaElValor_1132544123__HoraReal__08_02_59 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lnTimeStamp = 1132544123 && Corresponde a {^2013/12/01 8:02:59} + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + ltTimeStamp_Esperado = TTOC({^2013/12/01 8:03:27}) + + *-- TEST + ltTimeStamp = loObj.gettimestamp( lnTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__RowTimeStamp.prg b/TESTS/ut__foxbin2prg__c_conversor_base__RowTimeStamp.prg new file mode 100644 index 0000000..f4732f0 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_base__RowTimeStamp.prg @@ -0,0 +1,325 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_base__RowTimeStamp AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_base__RowTimeStamp OF ut__foxbin2prg__c_conversor_base__RowTimeStamp.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_base", "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, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_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_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + IF ISNULL(toEx) + + *-- Visualización de valores + THIS.messageout( ' TimeStamp (T) = ' + TRANSFORM(ltTimeStamp) ) + THIS.messageout( ' TimeStamp (N) = ' + TRANSFORM(lnTimeStamp) ) + + + *-- Evaluación de valores + THIS.assertequals( lnTimeStamp_Esperado, lnTimeStamp, "[Valor de TimeStamp]" ) + + 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_DevolverElValor_1132544064_ParaLaFechaHora_2013_12_01_08_02_00 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:00} && Le corresponde el numero 1132544064 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544064 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544065_ParaLaFechaHora_2013_12_01_08_02_01 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:01} && Le corresponde el numero 1132544065 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544065 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544095_ParaLaFechaHora_2013_12_01_08_02_31 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:31} && Le corresponde el numero 1132544095 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544095 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544096_ParaLaFechaHora_2013_12_01_08_02_32 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:32} && Le corresponde el numero 1132544096 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544096 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544097_ParaLaFechaHora_2013_12_01_08_02_33 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:33} && Le corresponde el numero 1132544097 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544097 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp-1 ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544123_ParaLaFechaHora_2013_12_01_08_02_59 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:02:59} && Le corresponde el numero 1132544123 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544123 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544096_ParaLaFechaHora_2013_12_01_08_03_00 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:03:00} && Le corresponde el numero 1132544096 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544096 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544097_ParaLaFechaHora_2013_12_01_08_03_01 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:03:01} && Le corresponde el numero 1132544097 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544097 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp-1 ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_DevolverElValor_1132544123_ParaLaFechaHora_2013_12_01_08_03_27 + LOCAL lnCodError, lnCodError_Esperado ; + , ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + ltTimeStamp = {^2013/12/01 8:03:27} && Le corresponde el numero 1132544123 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lnTimeStamp_Esperado = 1132544123 + *lnTimeStamp_Esperado = loObj.rowtimestamp( ltTimeStamp ) + + *-- TEST + lnTimeStamp = loObj.rowtimestamp( ltTimeStamp ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, ltTimeStamp, ltTimeStamp_Esperado, lnTimeStamp, lnTimeStamp_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue.prg b/TESTS/ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue.prg new file mode 100644 index 0000000..69798d8 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue.prg @@ -0,0 +1,127 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue OF ut__foxbin2prg__c_conversor_base__get_SeparatedPropAndValue.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_base", "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 ; + , tcPropName, tcPropValue, tcComentario, tcPropName_Esperado, tcPropValue_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_base 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 + tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) + tcPropValue_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue_Esperado ) + + + *-- Visualización de valores + THIS.messageout( ' PropName = ' + TRANSFORM(tcPropName) ) + THIS.messageout( ' PropValue = ' + TRANSFORM(tcPropValue) ) + + + *-- Evaluación de valores + THIS.assertequals( tcPropName_Esperado, tcPropName, "PropsAndValues_Count" ) + THIS.assertequals( tcPropValue_Esperado, tcPropValue, "PropsAndValues_Count" ) + + 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_DevolverSeparados_Prop_y_Value + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , laProps(1,2) ,lcPropName, lcPropValue, lcComentario, lcPropName_Esperado, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = '_memberdata' + lcPropValue = '' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + laProps( 1,1) = 'prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + laProps( 1,2) = '' + lcPropName_Esperado = 'prop_especial_cr' + lcPropValue_Esperado = 'Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + + *-- TEST + loObj.get_SeparatedPropAndValue( laProps(1,1), @lcPropName, @lcPropValue ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropName_Esperado, @lcPropValue_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad.prg b/TESTS/ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad.prg new file mode 100644 index 0000000..774d812 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad.prg @@ -0,0 +1,235 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad OF ut__foxbin2prg__c_conversor_base__normalizarValorPropiedad.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_base", "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 ; + , tcPropName, tcPropValue, tcComentario, tcPropValue_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_base 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 + tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) + tcPropValue_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue_Esperado ) + + + *-- Visualización de valores + THIS.messageout( ' PropName = ' + TRANSFORM(tcPropName) ) + THIS.messageout( ' PropValue = ' + TRANSFORM(tcPropValue) ) + + + *-- Evaluación de valores + THIS.assertequals( tcPropValue_Esperado, tcPropValue, "PropsAndValues_Count" ) + + 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_normalizarLaPropiedad_memberdata_separandoLosMiembrosPorLinea_ConLosTags_VFPData_PorFuera + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, lcComentario, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = '_memberdata' + lcPropValue = '' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + TEXT TO lcPropValue_Esperado TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + + <><> + <><> + ENDTEXT + + *-- TEST + loObj.normalizarValorPropiedad( @lcPropName, @lcPropValue, @lcComentario ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_normalizarUnaPropiedadCon_CR__AgregandoLosTags_fb2p_value_PorFueraYCodificandoLos_CR + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, lcComentario, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = 'unaPropiedadCon_CR' + lcPropValue = C_FB2P_VALUE_I + 'valor 1' + C_CR + 'valor 2' + C_CR + 'valor 3' + C_FB2P_VALUE_F + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcPropValue_Esperado = C_FB2P_VALUE_I + 'valor 1 valor 2 valor 3' + C_FB2P_VALUE_F + + *-- TEST + loObj.normalizarValorPropiedad( @lcPropName, @lcPropValue, @lcComentario ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_normalizarUnaPropiedadCon_CRLF__AgregandoLosTags_fb2p_value_PorFueraYSinCodificarLos_CRLF + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, lcComentario, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = 'unaPropiedadCon_CR' + lcPropValue = C_FB2P_VALUE_I + 'valor 1' + CR_LF + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcPropValue_Esperado = C_FB2P_VALUE_I + 'valor 1' + CR_LF + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- TEST + loObj.normalizarValorPropiedad( @lcPropName, @lcPropValue, @lcComentario ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_normalizarUnaPropiedadCon_CR_y_CRLF_mixta__AgregandoLosTags_fb2p_value_PorFueraCodificandoLos_CR_yMantneiendoLos_CRLF + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, lcComentario, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = 'unaPropiedadCon_CR' + lcPropValue = C_FB2P_VALUE_I + 'valor 1' + C_CR + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcPropValue_Esperado = C_FB2P_VALUE_I + 'valor 1' + ' ' + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- TEST + loObj.normalizarValorPropiedad( @lcPropName, @lcPropValue, @lcComentario ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_normalizarUnaPropiedadCon_LF_y_CRLF_mixta__AgregandoLosTags_fb2p_value_PorFueraCodificandoLos_LF_yMantneiendoLos_CRLF + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, lcComentario, lcPropValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcPropName = 'unaPropiedadCon_CR' + lcPropValue = C_FB2P_VALUE_I + 'valor 1' + C_LF + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcPropValue_Esperado = C_FB2P_VALUE_I + 'valor 1' + ' ' + 'valor 2' + CR_LF + 'valor 3' + C_FB2P_VALUE_F + + *-- TEST + loObj.normalizarValorPropiedad( @lcPropName, @lcPropValue, @lcComentario ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @lcComentario, @lcPropValue_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES.prg b/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES.prg new file mode 100644 index 0000000..46841c3 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES.prg @@ -0,0 +1,296 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES OF ut__foxbin2prg__c_conversor_bin_a_prg__get_PropsAndValuesFrom_PROPERTIES.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, tnSort, taPropsAndValues, tnPropsAndValues_Count, tcSortedMemo ; + , taPropsAndValues_Esperado, tnPropsAndValues_Count_Esperado, 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 + tcSortedMemo = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcSortedMemo ) + tcMemo_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcMemo_Esperado ) + FOR I = 1 TO tnPropsAndValues_Count + taPropsAndValues(I,2) = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( TRANSFORM(taPropsAndValues(I,2)) ) + ENDFOR + FOR I = 1 TO tnPropsAndValues_Count_Esperado + taPropsAndValues_Esperado(I,2) = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( TRANSFORM(taPropsAndValues_Esperado(I,2)) ) + ENDFOR + + + *-- Visualización de valores + THIS.messageout( ' Sort = ' + TRANSFORM(tnSort) ) + THIS.messageout( REPLICATE('-',50) ) + FOR I = 1 TO tnPropsAndValues_Count + THIS.messageout( "taPropsAndValues(" + STR(I,3) + '): ' ; + + TRANSFORM(taPropsAndValues(I,1)) + ' = ' + TRANSFORM(taPropsAndValues(I,2)) + '' ) + ENDFOR + THIS.messageout( REPLICATE('-',50) ) + FOR I = 1 TO tnPropsAndValues_Count_Esperado + THIS.messageout( "taPropsAndValues_Esp(" + STR(I,3) + '): ' ; + + TRANSFORM(taPropsAndValues_Esperado(I,1)) + ' = ' + TRANSFORM(taPropsAndValues_Esperado(I,2)) + '' ) + ENDFOR + THIS.messageout( REPLICATE('-',50) ) + THIS.messageout( 'Sorted Memo: [' + tcSortedMemo + ']' ) + + + *-- Evaluación de valores + THIS.assertequals( tnPropsAndValues_Count_Esperado, tnPropsAndValues_Count, "PropsAndValues_Count" ) + + FOR I = 1 TO MIN(tnPropsAndValues_Count, tnPropsAndValues_Count_Esperado) + THIS.assertequals( taPropsAndValues_Esperado(I,1), taPropsAndValues(I,1), "PropAndValue" ) + ENDFOR + + THIS.assertequals( tcMemo_Esperado, tcSortedMemo, "Memo" ) + + 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_PROPERTIES_yDevolverUnArrayConLasPropsOrdenadas_PrimeroLasNormalesYLuegoLasDeObjeto_Sorted + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lnSort, laPropsAndValues(1,2), lnPropsAndValues_Count, lcMemo, lcSortedMemo ; + , laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado, 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 + Height = 2.73 + Width = 27.40 + prop1 = .F. + _memberdata = + prop_especial_cr = <> 57Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3 + prop_especial_crlf = <> 35El valor 1 + El valor 2 + Y el 3! + <> + Name = "c1" + Page2.Caption = "Page2" + Page1.Name = "Page1" + ENDTEXT + + lcMemo = STRTRAN( STRTRAN( lcMemo, ' ', CHR(13) ), ' ', CHR(10) ) + lnSort = 1 + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + DIMENSION laPropsAndValues_Esperado(9,2) + laPropsAndValues_Esperado = '' + laPropsAndValues_Esperado( 1,1) = 'Height' + laPropsAndValues_Esperado( 1,2) = '2.73' + laPropsAndValues_Esperado( 2,1) = 'Name' + laPropsAndValues_Esperado( 2,2) = '"c1"' + laPropsAndValues_Esperado( 3,1) = 'prop1' + laPropsAndValues_Esperado( 3,2) = '.F.' + laPropsAndValues_Esperado( 4,1) = 'prop_especial_cr' + laPropsAndValues_Esperado( 4,2) = 'Este es el valor 1' + CHR(13) + 'Este el 2' + CHR(13) + 'Y este bajo Shift_Enter el 3' + laPropsAndValues_Esperado( 5,1) = 'prop_especial_crlf' + laPropsAndValues_Esperado( 5,2) = 'El valor 1' + CHR(13) + CHR(10) ; + + 'El valor 2' + CHR(13) + CHR(10) + 'Y el 3!' + CHR(13) + CHR(10) + SPACE(2) + laPropsAndValues_Esperado( 6,1) = 'Width' + laPropsAndValues_Esperado( 6,2) = '27.40' + laPropsAndValues_Esperado( 7,1) = '_memberdata' + laPropsAndValues_Esperado( 7,2) = '' + laPropsAndValues_Esperado( 8,1) = 'Page1.Name' + laPropsAndValues_Esperado( 8,2) = '"Page1"' + laPropsAndValues_Esperado( 9,1) = 'Page2.Caption' + laPropsAndValues_Esperado( 9,2) = '"Page2"' + lnPropsAndValues_Count_Esperado = 9 + + TEXT TO lcMemo_Esperado TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + Height = 2.73 + Name = "c1" + prop1 = .F. + prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3 + prop_especial_crlf = + El valor 1 + El valor 2 + Y el 3! + <> + + Width = 27.40 + _memberdata = + <<>> + <<>> + Page1.Name = "Page1" + Page2.Caption = "Page2" + + ENDTEXT + + + *-- TEST + loObj.get_PropsAndValuesFrom_PROPERTIES( @lcMemo, lnSort, @laPropsAndValues, @lnPropsAndValues_Count, @lcSortedMemo ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcMemo, lnSort, @laPropsAndValues, @lnPropsAndValues_Count, @lcSortedMemo ; + , @laPropsAndValues_Esperado, @lnPropsAndValues_Count_Esperado, @lcMemo_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_evaluarUnMemo_PROPERTIES_yDevolverUnArrayConLasPropsSinOrdenar_PrimeroLasNormalesYLuegoLasDeObjeto + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lnSort, laPropsAndValues(1,2), lnPropsAndValues_Count, lcMemo, lcSortedMemo ; + , laPropsAndValues_Esperado(1,2), lnPropsAndValues_Count_Esperado, 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 + Height = 2.73 + Width = 27.40 + prop1 = .F. + _memberdata = + prop_especial_cr = <> 57Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3 + prop_especial_crlf = <> 35El valor 1 + El valor 2 + Y el 3! + <> + Name = "c1" + Page2.Caption = "Page2" + Page1.Name = "Page1" + ENDTEXT + + lcMemo = STRTRAN( STRTRAN( lcMemo, ' ', CHR(13) ), ' ', CHR(10) ) + lnSort = 0 + + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + DIMENSION laPropsAndValues_Esperado(9,2) + laPropsAndValues_Esperado = '' + laPropsAndValues_Esperado( 1,1) = 'Height' + laPropsAndValues_Esperado( 1,2) = '2.73' + laPropsAndValues_Esperado( 2,1) = 'Width' + laPropsAndValues_Esperado( 2,2) = '27.40' + laPropsAndValues_Esperado( 3,1) = 'prop1' + laPropsAndValues_Esperado( 3,2) = '.F.' + laPropsAndValues_Esperado( 4,1) = '_memberdata' + laPropsAndValues_Esperado( 4,2) = '' + laPropsAndValues_Esperado( 5,1) = 'prop_especial_cr' + laPropsAndValues_Esperado( 5,2) = 'Este es el valor 1' + C_CR + 'Este el 2' + C_LF + 'Y este bajo Shift_Enter el 3' + laPropsAndValues_Esperado( 6,1) = 'prop_especial_crlf' + laPropsAndValues_Esperado( 6,2) = 'El valor 1' + CR_LF ; + + 'El valor 2' + CR_LF + 'Y el 3!' + CR_LF + SPACE(2) + laPropsAndValues_Esperado( 7,1) = 'Name' + laPropsAndValues_Esperado( 7,2) = '"c1"' + laPropsAndValues_Esperado( 8,1) = 'Page2.Caption' + laPropsAndValues_Esperado( 8,2) = '"Page2"' + laPropsAndValues_Esperado( 9,1) = 'Page1.Name' + laPropsAndValues_Esperado( 9,2) = '"Page1"' + lnPropsAndValues_Count_Esperado = 9 + + TEXT TO lcMemo_Esperado TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + Height = 2.73 + Width = 27.40 + prop1 = .F. + _memberdata = + <<>> + <<>> + prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3 + prop_especial_crlf = + El valor 1 + El valor 2 + Y el 3! + <> + + Name = "c1" + Page2.Caption = "Page2" + Page1.Name = "Page1" + + ENDTEXT + + + *-- TEST + loObj.get_PropsAndValuesFrom_PROPERTIES( @lcMemo, lnSort, @laPropsAndValues, @lnPropsAndValues_Count, @lcSortedMemo ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcMemo, lnSort, @laPropsAndValues, @lnPropsAndValues_Count, @lcSortedMemo ; + , @laPropsAndValues_Esperado, @lnPropsAndValues_Count_Esperado, @lcMemo_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado.prg b/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado.prg new file mode 100644 index 0000000..e234e3c --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado.prg @@ -0,0 +1,300 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado OF ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indicado.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_prg_a_bin", "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 ; + , tcPropName, tcPropValue, taProps, tnProp_Count ; + , I, tcTag_I, tcTag_F, tnLen_lcTag_I, tnLen_lcTag_F, tcMemo, tcValue_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_prg_a_bin 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 + tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue ) + tcValue_Esperado = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcValue_Esperado ) + + + *-- Visualización de valores + THIS.messageout( ' Value = ' + TRANSFORM(tcPropValue) ) + THIS.messageout( ' Value_Esperado = ' + TRANSFORM(tcValue_Esperado) ) + + + *-- Evaluación de valores + THIS.assertequals( tcValue_Esperado, tcPropValue, "Valor devuelto" ) + + 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_analizarAsignacion_TAG__fb2p_value__EnUnaAsignacion_InLine + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, laProps(1,2), lnProp_Count, I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, lcMemo ; + , lcValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcTag_I = '' + lcTag_F = '' + lnLen_lcTag_I = LEN(lcTag_I) + lnLen_lcTag_F = LEN(lcTag_F) + lnProp_Count = 17 + DIMENSION laProps(lnProp_Count,2) + laProps = '' + laProps( 1,1) = 'Height = 2.73' + laProps( 1,2) = '' + laProps( 2,1) = 'Name = "c1"' + laProps( 2,2) = '' + laProps( 3,1) = 'prop1 = .F.' + laProps( 3,2) = 'Mi prop1' + laProps( 4,1) = 'prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + laProps( 4,2) = '' + laProps( 5,1) = 'prop_especial_crlf = ' + laProps( 5,2) = '' + laProps( 6,1) = 'El valor 1' + laProps( 6,2) = '' + laProps( 7,1) = 'El valor 2' + laProps( 7,2) = '' + laProps( 8,1) = 'Y el 3!' + laProps( 8,2) = '' + laProps( 9,1) = '' + laProps( 9,2) = '' + laProps(10,1) = '' + laProps(10,2) = '' + laProps(11,2) = 'Debería tener CR+LF' + laProps(11,2) = '' + laProps(12,1) = 'Width = 27.4' + laProps(12,2) = '' + laProps(13,1) = '_memberdata = [ ;' + laProps(13,2) = '' + laProps(14,1) = ' ;' + laProps(14,2) = '' + laProps(15,1) = ']' + laProps(15,2) = 'XML Metadata for customizable properties' + I = 4 + loObj.get_SeparatedPropAndValue( laProps(I,1), @lcPropName, @lcPropValue ) + *lcPropName = 'prop_especial_cr' + *lcPropValue = 'Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(57,8) + 'Este es el valor 1' + CHR(13) + 'Este el 2' + CHR(13) + 'Y este bajo Shift_Enter el 3' + + *-- TEST + loObj.analizarAsignacion_TAG_Indicado( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo, @lcValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_analizarAsignacion_TAG__fb2p_value__EnUnaAsignacion_MultiLine + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, laProps(1,2), lnProp_Count, I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, lcMemo ; + , lcValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcTag_I = '' + lcTag_F = '' + lnLen_lcTag_I = LEN(lcTag_I) + lnLen_lcTag_F = LEN(lcTag_F) + lnProp_Count = 17 + DIMENSION laProps(lnProp_Count,2) + laProps = '' + laProps( 1,1) = 'Height = 2.73' + laProps( 1,2) = '' + laProps( 2,1) = 'Name = "c1"' + laProps( 2,2) = '' + laProps( 3,1) = 'prop1 = .F.' + laProps( 3,2) = 'Mi prop1' + laProps( 4,1) = 'prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + laProps( 4,2) = '' + laProps( 5,1) = 'prop_especial_crlf = ' + laProps( 5,2) = '' + laProps( 6,1) = 'El valor 1' + laProps( 6,2) = '' + laProps( 7,1) = 'El valor 2' + laProps( 7,2) = '' + laProps( 8,1) = 'Y el 3!' + laProps( 8,2) = '' + laProps( 9,1) = '' + laProps( 9,2) = '' + laProps(10,1) = '' + laProps(10,2) = '' + laProps(11,2) = 'Debería tener CR+LF' + laProps(11,2) = '' + laProps(12,1) = 'Width = 27.4' + laProps(12,2) = '' + laProps(13,1) = '_memberdata = [ ;' + laProps(13,2) = '' + laProps(14,1) = ' ;' + laProps(14,2) = '' + laProps(15,1) = ']' + laProps(15,2) = 'XML Metadata for customizable properties' + I = 5 + loObj.get_SeparatedPropAndValue( laProps(I,1), @lcPropName, @lcPropValue ) + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(33,8) + 'El valor 1' + CR_LF + 'El valor 2' + CR_LF + 'Y el 3!' + CR_LF + + *-- TEST + loObj.analizarAsignacion_TAG_Indicado( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo, @lcValue_Esperado ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_analizarAsignacion_TAG__memberdata__EnUnaAsignacion_MultiLine + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcPropName, lcPropValue, laProps(1,2), lnProp_Count, I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, lcMemo ; + , lcValue_Esperado ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcTag_I = '' + lcTag_F = '' + lnLen_lcTag_I = LEN(lcTag_I) + lnLen_lcTag_F = LEN(lcTag_F) + lnProp_Count = 17 + DIMENSION laProps(lnProp_Count,2) + laProps = '' + laProps( 1,1) = 'Height = 2.73' + laProps( 1,2) = '' + laProps( 2,1) = 'Name = "c1"' + laProps( 2,2) = '' + laProps( 3,1) = 'prop1 = .F.' + laProps( 3,2) = 'Mi prop1' + laProps( 4,1) = 'prop_especial_cr = Este es el valor 1 Este el 2 Y este bajo Shift_Enter el 3' + laProps( 4,2) = '' + laProps( 5,1) = 'prop_especial_crlf = ' + laProps( 5,2) = '' + laProps( 6,1) = 'El valor 1' + laProps( 6,2) = '' + laProps( 7,1) = 'El valor 2' + laProps( 7,2) = '' + laProps( 8,1) = 'Y el 3!' + laProps( 8,2) = '' + laProps( 9,1) = '' + laProps( 9,2) = '' + laProps(10,1) = '' + laProps(10,2) = '' + laProps(11,2) = 'Debería tener CR+LF' + laProps(11,2) = '' + laProps(12,1) = 'Width = 27.4' + laProps(12,2) = '' + laProps(13,1) = '_memberdata = ' + laProps(13,2) = '' + laProps(14,1) = '' + laProps(14,2) = '' + laProps(15,1) = '' + laProps(15,2) = 'XML Metadata for customizable properties' + I = 13 + loObj.get_SeparatedPropAndValue( laProps(I,1), @lcPropName, @lcPropValue ) + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(71,8) + '' + CR_LF + '' + CR_LF + '' + + *-- TEST + loObj.analizarAsignacion_TAG_Indicado( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado ; + , @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; + , @I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, @lcMemo, @lcValue_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects.prg b/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects.prg new file mode 100644 index 0000000..90ade57 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects.prg @@ -0,0 +1,161 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects OF ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects.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 + icClase = 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" + LOCAL loObjeto AS CL_OBJETO OF "FOXBIN2PRG.PRG" + LOCAL loClase AS CL_CLASE 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_prg_a_bin", "FOXBIN2PRG.PRG") + THIS.icClase = NEWOBJECT("CL_CLASE", "FOXBIN2PRG.PRG") + loClase = THIS.icClase + 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 + THIS.icClase = 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, toClase, taWriteOrder_Esperado + + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + LOCAL loObjeto AS CL_OBJETO OF "FOXBIN2PRG.PRG" + LOCAL loClase AS CL_CLASE OF "FOXBIN2PRG.PRG" + LOCAL I + loObj = THIS.icObj + loClase = toClase + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + IF ISNULL(toEx) + *-- Visualización de valores + FOR I = 1 TO loClase._AddObject_Count + loObjeto = loClase._AddObjects(I) + THIS.messageout( ' objeto._Nombre = ' + TRANSFORM(loObjeto._Nombre) ) + THIS.messageout( ' objeto._ZOrder = ' + TRANSFORM(loObjeto._ZOrder) ) + THIS.messageout( ' objeto._WriteOrder = ' + TRANSFORM(loObjeto._WriteOrder) ) + THIS.messageout( REPLICATE('-',50) ) + ENDFOR + + + *-- Evaluación de valores + FOR I = 1 TO loClase._AddObject_Count + loObjeto = loClase._AddObjects(I) + THIS.assertequals( taWriteOrder_Esperado(I), loObjeto._WriteOrder, "[WriteOrder para objeto " + loObjeto._Nombre + "]" ) + ENDFOR + + 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_ordenarLosObjetosSegunSuOrdenOriginal + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , laWriteOrder_Esperado(3) ; + , loEx AS EXCEPTION + + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + LOCAL loObjeto AS CL_OBJETO OF "FOXBIN2PRG.PRG" + LOCAL loClase AS CL_CLASE OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loClase = THIS.icClase + loEx = NULL + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + *-- + loObjeto = NULL + loObjeto = NEWOBJECT("CL_OBJETO", "FOXBIN2PRG.PRG") + loObjeto._ObjName = 'Label3' + loObjeto._Parent = 'Form1.pgfPanel.pagApariencia' + loObjeto._Nombre = 'Form1.pgfPanel.pagApariencia.Label3' + loObjeto._ZOrder = 50 + loClase.add_Object( loObjeto ) + *-- + loObjeto = NULL + loObjeto = NEWOBJECT("CL_OBJETO", "FOXBIN2PRG.PRG") + loObjeto._ObjName = 'Label3' + loObjeto._Parent = 'Form1.pgfPanel.pagAvanzado' + loObjeto._Nombre = 'Form1.pgfPanel.pagAvanzado.Label3' + loObjeto._ZOrder = 82 + loClase.add_Object( loObjeto ) + *-- + loObjeto = NULL + loObjeto = NEWOBJECT("CL_OBJETO", "FOXBIN2PRG.PRG") + loObjeto._ObjName = 'Label3' + loObjeto._Parent = 'Form1.pgfPanel.pagSeteos' + loObjeto._Nombre = 'Form1.pgfPanel.pagSeteos.Label3' + loObjeto._ZOrder = 30 + loClase.add_Object( loObjeto ) + *-- + loObjeto = NULL + + *-- DATOS ESPERADOS + STORE 0 TO lnCodError_Esperado + laWriteOrder_Esperado(1) = 2 + laWriteOrder_Esperado(2) = 3 + laWriteOrder_Esperado(3) = 1 + + *-- TEST + loObj.insert_AllObjects( @loClase ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, @loClase, @laWriteOrder_Esperado ) + + ENDFUNC + + +ENDDEFINE diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 511c534..68b863d 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -279,17 +279,22 @@ TRY ENDIF ENDCASE - CD (JUSTPATH(lcSys16)) - SET PATH TO (lcPath) ENDIF CATCH TO loEx + IF llExisteConfig + goCnv.writeLog( 'ERROR: ' + TRANSFORM(loEx.ErrorNo) + ', ' + loEx.Message + CR_LF ; + + loEx.Procedure + ', line ' + TRANSFORM(loEx.LineNo) + CR_LF ; + + loEx.Details ) + ENDIF FINALLY goFrm_Avance.HIDE() goFrm_Avance.RELEASE() STORE NULL TO goCnv, goFrm_Avance RELEASE goCnv, goFrm_Avance + CD (JUSTPATH(lcSys16)) + SET PATH TO (lcPath) ENDTRY IF _VFP.STARTMODE > 0 @@ -335,7 +340,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. lFileMode = .F. nClassTimeStamp = '' - n_FB2PRG_Version = 1.8 + n_FB2PRG_Version = 1.9 o_Conversor = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' @@ -3444,7 +3449,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin THIS.insert_AllObjects( @loClase ) - IF NOT loClase._BaseClass == 'dataenvironment' + IF .F. &&NOT loClase._BaseClass == 'dataenvironment' *-- Inserto el COMMENT INSERT INTO TABLABIN ; ( PLATFORM ; diff --git a/ignore.conf b/ignore.conf new file mode 100644 index 0000000..50a658c --- /dev/null +++ b/ignore.conf @@ -0,0 +1,7 @@ +*.FXP +*.LNK +*.SCC +*.TMP +*.BAK +*/FXUResults.* +*/FXUPersist*.* \ No newline at end of file From 0c75c221382ec7a4c1969ae3de94732898517dfd Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 6 Dec 2013 01:43:28 +0100 Subject: [PATCH 03/11] Changeset: 27 Changeset: 27 --- foxbin2prg.prg | 729 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 625 insertions(+), 104 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 511c534..2f26965 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -131,7 +131,11 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE C_MEMBERDATA_F C_VFPDATA_F #DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I) #DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F) -#DEFINE C_TAG_REPORTE 'reportes' +#DEFINE C_DATA_I '' +#DEFINE C_TAG_REPORTE 'Reportes' +#DEFINE C_TAG_REPORTE_I '<' + C_TAG_REPORTE + '>' +#DEFINE C_TAG_REPORTE_F '' #DEFINE C_TAB CHR(9) #DEFINE C_CR CHR(13) #DEFINE C_LF CHR(10) @@ -279,17 +283,22 @@ TRY ENDIF ENDCASE - CD (JUSTPATH(lcSys16)) - SET PATH TO (lcPath) ENDIF CATCH TO loEx + IF llExisteConfig + goCnv.writeLog( 'ERROR: ' + TRANSFORM(loEx.ErrorNo) + ', ' + loEx.Message + CR_LF ; + + loEx.Procedure + ', line ' + TRANSFORM(loEx.LineNo) + CR_LF ; + + loEx.Details ) + ENDIF FINALLY goFrm_Avance.HIDE() goFrm_Avance.RELEASE() STORE NULL TO goCnv, goFrm_Avance RELEASE goCnv, goFrm_Avance + CD (JUSTPATH(lcSys16)) + SET PATH TO (lcPath) ENDTRY IF _VFP.STARTMODE > 0 @@ -335,7 +344,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. lFileMode = .F. nClassTimeStamp = '' - n_FB2PRG_Version = 1.8 + n_FB2PRG_Version = 1.9 o_Conversor = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' @@ -789,6 +798,16 @@ DEFINE CLASS c_conversor_base AS SESSION ENDIF ENDIF + CASE JUSTEXT( THIS.c_OutputFile ) = 'FRX' + IF FILE( FORCEEXT(THIS.c_OutputFile,'FRX') ) + THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,'FRX') + '/FRT' ) + COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRX')) TO (FORCEEXT(THIS.c_OutputFile,'FRX' + lcNext_Bak)) + + IF FILE( FORCEEXT(THIS.c_OutputFile,'FRT') ) + COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRT')) TO (FORCEEXT(THIS.c_OutputFile,'FRT' + lcNext_Bak)) + ENDIF + ENDIF + OTHERWISE ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!' @@ -1321,9 +1340,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + + [] ; + [] ; + + [] ; + + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -1545,11 +1569,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE createProject - LPARAMETERS toProject - - #IF .F. - LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' - #ENDIF CREATE TABLE (THIS.c_OutputFile) ; ( NAME M ; @@ -1582,6 +1601,18 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createProject_RecordHeader + LPARAMETERS toProject + + #IF .F. + LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' + #ENDIF + INSERT INTO TABLABIN ; ( NAME ; , TYPE ; @@ -1625,9 +1656,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE createClasslib - * No funciona con el EXE - *CREATE CLASSLIB (THIS.c_outputFile) - CREATE TABLE (THIS.c_OutputFile) ; ( PLATFORM C(8) ; , UNIQUEID C(10) ; @@ -1654,6 +1682,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createClasslib_RecordHeader + INSERT INTO TABLABIN ; ( PLATFORM ; , UNIQUEID ; @@ -1695,6 +1730,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createForm_RecordHeader + INSERT INTO TABLABIN ; ( PLATFORM ; , UNIQUEID ; @@ -1707,6 +1749,99 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* + PROCEDURE createReport + + CREATE TABLE (THIS.c_OutputFile) ; + ( 'PLATFORM' C(8) ; + , 'UNIQUEID' C(10) ; + , 'TIMESTAMP' N(10) ; + , 'OBJTYPE' N(2) ; + , 'OBJCODE' N(3) ; + , 'NAME' M ; + , 'EXPR' M ; + , 'VPOS' N(9,3) ; + , 'HPOS' N(9,3) ; + , 'HEIGHT' N(9,3) ; + , 'WIDTH' N(9,3) ; + , 'STYLE' M ; + , 'PICTURE' M ; + , 'ORDER' M NOCPTRANS ; + , 'UNIQUE' L ; + , 'COMMENT' M ; + , 'ENVIRON' L ; + , 'BOXCHAR' C(1) ; + , 'FILLCHAR' C(1) ; + , 'TAG' M ; + , 'TAG2' M NOCPTRANS ; + , 'PENRED' N(5) ; + , 'PENGREEN' N(5) ; + , 'PENBLUE' N(5) ; + , 'FILLRED' N(5) ; + , 'FILLGREEN' N(5) ; + , 'FILLBLUE' N(5) ; + , 'PENSIZE' N(5) ; + , 'PENPAT' N(5) ; + , 'FILLPAT' N(5) ; + , 'FONTFACE' M ; + , 'FONTSTYLE' N(3) ; + , 'FONTSIZE' N(3) ; + , 'MODE' N(3) ; + , 'RULER' N(1) ; + , 'RULERLINES' N(1) ; + , 'GRID' L ; + , 'GRIDV' N(2) ; + , 'GRIDH' N(2) ; + , 'FLOAT' L ; + , 'STRETCH' L ; + , 'STRETCHTOP' L ; + , 'TOP' L ; + , 'BOTTOM' L ; + , 'SUPTYPE' N(1) ; + , 'SUPREST' N(1) ; + , 'NOREPEAT' L ; + , 'RESETRPT' N(2) ; + , 'PAGEBREAK' L ; + , 'COLBREAK' L ; + , 'RESETPAGE' L ; + , 'GENERAL' N(3) ; + , 'SPACING' N(3) ; + , 'DOUBLE' L ; + , 'SWAPHEADER' L ; + , 'SWAPFOOTER' L ; + , 'EJECTBEFOR' L ; + , 'EJECTAFTER' L ; + , 'PLAIN' L ; + , 'SUMMARY' L ; + , 'ADDALIAS' L ; + , 'OFFSET' N(3) ; + , 'TOPMARGIN' N(3) ; + , 'BOTMARGIN' N(3) ; + , 'TOTALTYPE' N(2) ; + , 'RESETTOTAL' N(2) ; + , 'RESOID' N(2) ; + , 'CURPOS' L ; + , 'SUPALWAYS' L ; + , 'SUPOVFLOW' L ; + , 'SUPRPCOL' N(1) ; + , 'SUPGROUP' N(2) ; + , 'SUPVALCHNG' L ; + , 'SUPEXPR' M ; + , 'USER' M ) + + USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE emptyRecord + LOCAL loReg + SCATTER MEMO BLANK NAME loReg + RETURN loReg + ENDPROC + + ******************************************************************************************************************* PROCEDURE escribirArchivoBin LPARAMETERS toModulo @@ -2192,6 +2327,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE analizarAsignacion_TAG_Indicado + *-- DETALLES: Este método está pensado para leer los tags FB2P_VALUE y MEMBERDATA, que tienen esta sintaxis: + * + * _memberdata = + * + * && XML Metadata for customizable properties + * + * Este es un valor especial + * LPARAMETERS tcPropName, tcValue, taProps, tnProp_Count, I, tcTAG_I, tcTAG_F, tnLEN_TAG_I, tnLEN_TAG_F, tcMemo EXTERNAL ARRAY taProps LOCAL llBloqueEncontrado, loEx AS EXCEPTION @@ -3017,6 +3160,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo la librería + THIS.createClasslib() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3118,8 +3266,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ; , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - THIS.createClasslib() + *-- Creo el registro de cabecera + THIS.createClasslib_RecordHeader() *-- Recorro las CLASES @@ -3277,6 +3425,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo el form + THIS.createForm() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3378,8 +3531,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ; , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - THIS.createForm() + *-- Creo el registro de cabecera + THIS.createForm_RecordHeader() *-- El SCX tiene el INCLUDE en el primer registro IF NOT EMPTY(toModulo._includeFile) @@ -3444,7 +3597,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin THIS.insert_AllObjects( @loClase ) - IF NOT loClase._BaseClass == 'dataenvironment' + IF .F. &&NOT loClase._BaseClass == 'dataenvironment' *-- Inserto el COMMENT INSERT INTO TABLABIN ; ( PLATFORM ; @@ -3553,6 +3706,11 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo solo la cabecera del proyecto + THIS.createProject() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF *THIS.identificarBloquesDeExclusion( @laCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3590,10 +3748,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; , loFile AS CL_PROJ_FILE OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - - *-- Creo solo la cabecera del proyecto - THIS.createProject( toProject ) + *-- Creo solo el registro de cabecera del proyecto + THIS.createProject_RecordHeader( toProject ) lcMainProg = '' @@ -4229,6 +4385,318 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin + #IF .F. + LOCAL THIS AS c_conversor_prg_a_frx OF 'FOXBIN2PRG.PRG' + #ENDIF + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ; + , laBloquesExclusion(1,2), lnBloquesExclusion, I ; + , loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version + STORE '' TO lcLine, lcSourceFile + STORE NULL TO loReg, toModulo + + C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + + THIS.doBackup() + + *-- Creo el reporte + THIS.createReport() + + *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte + THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport ) + + THIS.escribirArchivoBin( @loReport ) + + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lnCodError + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE escribirArchivoBin + LPARAMETERS toReport + *-- ----------------------------------------------------------------------------------------------------------- + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL loReg, lnCodError, loEx AS EXCEPTION + + *-- Agrego los ARCHIVOS + FOR EACH loReg IN toReport FOXOBJECT + INSERT INTO TABLABIN FROM NAME loReg + ENDFOR + + USE IN (SELECT("TABLABIN")) + + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + + ENDTRY + + RETURN lnCodError + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE identificarBloquesDeCodigo + LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport + *-------------------------------------------------------------------------------------------------------------- + * taCodeLines (!@ IN ) El array con las líneas del código donde buscar + * tnCodeLines (!@ IN ) Cantidad de líneas de código + * taBloquesExclusion (?@ IN ) Sin uso + * tnBloquesExclusion (?@ IN ) Sin uso + * toReport (?@ OUT) Objeto con toda la información del reporte analizado + * + * NOTA: + * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. + *-------------------------------------------------------------------------------------------------------------- + EXTERNAL ARRAY taCodeLines, taBloquesExclusion + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed + STORE 0 TO I + + THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile)) + + IF tnCodeLines > 1 + toReport = NULL + toReport = CREATEOBJECT('CL_REPORT') + + WITH THIS + FOR I = 1 TO tnCodeLines + .set_Line( @lcLine, @taCodeLines, I ) + + IF .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Vacía o solo Comentarios + LOOP + ENDIF + + DO CASE + CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + llFoxBin2Prg_Completed = .T. + + CASE .analizarBloque_Reportes( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + + ENDCASE + ENDFOR + ENDWITH && THIS + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_Reportes + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, lcComment, lcMetadatos, luValor ; + , laPropsAndValues(1,2), lnPropsAndValues_Count ; + , loReg + + IF LEFT( tcLine, LEN(C_TAG_REPORTE) + 1 ) == '<' + C_TAG_REPORTE + '' + llBloqueEncontrado = .T. + loReg = THIS.emptyRecord() + + WITH THIS + FOR I = I + 1 TO tnCodeLines + lcComment = '' + .set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE LEFT( tcLine, LEN(C_TAG_REPORTE_F) ) == C_TAG_REPORTE_F + I = I + 1 + EXIT + + CASE .lineIsOnlyCommentAndNoMetadata( @tcLine, @lcComment ) + LOOP && Saltear comentarios + + *CASE UPPER( LEFT( tcLine, 14 ) ) == 'BUILD PROJECT ' + * LOOP + + CASE .analizarBloque_platform( toReport, @tcLine, @taCodeLines, @I, @tnCodeLines, @loReg ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'picture' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'penred' ) + + *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'style' ) + + *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'expr' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'user' ) + + ENDCASE + ENDFOR + ENDWITH && THIS + + I = I - 1 + toReport.Add( loReg ) + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_platform + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, X, lnPos, lnPos2, lcValue, lnLenPropName, laProps(1) ; + , lcComment, lcMetadatos, luValor ; + , laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LOWER( LEFT(tcLine, 10) ) == 'platform="' + llBloqueEncontrado = .T. + lnLastPos = 1 + + FOR X = 1 TO AMEMBERS( laProps, toReg, 0 ) + lnPos = AT( LOWER(laProps(X)) + '="', tcLine ) + + IF lnPos > 0 + lnLenPropName = LEN(laProps(X)) + lnPos2 = AT( '"', SUBSTR( tcLine, lnPos + lnLenPropName + 2 ) ) + lcValue = SUBSTR( tcLine, lnPos + lnLenPropName + 2, lnPos2 - 1 ) + ADDPROPERTY( toReg, laProps(X), lcValue ) + ENDIF + ENDFOR + + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_CDATA_inline + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, lcValue, loEx as Exception + + IF LEFT(tcLine, 9) == '<' + tcPropName + '>' + llBloqueEncontrado = .T. + + lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F ) + ADDPROPERTY( toReg, tcPropName, lcValue ) + ENDIF + + CATCH TO loEx + IF loEx.ErrorNo = 1470 && Incorrect property name. + loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base #IF .F. @@ -4771,94 +5239,96 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base TRY LOCAL lc_TAG_REPORTE lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' ' - lc_TAG_REPORTE_F = ' >' + lc_TAG_REPORTE_F = '' TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <> ENDTEXT - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - objcode="<>" name="<>" + objcode="<>" name="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - vpos="<>" hpos="<>" height="toReg.height" width="toReg.width" + vpos="<>" hpos="<>" height="<>" width="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - picture="<>" order="<>" unique="<>" comment="<>" + order="<>" unique="<>" comment="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - environ="<>" boxchar="<>" fillchar="<>" + environ="<>" boxchar="<>" fillchar="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - tag="<>" tag2="<>" penred="<>" + pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" + fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" + fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" + ruler="<>" rulerlines="<>" grid="<>" gridv="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - ruler="<>" rulerlines="<>" grid="<>" gridv="<>" - ENDTEXT - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1 - gridh="<>" float="<>" stretch="<>" stretchtop="<>" + gridh="<>" float="<>" stretch="<>" stretchtop="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" + top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" + resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - general="<>" spacing="<>" double="<>" swapheader="<>" + general="<>" spacing="<>" double="<>" swapheader="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" + swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - summary="<>" addalias="<>" offset="<>" topmargin="<>" + summary="<>" addalias="<>" offset="<>" topmargin="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" + botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" + curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - supgroup="<>" supvalchng="<>" supexpr="<>" user="<>" + supgroup="<>" supvalchng="<>" supexpr="<>" > + ENDTEXT + + * <>tag="<>" + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>>]]> + <>>]]> + <>>]]> + <>>]]> + <>