Example #1
0
// load different test sets
require "cache.php";
require "configuration.php";
require "database.php";
require "model.php";
require "template.php";
// connect to database
require "_options.php";
$database = new Framework\Database($options);
$database = $database->initialize();
$database = $database->connect();
// execute tests
$results = Framework\Test::run(function () use($database) {
    // do nothing
}, function () use($database) {
    $database->execute("DROP TABLE `examples`");
    $database->execute("DROP TABLE `example`");
    $database->execute("DELETE FROM `users` WHERE `email` = \"info@example.com\" AND `password` = \"password\"");
});
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Unit Tests</title>
        <style type="text/css">
            body
            {
                padding: 25px;
                margin: 0;
                font-family: "Helvetica";
                font-size: 12px;
Example #2
0
<?php

Framework\Test::add(function () {
    $configuration = new Framework\Configuration();
    return $configuration instanceof Framework\Configuration;
}, "Configuration instantiates in uninitialized state", "Configuration");
Framework\Test::add(function () {
    $configuration = new Framework\Configuration(array("type" => "ini"));
    $configuration = $configuration->initialize();
    return $configuration instanceof Framework\Configuration\Driver\Ini;
}, "Configuration\\Driver\\Ini initializes", "Configuration\\Driver\\Ini");
Framework\Test::add(function () {
    $configuration = new Framework\Configuration(array("type" => "ini"));
    $configuration = $configuration->initialize();
    $parsed = $configuration->parse("_configuration");
    return $parsed->config->first == "hello" && $parsed->config->second->second == "bar";
}, "Configuration\\Driver\\Ini parses configuration files", "Configuration\\Driver\\Ini");
Example #3
0
    $cache = $cache->connect();
    return $cache->set("foo", "bar", 1) instanceof Framework\Cache\Driver\Memcached;
}, "Cache\\Driver\\Memcached sets values and returns self", "Cache\\Driver\\Memcached");
Framework\Test::add(function () {
    $cache = new Framework\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    return $cache->get("foo") == "bar";
}, "Cache\\Driver\\Memcached retrieves values", "Cache\\Driver\\Memcached");
Framework\Test::add(function () {
    $cache = new Framework\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    return $cache->get("404", "baz") == "baz";
}, "Cache\\Driver\\Memcached returns default values", "Cache\\Driver\\Memcached");
Framework\Test::add(function () {
    $cache = new Framework\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    // we sleep to void the 1 second cache key/value above
    sleep(1);
    return $cache->get("foo") == null;
}, "Cache\\Driver\\Memcached expires values", "Cache\\Driver\\Memcached");
Framework\Test::add(function () {
    $cache = new Framework\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    $cache = $cache->set("hello", "world");
    $cache = $cache->erase("hello");
    return $cache->get("hello") == null && $cache instanceof Framework\Cache\Driver\Memcached;
}, "Cache\\Driver\\Memcached erases values and returns self", "Cache\\Driver\\Memcached");
Example #4
0
    $template->parse("{script \$_text[] = 'foo bar' }");
    $processed = $template->process();
    return $processed == "foo bar";
}, "Template parses script tag", "Template");
Framework\Test::add(function () use($template) {
    $template->parse("\n            {foreach \$number in \$numbers}{echo \$number_i},{echo \$number},{/foreach}");
    $processed = $template->process(array("numbers" => array(1, 2, 3)));
    return trim($processed) == "0,1,1,2,2,3,";
}, "Template parses foreach tag", "Template");
Framework\Test::add(function () use($template) {
    $template->parse("\n            {for \$number in \$numbers}{echo \$number_i},{echo \$number},{/for}\n        ");
    $processed = $template->process(array("numbers" => array(1, 2, 3)));
    return trim($processed) == "0,1,1,2,2,3,";
}, "Template parses for tag", "Template");
Framework\Test::add(function () use($template) {
    $template->parse("\n            {if \$check == \"yes\"}yes{/if}\n            {elseif \$check == \"maybe\"}yes{/elseif}\n            {else}yes{/else}\n        ");
    $yes = $template->process(array("check" => "yes"));
    $maybe = $template->process(array("check" => "maybe"));
    $no = $template->process(array("check" => null));
    return $yes == $maybe && $maybe == $no;
}, "Template parses if, else and elseif tags", "Template");
Framework\Test::add(function () use($template) {
    $template->parse("\n            {macro foo(\$number)}\n                {echo \$number + 2}\n            {/macro}\n            \n            {echo foo(2)}\n        ");
    $processed = $template->process();
    return $processed == 4;
}, "Template parses macro tag", "Template");
Framework\Test::add(function () use($template) {
    $template->parse("\n            {literal}\n                {echo \"hello world\"}\n            {/literal}\n        ");
    $processed = $template->process();
    return trim($processed) == "{echo \"hello world\"}";
}, "Template parses literal tag", "Template");
Example #5
0
    $rows = $database->query()->from("tests", array("id" => "foo"))->all();
    return sizeof($rows) && isset($rows[0]["foo"]) && $rows[0]["foo"] == 1;
}, "Database\\Query\\Mysql can alias fields", "Database\\Query\\Mysql");
Framework\Test::add(function () use($options) {
    $database = new Framework\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $rows = $database->query()->from("tests", array("tests.id" => "foo"))->join("tests AS baz", "tests.id = baz.id", array("baz.id" => "bar"))->all();
    return sizeof($rows) && $rows[0]->foo == $rows[0]->bar;
}, "Database\\Query\\Mysql can join tables and alias joined fields", "Database\\Query\\Mysql");
Framework\Test::add(function () use($options) {
    $database = new Framework\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $result = $database->query()->from("tests")->save(array("number" => 3, "text" => "foo", "boolean" => true));
    return $result == 5;
}, "Database\\Query\\Mysql can insert rows", "Database\\Query\\Mysql");
Framework\Test::add(function () use($options) {
    $database = new Framework\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $result = $database->query()->from("tests")->where("id = ?", 5)->save(array("number" => 3, "text" => "foo", "boolean" => false));
    return $result == 0;
}, "Database\\Query\\Mysql can update rows", "Database\\Query\\Mysql");
Framework\Test::add(function () use($options) {
    $database = new Framework\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $database->query()->from("tests")->delete();
    return $database->query()->from("tests")->count() == 0;
}, "Database\\Query\\Mysql can delete rows", "Database\\Query\\Mysql");
Example #6
0
     */
    protected $_created;
}
Framework\Test::add(function () use($database) {
    $example = new Example();
    return $database->sync($example) instanceof Framework\Database\Connector\Mysql;
}, "Model syncs", "Model");
Framework\Test::add(function () use($database) {
    $example = new Example(array("name" => "foo", "created" => date("Y-m-d H:i:s")));
    return $example->save() > 0;
}, "Model inserts rows", "Model");
Framework\Test::add(function () use($database) {
    return Example::count() == 1;
}, "Model fetches number of rows", "Model");
Framework\Test::add(function () use($database) {
    $example = new Example(array("name" => "foo", "created" => date("Y-m-d H:i:s")));
    $example->save();
    $example->save();
    $example->save();
    return Example::count() == 2;
}, "Model saves single row multiple times", "Model");
Framework\Test::add(function () use($database) {
    $example = new Example(array("id" => 1, "name" => "hello", "created" => date("Y-m-d H:i:s")));
    $example->save();
    return Example::first()->name == "hello";
}, "Model updates rows", "Model");
Framework\Test::add(function () use($database) {
    $example = new Example(array("id" => 2));
    $example->delete();
    return Example::count() == 1;
}, "Model deletes rows", "Model");