{** * Test data generation API. * * This functions are usefull to generate information in tables in order * to execute some tests *} {** * Array de colunas para geraçao de dados de teste * ??? Foreign keys para ja nao suportadas * @todo Send this feature to a test data generation framework *} define paColumns array[50] of record columnName char(18), pk smallint, nulls smallint, datatype char(18) end record define idxColumns smallint # Nome da tabela para geraçao de dados de teste define tableName char(18) {** * Gera dados de teste numa tabela *
Depende de algumas funçoes acessoras que afectam a tabela(s) e coluna(s) * para os quais se quer gerar os dados *} function fglUnitGenTestData(numRecords) define numrecords smallint define i smallint for i = 1 to numRecords call fglUnitInsertTableRow(i) end for end function function fglUnitInitGenTestData() let idxColumns = 0 end function {** * Gera a instrução SQL de inserção e executa-a *} function fglUnitInsertTableRow(rowNum) define rowNum smallint define strSql char(640) define i smallint let strSql = "insert into ", tableName clipped, " (" for i = 1 to idxColumns if i > 1 then let strSql = strSql clipped, "," end if let strSql = strSql clipped, " ", paColumns[i].columnName end for let strSql = strSql clipped, ") values (" for i = 1 to idxColumns if i > 1 then let strSql = strSql clipped, "," end if case paColumns[i].datatype when "char" let strSql = strSql clipped, "'", ascii(rowNum+48) , "'" when "integer" let strSql = strSql clipped, rowNum using "<<<<<" when "date" let strSql = strSql clipped, "today+", rowNum, "" when "datetime" let strSql = strSql clipped, "current" otherwise let strSql = strSql clipped, "'", rowNum using "<<<<<", "'" end case end for let strSql = strSql clipped, ")" #display " : ", strSql clipped prepare stInsertColumn from strSql execute stInsertColumn end function function fglUnitSetTableName(_tableName) define _tableName char(18) let tableName = _tableName end function function fglUnitSetColumn(idx,columnName,pk,nulls,datatype) define idx smallint define columnName char(18) define pk smallint define nulls smallint define datatype char(18) if idx > 50 then return end if let paColumns[idx].columnName = columnName let paColumns[idx].pk = pk let paColumns[idx].nulls = nulls let paColumns[idx].datatype = datatype if idx > idxColumns or idxColumns is null then let idxColumns = idx end if end function