- Added tests suite for haanga-cli.php
[haanga.git] / tests / templateTest.php
blobbb01f976ab46c8cf1f004be49d5d7213ca4cea9c
1 <?php
3 class templateTest extends PHPUnit_Framework_TestCase
5 public function testInit()
7 /* setup */
8 @mkdir("tmp/");
9 Haanga::setCacheDir("tmp/");
10 Haanga::setTemplateDir(".");
11 Haanga::enableDebug(TRUE);
12 foreach (glob("tmp/*") as $file) {
13 unlink($file);
17 /**
18 * @dataProvider tplProvider
20 public function testRuntime($test_file, $data, $expected)
22 $output = Haanga::Load($test_file, $data, TRUE);
23 /*$output = str_replace(" ", '\s', $output);
24 $expected = str_replace(" ", '\s', $expected);/**/
25 $this->assertEquals($output, $expected);
28 /**
29 * @dataProvider tplProvider
31 public function testIsCached($test_file, $data, $expected)
33 /* same as above, but we ensure that the file wasn't compiled */
34 $output = Haanga::Load($test_file, $data, TRUE);
35 $this->assertEquals($output, $expected);
36 $this->assertFalse(Haanga::$has_compiled);
40 /**
41 * @dataProvider tplProvider
43 public function testCompiler($test_file, $data, $expected)
45 $GLOBALS['argv'][1] = $test_file;
46 $GLOBALS['argv'][2] = '--notags';
47 $GLOBALS['argv'][3] = '--save';
49 ob_start();
50 Haanga_Compiler::main_cli();
51 $code = ob_get_clean();
53 eval($code);
55 $file = basename($test_file);
56 $pos = strpos($file,'.');
57 $function = substr($file, 0, $pos).'_template';
58 $output = call_user_func($function, $data, TRUE);
60 if ($output != $expected) {
61 die($code);
63 $this->assertEquals($output, $expected);
66 public function tplProvider()
68 $datas = array();
69 foreach (glob("assert_templates/*.tpl") as $test_file) {
70 $data = array();
71 $data_file = substr($test_file, 0, -3)."php";
72 $expected = substr($test_file, 0, -3)."html";
73 if (!is_file($expected)) {
74 if (!is_file($expected.".php")) {
75 continue;
77 $expected .= ".php";
78 ob_start();
79 require $expected;
80 $expected = ob_get_clean();
81 } else {
82 $expected = file_get_contents($expected);
85 if (is_file($data_file)) {
86 include $data_file;
88 $datas[] = array($test_file, $data, $expected);
91 return $datas;