The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#===============================================================================
#
#  DESCRIPTION:  Test lexer
#
#       AUTHOR:  Aliaksandr P. Zahatski, <zahatski@gmail.com>
#===============================================================================
#$Id$
package T::WebDAO::Lex;
use strict;
use warnings;
use Test;
use base 'Test';
use Test::More;
use Data::Dumper;
use WebDAO::Lex;

sub setup: Test(setup=>+0) {
    my $t =shift;
    $t->{l} = new WebDAO::Lex::;
    return $t->SUPER::setup(@_);
}
sub t01_split_html:Test(4) {
    my $t= shift;
    my $r1 =  $t->{l}->split_template(<<T1);
  <!-- <wd:pre_fetch>-->
Textext1 Testxt1   <!-- </wd:pre_fetch>-->
  <!-- <wd:post_fetch>-->
  <div id="footer">
   <p>Footer of page</p>
  </div>
  <!-- </wd:post_fetch>-->
T1
   is_deeply [ map{ref($_)} @$r1] , [
          'SCALAR',
          '',
          'SCALAR'
        ], 'tmpl:empty fetch';

    my $r2 =  $t->{l}->split_template(<<T1);
Textext1 Testxt1
  <!-- <wd:fetch>-->
  <div id="footer">
   <p>Footer of page</p>
  </div>
  <!-- </wd:fetch>-->
test
T1
   is_deeply [ map{ref($_)} @$r2] ,[
          'SCALAR',
          'SCALAR',
          'SCALAR'

   ], 'tmpl:only defined wd:fetch in text';

    my $r3 =  $t->{l}->split_template(<<T1);
Textext1 Testxt1
  <!-- <wd:fetch>-->
  <div id="footer">
   <p>Footer of page</p>
  </div>
  <!-- </wd:fetch>-->
T1
   is_deeply [ map{ref($_)} @$r3] ,[
          'SCALAR',
          'SCALAR',
          ''

   ], 'tmpl:empty post';

    my $r4 =  $t->{l}->split_template(<<T1);
Textext1 Testxt1
  <div id="footer">
   <p>Footer of page</p>
  </div>
T1
   is_deeply [ map{ref($_)} @$r4] ,[
          '',
          'SCALAR',
          ''

   ], 'tmpl: empty pre and post';
}

sub  t04_buld_scene :Test(2) {
    my $t =shift;
    my $lex = new WebDAO::Lex:: tmpl=><<T1;
Textext1 Testxt1
  <!-- <wd:fetch>-->
  <div id="footer">
   <p>Footer of page</p>
  </div>
  <!-- </wd:fetch>-->
test
T1
    my $eng2 = new WebDAO::Engine:: session=> $t->{tlib}->get_session, lex=>$lex ;
    is_deeply $t->{tlib}->tree($eng2), {
          ':WebDAO::Engine' => [
                                 {
                                   'none:WebDAO::Lib::RawHTML' => []
                                 },
                                 {
                                   'none:WebDAO::Lib::RawHTML' => []
                                 },
                                 {
                                   'none:WebDAO::Lib::RawHTML' => []
                                 }
                               ]
        },'parse pre, fetch post';

    $eng2->_set_childs_();
    is_deeply $t->{tlib}->tree($eng2),{
          ':WebDAO::Engine' => [
                                 {
                                   'none:WebDAO::Lib::RawHTML' => []
                                 },
                                 {
                                   'none:WebDAO::Lib::RawHTML' => []
                                 }
                               ]
        },'check pre and post';
}

sub t05_wd_in_pre :Test(no_plan) {
    my $t= shift;
    my $lex = new WebDAO::Lex::;
    my $tmpl=<<T1;
Textext1 <wd><object id="ed" class="WebDAO"/></wd>Testxt1
  <!-- <wd:fetch>-->
  <div id="footer">
   <p>Footer of page</p>
  </div>
  <!-- </wd:fetch>-->
test
T1
#    my $eng2 = new WebDAO::Engine:: session=> $t->{tlib}->get_session, lex=>$lex ;
#    diag Dumper $lex->split_template($tmpl);
    diag Dumper $lex->_parsed_template_($tmpl);
#    is_deeply $t->{tlib}->tree($eng2), {

}
1;