Various tests for the sqlite ext.

The sqlite session tests are by Mats Lindh <mats at lindh.no>.
This commit is contained in:
Felix De Vliegher 2008-10-29 11:43:33 +00:00
parent 436018a0b7
commit ac24f7ecfe
8 changed files with 334 additions and 0 deletions

View file

@ -0,0 +1,34 @@
--TEST--
Test sqlite_exec() function : basic functionality
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
--FILE--
<?php
/* Prototype : boolean sqlite_exec(string query, resource db[, string &error_message])
* Description: Executes a result-less query against a given database
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
echo "*** Testing sqlite_exec() : basic functionality ***\n";
// set up variables
$query = 'CREATE TABLE foobar (id INTEGER PRIMARY KEY, name CHAR(255));';
$error_message = null;
// procedural
$db = sqlite_open(':memory:');
var_dump( sqlite_exec($db, $query) );
sqlite_close($db);
// oo-style
$db = new SQLiteDatabase(':memory:');
var_dump( $db->queryExec($query, $error_message) );
?>
===DONE===
--EXPECTF--
*** Testing sqlite_exec() : basic functionality ***
bool(true)
bool(true)
===DONE===

View file

@ -0,0 +1,44 @@
--TEST--
Test sqlite_exec() function : error behaviour and functionality
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
--FILE--
<?php
/* Prototype : boolean sqlite_exec(string query, resource db[, string &error_message])
* Description: Executes a result-less query against a given database
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
echo "*** Testing sqlite_exec() : error functionality ***\n";
// set up variables
$fail = 'CRE ATE TABLE';
$error_message = null;
// procedural
$db = sqlite_open(':memory:');
var_dump( sqlite_exec($db, $fail, $error_message) );
var_dump( $error_message );
var_dump( sqlite_exec($db) );
sqlite_close($db);
// oo-style
$db = new SQLiteDatabase(':memory:');
var_dump( $db->queryExec($fail, $error_message, 'fooparam') );
?>
===DONE===
--EXPECTF--
*** Testing sqlite_exec() : error functionality ***
Warning: sqlite_exec(): near "CRE": syntax error in %s on line %d
bool(false)
%string|unicode%(24) "near "CRE": syntax error"
Warning: sqlite_exec() expects at least 2 parameters, 1 given in %s on line %d
NULL
Warning: SQLiteDatabase::queryExec() expects at most 2 parameters, 3 given in %s on line %d
NULL
===DONE===

View file

@ -0,0 +1,48 @@
--TEST--
Test sqlite_last_error() function : basic functionality
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
--FILE--
<?php
/* Prototype : int sqlite_last_error(resource db)
* Description: Returns the error code of the last error for a database.
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
echo "*** Testing sqlite_last_error() : basic functionality ***\n";
// set up variables
$query = 'CREATE TAB LE foobar (id INTEGER PRIMARY KEY, name CHAR(255));';
$query_ok = 'CREATE TABLE foobar (id INTEGER, name CHAR(255));';
// procedural
$db = sqlite_open(':memory:');
var_dump( sqlite_last_error($db) === SQLITE_OK );
sqlite_exec($db, $query);
var_dump( sqlite_last_error($db) === SQLITE_ERROR );
sqlite_exec($db, $query_ok);
var_dump( sqlite_last_error($db) === SQLITE_OK );
sqlite_close($db);
// oo-style
$db = new SQLiteDatabase(':memory:');
$db->queryExec($query);
var_dump( $db->lastError() === SQLITE_ERROR );
$db->queryExec($query_ok);
var_dump( $db->lastError() === SQLITE_OK );
?>
===DONE===
--EXPECTF--
*** Testing sqlite_last_error() : basic functionality ***
bool(true)
Warning: sqlite_exec(): near "TAB": syntax error in %s on line %d
bool(true)
bool(true)
Warning: SQLiteDatabase::queryExec(): near "TAB": syntax error in %s on line %d
bool(true)
bool(true)
===DONE===

View file

@ -0,0 +1,47 @@
--TEST--
Test sqlite_last_error() function : error conditions
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
--FILE--
<?php
/* Prototype : int sqlite_last_error(resource db)
* Description: Returns the error code of the last error for a database.
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
echo "*** Testing sqlite_last_error() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing sqlite_last_error() function with Zero arguments --\n";
var_dump( sqlite_last_error() );
//Test sqlite_last_error with one more than the expected number of arguments
echo "\n-- Testing sqlite_last_error() function with more than expected no. of arguments --\n";
$db = sqlite_open(':memory:');
$extra_arg = 10;
var_dump( sqlite_last_error($db, $extra_arg) );
sqlite_close($db);
$db = new SQLiteDatabase(':memory:');
var_dump( $db->lastError($extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing sqlite_last_error() : error conditions ***
-- Testing sqlite_last_error() function with Zero arguments --
Warning: sqlite_last_error() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing sqlite_last_error() function with more than expected no. of arguments --
Warning: sqlite_last_error() expects exactly 1 parameter, 2 given in %s on line %d
NULL
Warning: SQLiteDatabase::lastError() expects exactly 0 parameters, 1 given in %s on line %d
NULL
===DONE===

View file

@ -0,0 +1,27 @@
--TEST--
SQLite: sqlite_popen() basic tests
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip"; ?>
--FILE--
<?php
/* Prototype : resource sqlite_popen(string filename [, int mode [, string &error_message]])
* Description: Opens a persistent handle to a SQLite database. Will create the database if it does not exist.
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
$db1 = sqlite_popen(":memory:");
$db2 = sqlite_popen(":memory:");
var_dump($db1);
var_dump($db2);
list($resourceId1) = sscanf((string) $db1, "resource(%d) of type (sqlite database (persistent))");
list($resourceId2) = sscanf((string) $db2, "resource(%d) of type (sqlite database (persistent))");
var_dump($resourceId1 === $resourceId2);
?>
--EXPECTF--
resource(%d) of type (sqlite database (persistent))
resource(%d) of type (sqlite database (persistent))
bool(true)

View file

@ -0,0 +1,34 @@
--TEST--
Test sqlite_popen() function : error conditions
--SKIPIF--
<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
--FILE--
<?php
/* Prototype : resource sqlite_popen(string filename [, int mode [, string &error_message]])
* Description: Opens a persistent handle to a SQLite database. Will create the database if it does not exist.
* Source code: ext/sqlite/sqlite.c
* Alias to functions:
*/
$message = '';
echo "*** Testing sqlite_popen() : error conditions ***\n";
var_dump( sqlite_popen() );
var_dump( sqlite_popen(":memory:", 0666, $message, 'foobar') );
var_dump( sqlite_popen("", 0666, $message) );
var_dump( $message );
?>
===DONE===
--EXPECTF--
*** Testing sqlite_popen() : error conditions ***
Warning: sqlite_popen() expects at least 1 parameter, 0 given in %s on line %d
NULL
Warning: sqlite_popen() expects at most 3 parameters, 4 given in %s on line %d
NULL
bool(false)
NULL
===DONE===

