<?php

THCFrame\Core\Test::add(function () {
    $configuration = new THCFrame\Configuration\Configuration();
    return $configuration instanceof THCFrame\Configuration\Configuration;
}, "Configuration instantiates in uninitialized state", "Configuration");
THCFrame\Core\Test::add(function () {
    $configuration = new THCFrame\Configuration\Configuration(array("type" => "ini"));
    $configuration = $configuration->initialize();
    return $configuration instanceof THCFrame\Configuration\Driver\Ini;
}, "Configuration\\Driver\\Ini initializes", "Configuration\\Driver\\Ini");
THCFrame\Core\Test::add(function () {
    $configuration = new THCFrame\Configuration\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");
    $processed = $template->process();
    return $processed == "foo bar";
}, "Template parses script tag", "Template");
THCFrame\Core\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");
THCFrame\Core\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");
THCFrame\Core\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");
THCFrame\Core\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");
THCFrame\Core\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");
unset($template);
    return sizeof($rows) && isset($rows[0]["foo"]) && $rows[0]["foo"] == 1;
}, "Database\\Query\\Mysql can alias fields", "Database\\Query\\Mysql");
THCFrame\Core\Test::add(function () use($options) {
    $database = new THCFrame\Database\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $rows = $database->query()->from("tb_example", array("tb_example.id" => "foo"))->join("tb_example AS baz", "tb_example.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");
THCFrame\Core\Test::add(function () use($options) {
    $database = new THCFrame\Database\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $result = $database->query()->from("tb_example")->save(array("number" => 3, "text" => "foo", "boolean" => true));
    return $result == 5;
}, "Database\\Query\\Mysql can insert rows", "Database\\Query\\Mysql");
THCFrame\Core\Test::add(function () use($options) {
    $database = new THCFrame\Database\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $result = $database->query()->from("tb_example")->where("id = ?", 5)->save(array("number" => 3, "text" => "foo", "boolean" => false));
    return $result == 0;
}, "Database\\Query\\Mysql can update rows", "Database\\Query\\Mysql");
THCFrame\Core\Test::add(function () use($options) {
    $database = new THCFrame\Database\Database($options);
    $database = $database->initialize();
    $database = $database->connect();
    $database->query()->from("tb_example")->delete();
    return $database->query()->from("tb_example")->count() == 0;
}, "Database\\Query\\Mysql can delete rows", "Database\\Query\\Mysql");
unset($options);
예제 #4
0
// load different test sets
require "./_cache.php";
require "./_configuration.php";
require "./_database.php";
require "./_model.php";
require "./_template.php";
require "./_forms.php";
require "./_functions.php";
// connect to database
$database = new THCFrame\Database\Database(array("type" => "mysql", "options" => array("host" => "localhost", "username" => "root", "password" => "", "schema" => "frametest")));
$database = $database->initialize();
$database = $database->connect();
// execute tests
$results = THCFrame\Core\Test::run(function () use($database) {
    // do nothing
}, function () use($database) {
    $database->execute("DROP TABLE `tb_example`");
    $database->execute("DELETE FROM `user` WHERE `email` = \"info@tb_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;
                color: #333;
예제 #5
0
<?php

$get = function ($url) {
    $request = new THCFrame\Request\Request();
    return $request->get("http://" . $_SERVER["HTTP_HOST"] . "/{$url}");
};
$has = function ($html, $fields) {
    foreach ($fields as $field) {
        if (!stristr($html, "name=\"{$field}\"")) {
            return false;
        }
    }
    return true;
};
THCFrame\Core\Test::add(function () use($get, $has) {
    $html = $get("register");
    $status = $has($html, array("first", "last", "email", "password", "photo", "register"));
    return $status;
}, "Register form has required fields", "Forms/Users");
THCFrame\Core\Test::add(function () use($get, $has) {
    $html = $get("login");
    $status = $has($html, array("email", "password", "login"));
    return $status;
}, "Login form has required fields", "Forms/Users");
<?php

$post = function ($url, $data) {
    $request = new THCFrame\Request\Request();
    return $request->post("http://" . $_SERVER["HTTP_HOST"] . "/{$url}", $data);
};
THCFrame\Core\Test::add(function () use($post) {
    $html = $post("register", array("first" => "Hello", "last" => "World", "email" => "*****@*****.**", "password" => "password", "register" => "register"));
    return stristr($html, "Your account has been created!");
}, "Register form creates user", "Functions/Users");
THCFrame\Core\Test::add(function () use($post) {
    $html = $post("login", array("email" => "*****@*****.**", "password" => "password", "login" => "login"));
    return stristr($html, "Location: /");
}, "Login form creates user session + redirect to profile", "Functions/Users");
예제 #7
0
    protected $_created;
}
THCFrame\Core\Test::add(function () use($database) {
    $example = new Example();
    return $database->sync($example) instanceof THCFrame\Database\Connector\Mysql;
}, "Model syncs", "Model");
THCFrame\Core\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");
THCFrame\Core\Test::add(function () use($database) {
    return Example::count() == 1;
}, "Model fetches number of rows", "Model");
THCFrame\Core\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");
THCFrame\Core\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");
THCFrame\Core\Test::add(function () use($database) {
    $example = new Example(array("id" => 2));
    $example->delete();
    return Example::count() == 1;
}, "Model deletes rows", "Model");
unset($database);
예제 #8
0
    return $cache->set("foo", "bar", 5) instanceof THCFrame\Cache\Driver\Memcached;
}, "Cache\\Driver\\Memcached sets values and returns self", "Cache\\Driver\\Memcached");
THCFrame\Core\Test::add(function () {
    $cache = new THCFrame\Cache\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    $value = $cache->get("foo");
    return $cache->get("foo") == "bar";
}, "Cache\\Driver\\Memcached retrieves values: {$value}", "Cache\\Driver\\Memcached");
THCFrame\Core\Test::add(function () {
    $cache = new THCFrame\Cache\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");
THCFrame\Core\Test::add(function () {
    $cache = new THCFrame\Cache\Cache(array("type" => "memcached"));
    $cache = $cache->initialize();
    $cache = $cache->connect();
    // we sleep to void the 5 second cache key/value above
    sleep(5);
    return $cache->get("foo") == null;
}, "Cache\\Driver\\Memcached expires values", "Cache\\Driver\\Memcached");
THCFrame\Core\Test::add(function () {
    $cache = new THCFrame\Cache\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 THCFrame\Cache\Driver\Memcached;
}, "Cache\\Driver\\Memcached erases values and returns self", "Cache\\Driver\\Memcached");