Team Ai
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
tests_pager_sqlite3PagerMaxPageCount.c114 linesDownload Raw Back to tests
1#include "sqliteInt.h"2#include "unity.h"3#include <string.h>4#include <stdint.h>5#include <stdlib.h>6 7/* Target under test:8   Pgno sqlite3PagerMaxPageCount(Pager *pPager, Pgno mxPage);9*/10 11void setUp(void) {12  /* No global setup needed */13}14 15void tearDown(void) {16  /* No global teardown needed */17}18 19/* Helper to initialize a Pager with safe defaults for this test */20static void initPagerForTest(Pager *p){21  memset(p, 0, sizeof(*p));22  /* Ensure we are not in PAGER_OPEN state to satisfy the assert in the function.23     Since we may not have the PAGER_* enum here, set to a non-zero value. */24  /* eState is typically a small integer type; assign a non-zero value. */25  /* We intentionally avoid referencing PAGER_OPEN directly. */26  p->eState = 1;27}28 29/* Test: When mxPage > 0, function updates mxPgno and returns new value */30void test_sqlite3PagerMaxPageCount_sets_when_positive(void){31  Pager p;32  initPagerForTest(&p);33  p.mxPgno = (Pgno)100;34 35  Pgno newMax = (Pgno)250;36  Pgno ret = sqlite3PagerMaxPageCount(&p, newMax);37 38  TEST_ASSERT_EQUAL_HEX32(newMax, ret);39  TEST_ASSERT_EQUAL_HEX32(newMax, p.mxPgno);40}41 42/* Test: When mxPage == 0, function does not change mxPgno and returns current value */43void test_sqlite3PagerMaxPageCount_no_change_on_zero(void){44  Pager p;45  initPagerForTest(&p);46  p.mxPgno = (Pgno)300;47 48  Pgno ret = sqlite3PagerMaxPageCount(&p, (Pgno)0);49 50  TEST_ASSERT_EQUAL_HEX32((Pgno)300, ret);51  TEST_ASSERT_EQUAL_HEX32((Pgno)300, p.mxPgno);52}53 54/* Test: Multiple sequential calls mixing zero and positive values */55void test_sqlite3PagerMaxPageCount_sequential_calls(void){56  Pager p;57  initPagerForTest(&p);58  p.mxPgno = (Pgno)0;59 60  /* First set to 10 */61  Pgno ret1 = sqlite3PagerMaxPageCount(&p, (Pgno)10);62  TEST_ASSERT_EQUAL_HEX32((Pgno)10, ret1);63  TEST_ASSERT_EQUAL_HEX32((Pgno)10, p.mxPgno);64 65  /* Call with 0 should not change */66  Pgno ret2 = sqlite3PagerMaxPageCount(&p, (Pgno)0);67  TEST_ASSERT_EQUAL_HEX32((Pgno)10, ret2);68  TEST_ASSERT_EQUAL_HEX32((Pgno)10, p.mxPgno);69 70  /* Increase to 20 */71  Pgno ret3 = sqlite3PagerMaxPageCount(&p, (Pgno)20);72  TEST_ASSERT_EQUAL_HEX32((Pgno)20, ret3);73  TEST_ASSERT_EQUAL_HEX32((Pgno)20, p.mxPgno);74 75  /* Another zero call remains unchanged */76  Pgno ret4 = sqlite3PagerMaxPageCount(&p, (Pgno)0);77  TEST_ASSERT_EQUAL_HEX32((Pgno)20, ret4);78  TEST_ASSERT_EQUAL_HEX32((Pgno)20, p.mxPgno);79}80 81/* Test: Starting from zero, zero input keeps zero */82void test_sqlite3PagerMaxPageCount_zero_initial_zero_input(void){83  Pager p;84  initPagerForTest(&p);85  p.mxPgno = (Pgno)0;86 87  Pgno ret = sqlite3PagerMaxPageCount(&p, (Pgno)0);88 89  TEST_ASSERT_EQUAL_HEX32((Pgno)0, ret);90  TEST_ASSERT_EQUAL_HEX32((Pgno)0, p.mxPgno);91}92 93/* Test: Large value (max Pgno). Ensure it sets and returns correctly */94void test_sqlite3PagerMaxPageCount_sets_max_value(void){95  Pager p;96  initPagerForTest(&p);97  p.mxPgno = (Pgno)123;98 99  Pgno maxPg = (Pgno)(~(Pgno)0); /* All-bits-1 for Pgno type */100  Pgno ret = sqlite3PagerMaxPageCount(&p, maxPg);101 102  TEST_ASSERT_EQUAL_HEX32(maxPg, ret);103  TEST_ASSERT_EQUAL_HEX32(maxPg, p.mxPgno);104}105 106int main(void) {107  UNITY_BEGIN();108  RUN_TEST(test_sqlite3PagerMaxPageCount_sets_when_positive);109  RUN_TEST(test_sqlite3PagerMaxPageCount_no_change_on_zero);110  RUN_TEST(test_sqlite3PagerMaxPageCount_sequential_calls);111  RUN_TEST(test_sqlite3PagerMaxPageCount_zero_initial_zero_input);112  RUN_TEST(test_sqlite3PagerMaxPageCount_sets_max_value);113  return UNITY_END();114}