LCOV - code coverage report
Current view: top level - src/odbc/unittests - cursor5.c (source / functions) Hit Total Coverage
Test: FreeTDS coverage Lines: 40 41 97.6 %
Date: 2024-04-18 21:21:48 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "common.h"
       2             : 
       3             : static SQLINTEGER v_int_3;
       4             : static SQLLEN v_ind_3_1;
       5             : 
       6             : static char v_char_3[21];
       7             : static SQLLEN v_ind_3_2;
       8             : 
       9             : static int result = 0;
      10             : 
      11             : static void
      12          90 : doFetch(int dir, int pos, int expected)
      13             : {
      14             :         SQLRETURN RetCode;
      15             : 
      16          90 :         RetCode = CHKFetchScroll(dir, pos, "SINo");
      17             : 
      18          90 :         if (RetCode != SQL_NO_DATA)
      19          66 :                 printf(">> fetch %2d %10d : %d [%s]\n", dir, pos, v_ind_3_1 ? (int) v_int_3 : -1, v_ind_3_2 ? v_char_3 : "null");
      20             :         else
      21          24 :                 printf(">> fetch %2d %10d : no data found\n", dir, pos);
      22             : 
      23          90 :         if (expected != (RetCode == SQL_NO_DATA ? -1 : v_int_3))
      24           0 :                 result = 1;
      25          90 : }
      26             : 
      27             : int
      28           8 : main(int argc, char **argv)
      29             : {
      30           8 :         odbc_use_version3 = 1;
      31           8 :         odbc_connect();
      32           8 :         odbc_check_cursor();
      33             : 
      34           6 :         CHKSetConnectAttr(SQL_ATTR_AUTOCOMMIT, (SQLPOINTER) SQL_AUTOCOMMIT_ON, SQL_IS_UINTEGER, "S");
      35             : 
      36           6 :         odbc_command("create table #mytab1 (k int, c char(30))");
      37           6 :         odbc_command("insert into #mytab1 values (1,'aaa')");
      38           6 :         odbc_command("insert into #mytab1 values (2,'bbb')");
      39           6 :         odbc_command("insert into #mytab1 values (3,'ccc')");
      40             : 
      41           6 :         odbc_reset_statement();
      42             : /*      CHKSetStmtAttr(SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) SQL_CURSOR_STATIC, 0, "S"); */
      43           6 :         CHKSetStmtAttr(SQL_ATTR_CURSOR_SCROLLABLE, (SQLPOINTER) SQL_SCROLLABLE, SQL_IS_UINTEGER, "S");
      44             : 
      45           6 :         CHKPrepare(T("select k, c from #mytab1 order by k"), SQL_NTS, "SI");
      46             : 
      47           6 :         CHKBindCol(1, SQL_C_LONG, &v_int_3, 0, &v_ind_3_1, "S");
      48           6 :         CHKBindCol(2, SQL_C_CHAR, v_char_3, sizeof(v_char_3), &v_ind_3_2, "S");
      49             : 
      50           6 :         CHKExecute("SI");
      51             : 
      52           6 :         doFetch(SQL_FETCH_LAST, 0, 3);
      53           6 :         doFetch(SQL_FETCH_PRIOR, 0, 2);
      54           6 :         doFetch(SQL_FETCH_PRIOR, 0, 1);
      55           6 :         doFetch(SQL_FETCH_PRIOR, 0, -1);
      56           6 :         doFetch(SQL_FETCH_NEXT, 0, 1);
      57           6 :         doFetch(SQL_FETCH_NEXT, 0, 2);
      58           6 :         doFetch(SQL_FETCH_NEXT, 0, 3);
      59           6 :         doFetch(SQL_FETCH_NEXT, 0, -1);
      60           6 :         doFetch(SQL_FETCH_FIRST, 0, 1);
      61           6 :         doFetch(SQL_FETCH_NEXT, 0, 2);
      62           6 :         doFetch(SQL_FETCH_NEXT, 0, 3);
      63           6 :         doFetch(SQL_FETCH_ABSOLUTE, 3, 3);
      64           6 :         doFetch(SQL_FETCH_RELATIVE, -2, 1);
      65           6 :         doFetch(SQL_FETCH_RELATIVE, -2, -1);
      66           6 :         doFetch(SQL_FETCH_RELATIVE, 5, -1);
      67             : 
      68           6 :         CHKCloseCursor("SI");
      69             : 
      70           6 :         odbc_disconnect();
      71           6 :         return result;
      72             : }

Generated by: LCOV version 1.13