# 2011 November 16
#
# The author disclaims copyright to this source code.  In place of
# a legal notice, here is a blessing:
#
#    May you do good and not evil.
#    May you find forgiveness for yourself and forgive others.
#    May you share freely, never taking more than you give.
#
#***********************************************************************
#
# This file contains test cases for sqlite3_db_release_memory and
# the PRAGMA shrink_memory statement.
#

set testdir [file dirname $argv0]
source $testdir/tester.tcl
test_set_config_pagecache 0 0

unset -nocomplain baseline
do_test shrink-1.1 {
  db eval {
    PRAGMA cache_size = 2000;
    CREATE TABLE t1(x,y);
    INSERT INTO t1 VALUES(randomblob(1000000),1);
  }
  set ::baseline [sqlite3_memory_used]
  # EVIDENCE-OF: R-58814-63508 The sqlite3_db_release_memory(D) interface
  # attempts to free as much heap memory as possible from database
  # connection D.
  sqlite3_db_release_memory db
  expr {$::baseline > [sqlite3_memory_used]+500000}
} {1}
do_test shrink-1.2 {
  set baseline [sqlite3_memory_used]
  db eval {
    UPDATE t1 SET y=y+1;
  }
  expr {$::baseline+500000 < [sqlite3_memory_used]}
} {1}
do_test shrink-1.3 {
  set baseline [sqlite3_memory_used]
  db eval {PRAGMA shrink_memory}
  expr {$::baseline > [sqlite3_memory_used]+500000}
} {1}

test_restore_config_pagecache
finish_test