View file

@ -0,0 +1,46 @@
--TEST--
sqlite, session storage test
--CREDITS--
Mats Lindh <mats at lindh.no>
#Testfest php.no
--INI--
session.save_handler = sqlite
--SKIPIF--
if (!extension_loaded("session"))
{
die("skip Session module not loaded");
}
if (!extension_loaded("sqlite"))
{
die("skip Session module not loaded");
}
--FILE--
<?php
/* Description: Tests that sqlite can be used as a session save handler
* Source code: ext/sqlite/sess_sqlite.c
*/
ob_start();
session_save_path(__DIR__ . "/sessiondb.sdb");
// create the session and set a session value
session_start();
$_SESSION["test"] = "foo_bar";
// close the session and unset the value
session_write_close();
unset($_SESSION["test"]);
var_dump(isset($_SESSION["test"]));
// start the session again and check that we have the proper value
session_start();
var_dump($_SESSION["test"]);
ob_end_flush();
?>
--EXPECTF--
bool(false)
%unicode|string%(7) "foo_bar"
--CLEAN--
<?php
unlink(__DIR__ . "/sessiondb.sdb")
?>

View file

@ -0,0 +1,54 @@
--TEST--
sqlite, session destroy test
--CREDITS--
Mats Lindh <mats at lindh.no>
#Testfest php.no
--INI--
session.save_handler = sqlite
--SKIPIF--
if (!extension_loaded("session"))
{
die("skip Session module not loaded");
}
if (!extension_loaded("sqlite"))
{
die("skip sqlite module not loaded");
}
--FILE--
<?php
/* Description: Tests that sqlite will destroy a session when used as a session handler
* Source code: ext/sqlite/sess_sqlite.c
*/
ob_start();
session_save_path(__DIR__ . "/sessiondb.sdb");
// start a session and save a value to it before commiting the session to the database
session_start();
$_SESSION["test"] = "foo_bar";
session_write_close();
// remove the session value
unset($_SESSION["test"]);
var_dump(isset($_SESSION["test"]));
// start the session again and destroy it
session_start();
var_dump($_SESSION["test"]);
session_destroy();
session_write_close();
unset($_SESSION["test"]);
// check that the session has been destroyed
session_start();
var_dump(isset($_SESSION["test"]));
ob_end_flush();
?>
--EXPECTF--
bool(false)
%unicode|string%(7) "foo_bar"
bool(false)
--CLEAN--
<?php
unlink(__DIR__ . "/sessiondb.sdb")
?>