Example #1
0
  void createInsertCloseReopenCursorTest(void)
  {
    ups_key_t key = {};
    ups_record_t rec = {};
    ups_cursor_t *cursor;
    RecnoType recno, value = 1;

    key.flags = UPS_KEY_USER_ALLOC;
    key.data = &recno;
    key.size = sizeof(recno);

    rec.data = &value;
    rec.size = sizeof(value);

    REQUIRE(0 == ups_cursor_create(&cursor, db, 0, 0));

    for (int i = 0; i < 5; i++) {
      REQUIRE(0 == ups_cursor_insert(cursor, &key, &rec, 0));
      REQUIRE(recno == (RecnoType)i + 1);
    }

    REQUIRE(0 == ups_cursor_close(cursor));
    reopen();
    REQUIRE(0 == ups_cursor_create(&cursor, db, 0, 0));

    for (int i = 5; i < 10; i++) {
      REQUIRE(0 == ups_cursor_insert(cursor, &key, &rec, 0));
      REQUIRE(recno == (RecnoType)i + 1);
    }

    REQUIRE(0 == ups_cursor_close(cursor));
  }
Example #2
0
  void overwriteCursorTest() {
    ups_key_t key = {};
    ups_record_t rec = {};
    RecnoType recno, value;
    ups_cursor_t *cursor;

    REQUIRE(0 == ups_cursor_create(&cursor, db, 0, 0));

    key.data = &recno;
    key.flags = UPS_KEY_USER_ALLOC;
    key.size = sizeof(recno);
    REQUIRE(0 == ups_cursor_insert(cursor, &key, &rec, 0));

    value = 0x13ull;
    memset(&rec, 0, sizeof(rec));
    rec.data = &value;
    rec.size = sizeof(value);
    REQUIRE(0 == ups_cursor_insert(cursor, &key, &rec, UPS_OVERWRITE));

    memset(&rec, 0, sizeof(rec));
    REQUIRE(0 == ups_db_find(db, 0, &key, &rec, 0));

    REQUIRE(value == *(RecnoType *)rec.data);

    REQUIRE(0 == ups_cursor_close(cursor));
  }
Example #3
0
  void insertBadKeyCursorTest() {
    ups_key_t key = {};
    ups_record_t rec = {};
    ups_cursor_t *cursor;
    RecnoType recno;

    REQUIRE(0 == ups_cursor_create(&cursor, db, 0, 0));

    key.flags = 0;
    key.data = &recno;
    key.size = sizeof(recno);
    REQUIRE(UPS_INV_PARAMETER == ups_cursor_insert(cursor, &key, &rec, 0));

    key.data = 0;
    key.size = sizeof(RecnoType);
    REQUIRE(UPS_INV_PARAMETER == ups_cursor_insert(cursor, &key, &rec, 0));

    REQUIRE(UPS_INV_PARAMETER == ups_cursor_insert(cursor, 0, &rec, 0));

    key.data = 0;
    key.size = 0;
    REQUIRE(0 == ups_cursor_insert(cursor, &key, &rec, 0));
    REQUIRE((RecnoType)1ull == *(RecnoType *)key.data);

    REQUIRE(0 == ups_cursor_close(cursor));
  }
Example #4
0
 /** Closes the Cursor. */
 void close() {
   if (!m_cursor)
     return;
   ups_status_t st = ups_cursor_close(m_cursor);
   if (st)
     throw error(st);
   m_cursor = 0;
 }