Files
harbour-core/harbour/contrib/hbfbird/tests/test.prg
Viktor Szakats ff8abbf18b 2010-02-04 18:11 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbfbird/tests/test.prg
    ! Fixed to work at all. This code was complete nonsense.
    + Added more status display.
    ; Anyhow basic tests shows that recent FB changes are okay, 
      but class wrapper never worked and tests were either 
      dummies or wrong. Please test hbfbird with real life 
      code.

  * contrib/hbfbird/tests/stress.prg
    * Formatting.

  * contrib/hbfbird/tests/testapi.c
    ! Fixed to not refer to env specific IP. The table name is still
      wrong though.

  * contrib/hbfbird/tfirebrd.prg
    + Added TOFIX about very old and very basic problem in the
      FB class wrapper.
2010-02-04 17:12:21 +00:00

110 lines
2.8 KiB
Plaintext

/*
* $Id$
*/
#include "common.ch"
#include "simpleio.ch"
FUNCTION Main()
LOCAL cDir, cName
LOCAL cDBName
LOCAL nDialect := 1
LOCAL trans, qry
LOCAL db, x, y
LOCAL num_cols
LOCAL columns
LOCAL fetch_stat
LOCAL tmp
hb_FNameSplit( hb_argv( 0 ), @cDir, @cName, NIL )
cDBName := hb_FNameMerge( cDir, cName, ".gdb" )
IF hb_FileExists( cDBName )
FErase( cDBName )
ENDIF
? tmp := FBCreateDB( cDBName, "sysdba", "masterkey", 1024, "ASCII", nDialect ), FBError( tmp )
/* Connect rdbms */
db := FBConnect( "127.0.0.1:" + cDBName, "sysdba", "masterkey" )
IF ISNUMBER( db )
? "Error:", db, FBError( db )
QUIT
ENDIF
? "Testing invalid request"
? tmp := FBExecute( db, "sldjfs;ldjs;djf", nDialect ), FBError( tmp )
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "create table teste (code smallint)", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "==="
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "CREATE TABLE customer( customer VARCHAR(20) )", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "==="
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 1")', nDialect, trans ), FBError( tmp )
? "Status Rollback: ", tmp := FBRollback( trans ), FBError( tmp )
ENDIF
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 2")', nDialect, trans ), FBError( tmp )
? "Status Commit: ", tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 3")', nDialect ), FBError( tmp )
// FIX WINDOWS GPF BELOW
qry := FBQuery( db, "SELECT * FROM customer", nDialect )
IF ISNUMBER( qry )
? "Error:", qry, FBError( qry )
ELSE
num_cols := qry[ 4 ]
columns := qry[ 6 ]
FOR x := 1 TO num_cols
? x, "> "
FOR y := 1 TO Len( columns[ x ] )
?? columns[ x, y ], " "
NEXT
NEXT
? "---"
DO WHILE ( fetch_stat := FBFetch( qry ) ) == 0
? fetch_stat
FOR x := 1 TO num_cols
?? FBGetData( qry, x ), ", "
NEXT
ENDDO
? "Fetch code:", fetch_stat
? "Status Free Query: ", FBFree( qry )
ENDIF
/* Close connection with rdbms */
? "Status Close Database: ", tmp := FBClose( db ), FBError( tmp )
RETURN NIL