// This file is focused on testing the pcache module.
// pcache2.test
using Xunit;
public class PCache2 : TesterBase
{
    // Set up a pcache memory pool so that we can easily track how many pages are being used for cache.
    [Fact]
    public void T1()
    {
        do_test("pcache2-1.1", () =>
        {
            //db close;
            //sqlite3_reset_auto_extension;
            //sqlite3_shutdown;
            //sqlite3_config_pagecache 6000 100;
            //sqlite3_initialize;
            //autoinstall_test_functions;
            //sqlite3_status SQLITE_STATUS_PAGECACHE_USED 1;
            //sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0;
        }, "0 0 0");

        // Open up two database connections to separate files.
        do_test("pcache2-1.2", () =>
        {
            forcedelete("test.db", "test.db-journal");
            //sqlite3(db, "test.db");
            //db eval {PRAGMA cache_size=10};
            //lindex [sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0] 1;
        }, "2");
        do_test("pcache2-1.3", () =>
        {
            forcedelete("test2.db", "test2.db-journal");
            //sqlite3 db2 test2.db;
            //db2 eval {PRAGMA cache_size=50};
            //lindex [sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0] 1;
        }, "4");

        // Make lots of changes on the first connection.  Verify that the page cache usage does not grow to consume the page space set aside
        // for the second connection.
        do_test("pcache2-1.4", () =>
        {
            //db eval "
            //   CREATE TABLE t1(a,b);
            //   CREATE TABLE t2(x,y);
            //   INSERT INTO t1 VALUES(1, zeroblob(800));
            //   INSERT INTO t1 VALUES(2, zeroblob(800));
            //   INSERT INTO t2 SELECT * FROM t1;
            //   INSERT INTO t1 SELECT x+2, y FROM t2;
            //   INSERT INTO t2 SELECT a+10, b FROM t1;
            //   INSERT INTO t1 SELECT x+10, y FROM t2;
            //   INSERT INTO t2 SELECT a+100, b FROM t1;
            //   INSERT INTO t1 SELECT x+100, y FROM t2;
            //   INSERT INTO t2 SELECT a+1000, b FROM t1;
            //   INSERT INTO t1 SELECT x+1000, y FROM t2;
            //";
            //sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0;
        }, "0 13 13");

        //db close
        //catch {db2 close}
        //sqlite3_reset_auto_extension
        //sqlite3_shutdown
        //sqlite3_config_pagecache 0 0
        //sqlite3_initialize
        //autoinstall_test_functions
    }
}