summaryrefslogtreecommitdiff
path: root/test/test_classes.php
diff options
context:
space:
mode:
authorJamie Matthews <[email protected]>2010-02-13 02:59:59 +0000
committerJamie Matthews <[email protected]>2010-02-13 02:59:59 +0000
commit4973256bb5a2d280619025aabe4f0c045bbe6e38 (patch)
tree0ad3351c67d155ca61c4086464e8a7665fff9222 /test/test_classes.php
parent3a4226da73bf0b4a375d003616d94e119056fff9 (diff)
Initial commit of tests
Diffstat (limited to 'test/test_classes.php')
-rw-r--r--test/test_classes.php122
1 files changed, 122 insertions, 0 deletions
diff --git a/test/test_classes.php b/test/test_classes.php
new file mode 100644
index 0000000..15f3c77
--- /dev/null
+++ b/test/test_classes.php
@@ -0,0 +1,122 @@
+<?php
+
+ /**
+ *
+ * Mock database classes implementing a subset
+ * of the PDO API. Used for testing Idiorm.
+ *
+ */
+
+ class DummyStatement {
+
+ private $query = '';
+ private $input_parameters = array();
+ private $current_row = 1;
+
+ public function __construct($statement) {
+ $this->query = $statement;
+ }
+
+ public function execute($input_parameters=array()) {
+ $this->input_parameters = $input_parameters;
+ }
+
+ public function fetch($fetch_style) {
+ if ($this->current_row == 5) {
+ return false;
+ } else {
+ $this->current_row++;
+ return array('name' => 'Fred', 'age' => 10, 'id' => '1');
+ }
+ }
+
+ public function get_query() {
+ return $this->query;
+ }
+
+ public function get_parameters() {
+ return $this->input_parameters;
+ }
+
+ public function get_bound_query() {
+ $sql = $this->get_query();
+ $sql = str_replace("?", "%s", $sql);
+
+ $quoted_values = array();
+ $values = $this->get_parameters();
+ foreach ($values as $value) {
+ $quoted_values[] = '"' . $value . '"';
+ }
+ return vsprintf($sql, $quoted_values);
+ }
+
+ }
+
+ class DummyPDO {
+
+ private $last_query;
+
+ public function __construct($connection_string="") {
+ }
+
+ public function setAttribute($attribute, $value) {
+ }
+
+ public function prepare($statement) {
+ $this->last_query = new DummyStatement($statement);
+ return $this->last_query;
+ }
+
+ public function lastInsertId() {
+ return 0;
+ }
+
+ public function get_last_query() {
+ return $this->last_query->get_bound_query();
+ }
+ }
+
+ /**
+ * Class to provide simple testing functionality
+ */
+ class Tester {
+
+ private static $passed_tests = array();
+ private static $failed_tests = array();
+ private static $db;
+
+ public static function set_db($db) {
+ self::$db = $db;
+ }
+
+ private static function report_pass($test_name) {
+ echo "<p>PASS: $test_name</p>";
+ self::$passed_tests[] = $test_name;
+ }
+
+ private static function report_failure($test_name, $query) {
+ echo "<p>FAIL: $test_name</p>";
+ echo "<p>Expected: $query</p>";
+ echo "<p>Actual: " . self::$db->get_last_query() . "</p>";
+ self::$failed_tests[] = $test_name;
+ }
+
+ public static function report() {
+ $passed_count = count(self::$passed_tests);
+ $failed_count = count(self::$failed_tests);
+ echo "<p>$passed_count tests passed. $failed_count tests failed.</p>";
+
+ if ($failed_count != 0) {
+ echo "<p>Failed tests: " . join(", ", self::$failed_tests) . "</p>";
+ }
+ }
+
+ public static function check_equal($test_name, $query) {
+ $last_query = self::$db->get_last_query();
+ if ($query == self::$db->get_last_query()) {
+ self::report_pass($test_name);
+ } else {
+ self::report_failure($test_name, $query);
+ }
+ }
+ }