<?php

require_once('tpl/compiler.phps');

class 
TestCompiler extends UnitTestCase {

    function 
setUp()    {
        
$this->obj      =&  new Compiler();
    }

    function 
testVariableCreation() {
        
$this->assertEqual($this->obj->_create_variable(), 'value1');
        
$this->assertEqual($this->obj->_create_variable(), 'value2');
    }

    function 
testVariables()    {
        
$this->obj->tpl =   (object) array(
            
'template'  =>  '{$test}',
        );
        
$this->assertEqual($this->obj->_parse_variables('{$test}'),
            
'<?php echo $record->_get(\'test\'); ?>');
    }
    
    function 
testConditionals() {
        
$tpl    =   '<tpl:default src="test">Test</tpl:default>';
        
$result =   '<?php if (!$record->_isset(\'test\') ): ?>Test<?php endif; ?>';
        
$this->assertEqual($this->obj->_parse_conditionals($tpl), $result);
        
        
$tpl    =   '<tpl:optional src="test">Test</tpl:optional>';
        
$result =   '<?php if ($record->_isset(\'test\') ): ?>Test<?php endif; ?>';
        
$this->assertEqual($this->obj->_parse_conditionals($tpl), $result);
    }
    
    function 
testLoops()    {
        
$tpl    =   array(
            
0   =>  '<tpl:list src="test"><tpl:item>Item</tpl:item><tpl:default />Default</tpl:list>',
            
1   =>  '<tpl:list src="test">',
            
2   =>  'test',
            
3   =>  '<tpl:item>Item</tpl:item><tpl:default />Default',
        );
        
$result =   '<?php if ($record->_isset(\'test\') ): ?><?php foreach($record->_get(\'test\') as $value1): ?>Item<?php endforeach; ?><?php else: ?>Default<?php endif; ?>';
        
$this->assertEqual($this->obj->_parse_loops($tpl), $result);
    }

    function 
testInclude()  {
        
$this->obj->tpl    =   (object) array(
            
'template'  =>  '<tpl:include src="test.html" />',
        );
        
$this->expectError('File \'test.html\' does not exist, or could not be read');
        
$this->obj->_parse_includes();
    }
}

?>