Changeset: 96 Agregado soporte de conversión de DBFs, DBCs e índices

This commit is contained in:
fernando
2013-12-18 00:08:37 +01:00
23 changed files with 7873 additions and 753 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,145 @@
*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (ES) AUTOGENERADO - <20><>ATENCI<43>N!! - <20><>NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!!
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.14" SourceFile="C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.DBF" Generated="2013/12/11 19:43:58" /> (Para uso con Visual FoxPro 9.0)
*
<TABLE>
<memofile>C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.FPT</memofile>
<codepage>1252</codepage>
<database>fb2p_dbc.dbc</database>
<filetype>0x00000031</filetype>
<filetype_descrip>Visual FoxPro, autoincrement enabled</filetype_descrip>
<FIELDS>
<FIELD>
<name>NOMBRE</name>
<type>C</type>
<width>30</width>
<decimals>0</decimals>
<null>.F.</null>
<nocptran>.F.</nocptran>
<field_valid_exp>.NOT.EMPTY(nombre)</field_valid_exp>
<field_valid_text>"El nombre est<73> vac<61>o"</field_valid_text>
<field_default_value>"."</field_default_value>
<table_valid_exp>edad>10</table_valid_exp>
<table_valid_text>"Mensaje de error de la regla edad > 10"</table_valid_text>
<longtablename>NOMBRELARGODELDBF</longtablename>
<ins_trig_exp>__ri_insert_nombrelargodeldbf().AND.(ins_trg())</ins_trig_exp>
<upd_trig_exp>__ri_update_nombrelargodeldbf().AND.(upd_trg())</upd_trig_exp>
<del_trig_exp>del_trg()</del_trig_exp>
<tablecomment>Comentario de la tabla "fb2p_dbf"</tablecomment>
<autoinc_nextval>0</autoinc_nextval>
<autoinc_step>0</autoinc_step>
</FIELD>
<FIELD>
<name>EDAD</name>
<type>N</type>
<width>3</width>
<decimals>0</decimals>
<null>.F.</null>
<nocptran>.F.</nocptran>
<field_valid_exp></field_valid_exp>
<field_valid_text></field_valid_text>
<field_default_value></field_default_value>
<table_valid_exp></table_valid_exp>
<table_valid_text></table_valid_text>
<longtablename></longtablename>
<ins_trig_exp></ins_trig_exp>
<upd_trig_exp></upd_trig_exp>
<del_trig_exp></del_trig_exp>
<tablecomment></tablecomment>
<autoinc_nextval>0</autoinc_nextval>
<autoinc_step>0</autoinc_step>
</FIELD>
<FIELD>
<name>ID</name>
<type>I</type>
<width>4</width>
<decimals>0</decimals>
<null>.F.</null>
<nocptran>.F.</nocptran>
<field_valid_exp></field_valid_exp>
<field_valid_text></field_valid_text>
<field_default_value></field_default_value>
<table_valid_exp></table_valid_exp>
<table_valid_text></table_valid_text>
<longtablename></longtablename>
<ins_trig_exp></ins_trig_exp>
<upd_trig_exp></upd_trig_exp>
<del_trig_exp></del_trig_exp>
<tablecomment></tablecomment>
<autoinc_nextval>10</autoinc_nextval>
<autoinc_step>2</autoinc_step>
</FIELD>
<FIELD>
<name>BIGTEXT</name>
<type>M</type>
<width>4</width>
<decimals>0</decimals>
<null>.F.</null>
<nocptran>.F.</nocptran>
<field_valid_exp></field_valid_exp>
<field_valid_text></field_valid_text>
<field_default_value></field_default_value>
<table_valid_exp></table_valid_exp>
<table_valid_text></table_valid_text>
<longtablename></longtablename>
<ins_trig_exp></ins_trig_exp>
<upd_trig_exp></upd_trig_exp>
<del_trig_exp></del_trig_exp>
<tablecomment></tablecomment>
<autoinc_nextval>0</autoinc_nextval>
<autoinc_step>0</autoinc_step>
</FIELD>
<FIELD>
<name>DEPTO</name>
<type>C</type>
<width>10</width>
<decimals>0</decimals>
<null>.F.</null>
<nocptran>.F.</nocptran>
<field_valid_exp></field_valid_exp>
<field_valid_text></field_valid_text>
<field_default_value></field_default_value>
<table_valid_exp></table_valid_exp>
<table_valid_text></table_valid_text>
<longtablename></longtablename>
<ins_trig_exp></ins_trig_exp>
<upd_trig_exp></upd_trig_exp>
<del_trig_exp></del_trig_exp>
<tablecomment></tablecomment>
<autoinc_nextval>0</autoinc_nextval>
<autoinc_step>0</autoinc_step>
</FIELD>
</FIELDS>
<indexFile>C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.CDX</indexFile>
<INDEXES>
<INDEX>
<tagname>ID</tagname>
<collate>MACHINE</collate>
<key>ID</key>
<descending>.F.</descending>
<for_exp></for_exp>
</INDEX>
<INDEX>
<tagname>I_NOMBRE</tagname>
<collate>GENERAL</collate>
<key>NOMBRE</key>
<descending>.F.</descending>
<for_exp></for_exp>
</INDEX>
<INDEX>
<tagname>DEPTO</tagname>
<collate>MACHINE</collate>
<key>DEPTO</key>
<descending>.F.</descending>
<for_exp></for_exp>
</INDEX>
</INDEXES>
</TABLE>

