LCOV - code coverage report
Current view: top level - src/dblib/unittests - t0011.c (source / functions) Hit Total Coverage
Test: FreeTDS coverage Lines: 52 65 80.0 %
Date: 2025-01-18 11:50:39 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /* 
       2             :  * Purpose: Test binding of string types
       3             :  * Functions: dbbind dbcmd dbcolname dbnextrow dbnumcols dbopen dbresults dbsqlexec 
       4             : 
       5             :  */
       6             : 
       7             : #include "common.h"
       8             : 
       9             : static int failed = 0;
      10             : 
      11             : static void insert_row(DBPROCESS * dbproc);
      12             : static int select_rows(DBPROCESS * dbproc, int bind_type);
      13             : 
      14             : int
      15           8 : main(int argc, char **argv)
      16             : {
      17             :         LOGINREC *login;
      18             :         DBPROCESS *dbproc;
      19             : 
      20           8 :         read_login_info(argc, argv);
      21           8 :         printf("Starting %s\n", argv[0]);
      22             : 
      23           8 :         dbinit();
      24             : 
      25           8 :         printf("About to logon\n");
      26             : 
      27           8 :         login = dblogin();
      28           8 :         DBSETLPWD(login, PASSWORD);
      29           8 :         DBSETLUSER(login, USER);
      30           8 :         DBSETLAPP(login, "t0011");
      31             : 
      32           8 :         printf("About to open\n");
      33             : 
      34           8 :         dbproc = dbopen(login, SERVER);
      35           8 :         if (strlen(DATABASE))
      36           8 :                 dbuse(dbproc, DATABASE);
      37           8 :         dbloginfree(login);
      38             : 
      39           8 :         printf("Dropping table\n");
      40           8 :         sql_cmd(dbproc);
      41           8 :         dbsqlexec(dbproc);
      42           8 :         while (dbresults(dbproc) != NO_MORE_RESULTS) {
      43             :                 /* nop */
      44             :         }
      45             : 
      46           8 :         printf("creating table\n");
      47           8 :         sql_cmd(dbproc);
      48           8 :         dbsqlexec(dbproc);
      49           8 :         while (dbresults(dbproc) != NO_MORE_RESULTS) {
      50             :                 /* nop */
      51             :         }
      52             : 
      53           8 :         printf("insert\n");
      54             : 
      55           8 :         insert_row(dbproc);
      56           8 :         insert_row(dbproc);
      57           8 :         insert_row(dbproc);
      58             : 
      59           8 :         failed = select_rows(dbproc, STRINGBIND);
      60             : 
      61           8 :         dbexit();
      62             : 
      63           8 :         printf("%s %s\n", __FILE__, (failed ? "failed!" : "OK"));
      64           8 :         return failed ? 1 : 0;
      65             : }
      66             : 
      67             : static int
      68           8 : select_rows(DBPROCESS * dbproc, int bind_type)
      69             : {
      70             :         char teststr[1024];
      71             :         char teststr2[1024];
      72             :         char testvstr[1024];
      73             :         DBINT testint;
      74             :         DBINT i;
      75             : 
      76             : 
      77           8 :         printf("select\n");
      78           8 :         sql_cmd(dbproc);
      79           8 :         dbsqlexec(dbproc);
      80             : 
      81             : 
      82           8 :         if (dbresults(dbproc) != SUCCEED) {
      83           0 :                 failed = 1;
      84           0 :                 printf("Was expecting a result set.");
      85           0 :                 exit(1);
      86             :         }
      87             : 
      88          32 :         for (i = 1; i <= dbnumcols(dbproc); i++) {
      89          32 :                 printf("col %d is %s\n", i, dbcolname(dbproc, i));
      90             :         }
      91             : 
      92           8 :         if (SUCCEED != dbbind(dbproc, 1, INTBIND, 0, (BYTE *) & testint)) {
      93           0 :                 fprintf(stderr, "Had problem with bind\n");
      94           0 :                 return 1;
      95             :         }
      96           8 :         if (SUCCEED != dbbind(dbproc, 2, bind_type, 0, (BYTE *) teststr)) {
      97           0 :                 fprintf(stderr, "Had problem with bind\n");
      98           0 :                 return 1;
      99             :         }
     100           8 :         if (SUCCEED != dbbind(dbproc, 3, bind_type, 0, (BYTE *) teststr2)) {
     101           0 :                 fprintf(stderr, "Had problem with bind\n");
     102           0 :                 return 1;
     103             :         }
     104           8 :         if (SUCCEED != dbbind(dbproc, 4, bind_type, 0, (BYTE *) testvstr)) {
     105           0 :                 fprintf(stderr, "Had problem with bind\n");
     106           0 :                 return 1;
     107             :         }
     108             : 
     109             :         i = 0;
     110          32 :         while (dbnextrow(dbproc) == REG_ROW) {
     111          24 :                 i++;
     112          24 :                 if (testint != i) {
     113           0 :                         printf("Failed.  Expected i to be |%d|, was |%d|\n", testint, i);
     114           0 :                         return 1;
     115             :                 }
     116          24 :                 printf("c:  %s$\n", teststr);
     117          24 :                 printf("c2: %s$\n", teststr2);
     118          24 :                 printf("vc: %s$\n", testvstr);
     119             :                 if (bind_type == STRINGBIND) {
     120             :                 } else {
     121             :                 }
     122             :         }
     123             :         return 0;
     124             : }
     125             : 
     126             : static void
     127          24 : insert_row(DBPROCESS * dbproc)
     128             : {
     129          24 :         sql_cmd(dbproc);
     130          24 :         dbsqlexec(dbproc);
     131          24 :         while (dbresults(dbproc) != NO_MORE_RESULTS) {
     132             :                 /* nop */
     133             :         }
     134          24 : }

Generated by: LCOV version 1.13