View File

@@ -0,0 +1,409 @@
*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (ES) AUTOGENERADO - <20><>ATENCI<43>N!! - <20><>NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!!
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.14" SourceFile="C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_FREE.DBF" Generated="2013/12/11 21:33:10" /> (Para uso con Visual FoxPro 9.0)
*
<TABLE>
<MemoFile>C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_FREE.FPT</MemoFile>
<CodePage>1252</CodePage>
<LastUpdate>2013/12/11</LastUpdate>
<Database></Database>
<FileType>0x00000032</FileType>
<FileType_Descrip>Visual FoxPro, Varchar, Varbinary, or Blob-enabled</FileType_Descrip>
<FIELDS>
<FIELD>
<Name>CARACTER</Name>
<Type>C</Type>
<Width>30</Width>
<Decimals>0</Decimals>
<Null>.T.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>FECHA</Name>
<Type>D</Type>
<Width>8</Width>
<Decimals>0</Decimals>
<Null>.T.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>FECHORA</Name>
<Type>T</Type>
<Width>8</Width>
<Decimals>0</Decimals>
<Null>.T.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>LOGICO</Name>
<Type>L</Type>
<Width>1</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>DOBLE</Name>
<Type>B</Type>
<Width>8</Width>
<Decimals>5</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>FLOTANTE</Name>
<Type>F</Type>
<Width>10</Width>
<Decimals>6</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>NUMERICO</Name>
<Type>N</Type>
<Width>12</Width>
<Decimals>3</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>BLOB</Name>
<Type>W</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>MONEDA</Name>
<Type>Y</Type>
<Width>8</Width>
<Decimals>4</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>GENERAL</Name>
<Type>G</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>ENTERO</Name>
<Type>I</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>NOTAS</Name>
<Type>M</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>VAR_BINARY</Name>
<Type>Q</Type>
<Width>35</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>VAR_CHAR</Name>
<Type>V</Type>
<Width>36</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>NOTASBIN</Name>
<Type>M</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.T.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>CARC_BIN</Name>
<Type>C</Type>
<Width>30</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.T.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>VARCHARBIN</Name>
<Type>V</Type>
<Width>37</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.T.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>0</Autoinc_Nextval>
<Autoinc_Step>0</Autoinc_Step>
</FIELD>
<FIELD>
<Name>ID_AUTOINC</Name>
<Type>I</Type>
<Width>4</Width>
<Decimals>0</Decimals>
<Null>.F.</Null>
<NoCPTran>.F.</NoCPTran>
<Field_Valid_Exp></Field_Valid_Exp>
<Field_Valid_Text></Field_Valid_Text>
<Field_Default_Value></Field_Default_Value>
<Table_Valid_Exp></Table_Valid_Exp>
<Table_Valid_Text></Table_Valid_Text>
<LongTableName></LongTableName>
<Ins_Trig_Exp></Ins_Trig_Exp>
<Upd_Trig_Exp></Upd_Trig_Exp>
<Del_Trig_Exp></Del_Trig_Exp>
<TableComment></TableComment>
<Autoinc_Nextval>30</Autoinc_Nextval>
<Autoinc_Step>5</Autoinc_Step>
</FIELD>
</FIELDS>
<indexFile>C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_FREE.CDX</indexFile>
<INDEXES>
<INDEX>
<TagName>LOGICO</TagName>
<TagType>BINARY</TagType>
<Key>LOGICO</Key>
<Filter></Filter>
<Order>ASCENDING</Order>
<Collate>MACHINE</Collate>
</INDEX>
<INDEX>
<TagName>ENTERO</TagName>
<TagType>REGULAR</TagType>
<Key>ENTERO</Key>
<Filter></Filter>
<Order>DESCENDING</Order>
<Collate>MACHINE</Collate>
</INDEX>
<INDEX>
<TagName>CARACTER</TagName>
<TagType>CANDIDATE</TagType>
<Key>CARACTER</Key>
<Filter>.NOT.EMPTY(caracter)</Filter>
<Order>ASCENDING</Order>
<Collate>GENERAL</Collate>
</INDEX>
</INDEXES>
</TABLE>

View File

@@ -0,0 +1,2 @@
LPARAMETERS p1, p2, p3, p4, p5
RETURN

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,148 @@
DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbc AS FxuTestCase OF FxuTestCase.prg
#IF .F.
LOCAL THIS AS ft__foxbin2prg__c_conversor_prg_a_dbc OF ft__foxbin2prg__c_conversor_prg_a_dbc.PRG
#ENDIF
#DEFINE C_FB2P_VALUE_I '<fb2p_value>'
#DEFINE C_FB2P_VALUE_F '</fb2p_value>'
#DEFINE CR_LF CHR(13) + CHR(10)
#DEFINE C_CR CHR(13)
#DEFINE C_LF CHR(10)
#DEFINE C_TAB CHR(9)
#DEFINE C_PROC 'PROCEDURE'
#DEFINE C_ENDPROC 'ENDPROC'
#DEFINE C_TEXT 'TEXT'
#DEFINE C_ENDTEXT 'ENDTEXT'
#DEFINE C_IF_F '#IF .F.'
#DEFINE C_ENDIF '#ENDIF'
#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
#DEFINE C_ENDDEFINE_CLASS 'ENDDEFINE'
icObj = NULL
*******************************************************************************************************************************************
FUNCTION SETUP
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
*LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG"
SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG')
oFXU_LIB.setup_comun()
*THIS.icObj = NEWOBJECT("c_conversor_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
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
IF PCOUNT() = 0
THIS.messageout( "* Support method, not a valid test." )
RETURN .T.
ENDIF
IF ISNULL(toEx)
*-- Validaciones en m<>todo
ELSE
*-- Evaluaci<63>n de errores
THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) )
THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) )
IF NOT INLIST( toEx.ERRORNO, 1098, 2071 ) && Error del usuario (ERROR y THROW)
THIS.messageout( TRANSFORM(toEx.LINECONTENTS) )
ENDIF
THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' )
ENDIF
THIS.messageout( '' )
THIS.messageout( REPLICATE('*',80) )
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElArchivo_FB2P_DBC_DC2_YRegenerarEl_DBC_ConTodosSusObjetos
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
, laCampos_IN(1,18), laCampos_OUT(1,18), lnFields_OUT, lnFields_IN, I, X, lcDC2, lcDC3 ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'FB2P_DBC.DBC'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
oFXU_LIB.copiarArchivosParaTest( 'EVENTSFILE.PRG' )
*-- Genero el DC2
loCnv.Ejecutar( FORCEEXT(lc_File,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
*-- Regenero el DBC
loCnv.Ejecutar( FORCEEXT(lc_File,'DC2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'DC2')) TO (FORCEEXT(lc_OutputFile,'DC3'))
*-- Genero el DC2 desde el DBC regenerado
*WAIT WINDOW TIMEOUT 2 && Para forzar una diferencia de 2 segundos entre el DC2 y el DC3
loCnv.Ejecutar( FORCEEXT(lc_File,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
*-- Comparo los DC2 y DC3
lcDC2 = STREXTRACT( FILETOSTR( FORCEEXT(lc_File,'DC2') ), '<DATABASE>', '</DATABASE>' )
lcDC3 = STREXTRACT( FILETOSTR( FORCEEXT(lc_File,'DC3') ), '<DATABASE>', '</DATABASE>' )
*-- Visualizaci<63>n de valores
THIS.messageout( 'Bytes DC3: ' + TRANSFORM(LEN(lcDC3)) )
THIS.messageout( 'Bytes DC2: ' + TRANSFORM(LEN(lcDC2)) )
*-- Evaluaci<63>n de valores
this.assertequals( lcDC2, lcDC3, '[Comparaci<63>n DC2 y DC3]' )
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado )
FINALLY
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
ENDFUNC
ENDDEFINE

View File

@@ -0,0 +1,367 @@
DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase.prg
#IF .F.
LOCAL THIS AS ft__foxbin2prg__c_conversor_prg_a_dbf OF ft__foxbin2prg__c_conversor_prg_a_dbf.PRG
#ENDIF
#DEFINE C_FB2P_VALUE_I '<fb2p_value>'
#DEFINE C_FB2P_VALUE_F '</fb2p_value>'
#DEFINE CR_LF CHR(13) + CHR(10)
#DEFINE C_CR CHR(13)
#DEFINE C_LF CHR(10)
#DEFINE C_TAB CHR(9)
#DEFINE C_PROC 'PROCEDURE'
#DEFINE C_ENDPROC 'ENDPROC'
#DEFINE C_TEXT 'TEXT'
#DEFINE C_ENDTEXT 'ENDTEXT'
#DEFINE C_IF_F '#IF .F.'
#DEFINE C_ENDIF '#ENDIF'
#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
#DEFINE C_ENDDEFINE_CLASS 'ENDDEFINE'
icObj = NULL
*******************************************************************************************************************************************
FUNCTION SETUP
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
*LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG"
SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG')
oFXU_LIB.setup_comun()
*THIS.icObj = NEWOBJECT("c_conversor_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
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
IF PCOUNT() = 0
THIS.messageout( "* Support method, not a valid test." )
RETURN .T.
ENDIF
IF ISNULL(toEx)
*-- Validaciones en m<>todo
ELSE
*-- Evaluaci<63>n de errores
THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) )
THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) )
IF NOT INLIST( toEx.ERRORNO, 1098, 2071 ) && Error del usuario (ERROR y THROW)
THIS.messageout( TRANSFORM(toEx.LINECONTENTS) )
ENDIF
THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' )
ENDIF
THIS.messageout( '' )
THIS.messageout( REPLICATE('*',80) )
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElArchivo_FB2P_FREE_DB2_YValidarQueGenereUn_DBF_ConTodosLosCamposYLasMismasDefinicionesYOrden
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
, laCampos_IN(1,18), laCampos_OUT(1,18), lnFields_OUT, lnFields_IN, I, X ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'FB2P_FREE.DB2'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
oFXU_LIB.copiarArchivosParaTest( lc_File )
loCnv.Ejecutar( lc_File, '', '', '', '1', '0', '1',.F.,.F.,.T. )
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SELECT 0
USE (FORCEEXT(lc_OutputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS TABLABIN
lnFields_OUT = AFIELDS( laCampos_OUT, 'TABLABIN' )
lnFields_IN = AFIELDS( laCampos_IN, 'ARCHIVOBIN_IN' )
*-- Visualizaci<63>n de valores
THIS.messageout( 'Cantidad de campos: ' + TRANSFORM(lnFields_OUT) )
THIS.messageout( '' )
THIS.messageout( PADR('Nombre',12) + ' ' + PADC('Tipo',4) + ' ' + PADL('Long',4) + ' ' + PADL('Dec',4) )
THIS.messageout( PADR('----------',12) + ' ' + PADC('----',4) + ' ' + PADL('----',4) + ' ' + PADL('---',4) )
FOR I = 1 TO lnFields_IN
THIS.messageout( PADR(laCampos_IN(I,1),12) + ' ' + PADC(laCampos_IN(I,2),4) + ' ' + PADL(laCampos_IN(I,3),4) + ' ' + PADL(laCampos_IN(I,4),4) )
ENDFOR
THIS.messageout( PADR('----------',12) + ' ' + PADC('----',4) + ' ' + PADL('----',4) + ' ' + PADL('---',4) )
*-- Evaluaci<63>n de valores
this.assertequals( lnFields_OUT, lnFields_IN, '[Cantidad de campos IN y OUT]' )
FOR I = 1 TO lnFields_IN
FOR X = 1 TO 18
THIS.assertequals( laCampos_IN(I,X), laCampos_OUT(I,X), '[Comparando estructura del campo ' + laCampos_IN(I,1) + ']' )
ENDFOR
ENDFOR
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado )
FINALLY
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElArchivo_FB2P_FREE_DB2_YValidarQueGenereUn_DBF_ConLosMismosIndices
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
, laIndices_IN(1,18), laIndices_OUT(1,18), lnIndices_OUT, lnIndices_IN, I, X ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'FB2P_FREE.DB2'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
oFXU_LIB.copiarArchivosParaTest( lc_File )
loCnv.Ejecutar( lc_File, '', '', '', '1', '0', '1',.F.,.F.,.T. )
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SELECT 0
USE (FORCEEXT(lc_OutputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS TABLABIN
lnIndices_IN = ATAGINFO( laIndices_IN, '', 'ARCHIVOBIN_IN' )
lnIndices_OUT = ATAGINFO( laIndices_OUT, '', 'TABLABIN' )
*-- Visualizaci<63>n de valores
THIS.messageout( 'Cantidad de <20>ndices para [' + DBF("TABLABIN") + ']: ' + TRANSFORM(lnIndices_OUT) )
THIS.messageout( '' )
THIS.messageout( PADR('Tag',12) + ' ' + PADR('Tipo',12) + ' ' + PADR('Clave',30) + ' ' + PADR('Filtro',30) + ' ' + PADR('Order',12) + ' ' + PADR('Collate',12) )
THIS.messageout( PADR('----------',12) + ' ' + PADR('----------',12) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------',12) + ' ' + PADR('----------',12) )
FOR I = 1 TO lnIndices_OUT
THIS.messageout( PADR(laIndices_OUT(I,1),12) + ' ' + PADR(laIndices_OUT(I,2),12) + ' ' + PADR(laIndices_OUT(I,3),30) + ' ' + PADR(laIndices_OUT(I,4),30) ;
+ ' ' + PADR(laIndices_OUT(I,5),12) + ' ' + PADR(laIndices_OUT(I,6),12) )
ENDFOR
THIS.messageout( PADR('----------',12) + ' ' + PADR('----------',12) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------',12) + ' ' + PADR('----------',12) )
*-- Evaluaci<63>n de valores
this.assertequals( lnIndices_OUT, lnIndices_IN, '[Cantidad de campos IN y OUT]' )
FOR I = 1 TO lnIndices_IN
FOR X = 1 TO 6
THIS.assertequals( laIndices_IN(I,X), laIndices_OUT(I,X), '[Comparando estructura del indice ' + laIndices_IN(I,1) + ']' )
ENDFOR
ENDFOR
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado )
FINALLY
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaTabla_FB2P_FREE_DBF_YValidarQueGenereUn_DB2yDBF_ConTodosLosCamposYLasMismasDefinicionesYOrden
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
, laCampos_IN(1,18), laCampos_OUT(1,18), lnFields_OUT, lnFields_IN, I, X ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'FB2P_FREE.DB2'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
loCnv.Ejecutar( FORCEEXT(lc_File,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
loCnv.Ejecutar( FORCEEXT(lc_File,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SELECT 0
USE (FORCEEXT(lc_OutputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS TABLABIN
lnFields_OUT = AFIELDS( laCampos_OUT, 'TABLABIN' )
lnFields_IN = AFIELDS( laCampos_IN, 'ARCHIVOBIN_IN' )
*-- Visualizaci<63>n de valores
THIS.messageout( 'Cantidad de campos: ' + TRANSFORM(lnFields_OUT) )
THIS.messageout( '' )
THIS.messageout( PADR('Nombre',12) + ' ' + PADC('Tipo',4) + ' ' + PADL('Long',4) + ' ' + PADL('Dec',4) )
THIS.messageout( PADR('----------',12) + ' ' + PADC('----',4) + ' ' + PADL('----',4) + ' ' + PADL('---',4) )
FOR I = 1 TO lnFields_IN
THIS.messageout( PADR(laCampos_IN(I,1),12) + ' ' + PADC(laCampos_IN(I,2),4) + ' ' + PADL(laCampos_IN(I,3),4) + ' ' + PADL(laCampos_IN(I,4),4) )
ENDFOR
THIS.messageout( PADR('----------',12) + ' ' + PADC('----',4) + ' ' + PADL('----',4) + ' ' + PADL('---',4) )
*-- Evaluaci<63>n de valores
this.assertequals( lnFields_OUT, lnFields_IN, '[Cantidad de campos IN y OUT]' )
FOR I = 1 TO lnFields_IN
FOR X = 1 TO 18
THIS.assertequals( laCampos_IN(I,X), laCampos_OUT(I,X), '[Comparando estructura del campo ' + laCampos_IN(I,1) + ']' )
ENDFOR
ENDFOR
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado )
FINALLY
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaTabla_FB2P_FREE_DBF_YValidarQueGenereUn_DB2yDBF_ConLosMismosIndices
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
, laIndices_IN(1,18), laIndices_OUT(1,18), lnIndices_OUT, lnIndices_IN, I, X ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'FB2P_FREE.DB2'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
loCnv.Ejecutar( FORCEEXT(lc_File,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
loCnv.Ejecutar( FORCEEXT(lc_File,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SELECT 0
USE (FORCEEXT(lc_OutputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS TABLABIN
lnIndices_IN = ATAGINFO( laIndices_IN, '', 'ARCHIVOBIN_IN' )
lnIndices_OUT = ATAGINFO( laIndices_OUT, '', 'TABLABIN' )
*-- Visualizaci<63>n de valores
THIS.messageout( 'Cantidad de <20>ndices para [' + DBF("TABLABIN") + ']: ' + TRANSFORM(lnIndices_OUT) )
THIS.messageout( '' )
THIS.messageout( PADR('Tag',12) + ' ' + PADR('Tipo',12) + ' ' + PADR('Clave',30) + ' ' + PADR('Filtro',30) + ' ' + PADR('Order',12) + ' ' + PADR('Collate',12) )
THIS.messageout( PADR('----------',12) + ' ' + PADR('----------',12) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------',12) + ' ' + PADR('----------',12) )
FOR I = 1 TO lnIndices_OUT
THIS.messageout( PADR(laIndices_OUT(I,1),12) + ' ' + PADR(laIndices_OUT(I,2),12) + ' ' + PADR(laIndices_OUT(I,3),30) + ' ' + PADR(laIndices_OUT(I,4),30) ;
+ ' ' + PADR(laIndices_OUT(I,5),12) + ' ' + PADR(laIndices_OUT(I,6),12) )
ENDFOR
THIS.messageout( PADR('----------',12) + ' ' + PADR('----------',12) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------------------------',30) + ' ' + PADR('----------',12) + ' ' + PADR('----------',12) )
*-- Evaluaci<63>n de valores
this.assertequals( lnIndices_OUT, lnIndices_IN, '[Cantidad de campos IN y OUT]' )
FOR I = 1 TO lnIndices_IN
FOR X = 1 TO 6
THIS.assertequals( laIndices_IN(I,X), laIndices_OUT(I,X), '[Comparando estructura del indice ' + laIndices_IN(I,1) + ']' )
ENDFOR
ENDFOR
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado )
FINALLY
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
ENDFUNC
ENDDEFINE

View File

@@ -298,7 +298,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED()
*-- DATOS ESPERADOS
@@ -318,7 +318,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
LOCATE FOR UNIQUEID==lcUniqueID
IF NOT FOUND()
ERROR 'No se encontr<74> el registro #' + TRANSFORM(RECNO('ARCHIBOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"'
ERROR 'No se encontr<74> el registro #' + TRANSFORM(RECNO('ARCHIVOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"'
ENDIF
SCATTER MEMO NAME loReg
@@ -332,7 +332,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
ENDTRY
ENDFUNC
@@ -372,7 +372,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED()
*-- DATOS ESPERADOS
@@ -392,7 +392,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
LOCATE FOR UNIQUEID==lcUniqueID
IF NOT FOUND()
ERROR 'No se encontr<74> el registro #' + TRANSFORM(RECNO('ARCHIBOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"'
ERROR 'No se encontr<74> el registro #' + TRANSFORM(RECNO('ARCHIVOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"'
ENDIF
SCATTER MEMO NAME loReg
@@ -406,7 +406,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
ENDTRY
ENDFUNC
@@ -444,7 +444,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Form',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
@@ -485,7 +485,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
@@ -526,7 +526,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
@@ -567,7 +567,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
@@ -608,7 +608,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
@@ -649,7 +649,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY
@@ -690,7 +690,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
@@ -732,7 +732,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
, loReg_Esperado, loReg, lcTipoBinario )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
USE IN (SELECT("ARCHIVOBIN_IN"))
USE IN (SELECT("TABLABIN"))
ENDTRY

View File

@@ -0,0 +1,122 @@
DEFINE CLASS foxbin2prg__c_conversor_base__doBackup AS FxuTestCase OF FxuTestCase.prg
#IF .F.
LOCAL THIS AS foxbin2prg__c_conversor_base__doBackup OF foxbin2prg__c_conversor_base__doBackup.PRG
#ENDIF
#DEFINE C_FB2P_VALUE_I '<fb2p_value>'
#DEFINE C_FB2P_VALUE_F '</fb2p_value>'
#DEFINE CR_LF CHR(13) + CHR(10)
#DEFINE C_CR CHR(13)
#DEFINE C_LF CHR(10)
#DEFINE C_TAB CHR(9)
#DEFINE C_PROC 'PROCEDURE'
#DEFINE C_ENDPROC 'ENDPROC'
#DEFINE C_TEXT 'TEXT'
#DEFINE C_ENDTEXT 'ENDTEXT'
#DEFINE C_IF_F '#IF .F.'
#DEFINE C_ENDIF '#ENDIF'
#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
#DEFINE C_ENDDEFINE_CLASS 'ENDDEFINE'
icObj = NULL
*******************************************************************************************************************************************
FUNCTION SETUP
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG"
SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG')
oFXU_LIB.setup_comun()
THIS.icObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG")
loObj = THIS.icObj
loObj.l_Test = .T.
ENDFUNC
*******************************************************************************************************************************************
FUNCTION TearDown
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
THIS.icObj = NULL
IF VARTYPE(oFXU_LIB) = "O"
oFXU_LIB.teardown_comun()
oFXU_LIB = NULL
ENDIF
RELEASE PROCEDURE 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Evaluate_results
LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tcBackFile_1, tcBackFile_2, tcBackFile_3
#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)
*-- Visualizaci<63>n de valores
THIS.messageout( 'BackFile_1: ' + TRANSFORM(tcBackFile_1) )
THIS.messageout( 'BackFile_2: ' + TRANSFORM(tcBackFile_2) )
THIS.messageout( 'BackFile_3: ' + TRANSFORM(tcBackFile_3) )
*-- Evaluaci<63>n de valores
THIS.assertequals( .T., FILE(tcBackFile_1), "Existencia del archivo " + tcBackFile_1 )
THIS.assertequals( .T., FILE(tcBackFile_2), "Existencia del archivo " + tcBackFile_2 )
IF NOT EMPTY(tcBackFile_3)
THIS.assertequals( .T., FILE(tcBackFile_3), "Existencia del archivo " + tcBackFile_3 )
ENDIF
ELSE
*-- Evaluaci<63>n de errores
THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) )
THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) )
THIS.messageout( TRANSFORM(toEx.LINECONTENTS) )
THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' )
ENDIF
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_HacerElBackupDelArchivoIndicado
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
LOCAL lnCodError, lcMenError, lnCodError_Esperado ;
, lcMemo, lcMemo_Salida, lcMemo_Esperado, lcBackFile_1, lcBackFile_2, lcBackFile_3 ;
, loEx AS EXCEPTION
LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG"
loObj = THIS.icObj
loEx = NULL
loObj.c_OutputFile = FORCEPATH( 'fb2p_dbc.dbc', oFXU_LIB.cPathDatosTest )
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
COPY FILE ( FORCEPATH( 'FB2P_DBC.D??', oFXU_LIB.cPathDatosReadOnly ) ) TO ( FORCEPATH( 'FB2P_DBC.D??', oFXU_LIB.cPathDatosTest ) )
*-- TEST
loObj.doBackup( @loEx, .F., @lcBackFile_1, @lcBackFile_2, @lcBackFile_3 )
THIS.Evaluate_results( loEx, lnCodError_Esperado, lcBackFile_1, lcBackFile_2, lcBackFile_3 )
ENDFUNC
ENDDEFINE

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff