The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Template-CTemplate.t'

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More tests => 12;
use Template::CTemplate;
BEGIN { 
  use_ok('Template::CTemplate::Template');
  use_ok('Template::CTemplate::Dictionary');
};

Dictionary: {
  my $dict = Template::CTemplate::Dictionary->new('STOLEN');
  isa_ok $dict, q{Template::CTemplate::Dictionary};
  is $dict->name(), q{STOLEN}, q{Dictionary name returned correctly};
  $dict->set_value("WHOM", "Santa Claws");
  $dict->set_int_value("WHOM", 2);
  $dict->set_global_value("WHOM", "hehe");

  my $subdict = $dict->add_section_dictionary("BOB");
}

Template: {
  is &Template::CTemplate::DO_NOT_STRIP, 0, q{Template modifier correct};
  is &Template::CTemplate::STRIP_BLANK_LINES, 1, q{Template modifier correct};
  is &Template::CTemplate::STRIP_WHITESPACE, 2, q{Template modifier correct};

  my $tpl = Template::CTemplate::Template->new('demo.tpl', &Template::CTemplate::DO_NOT_STRIP);

  isa_ok $tpl, q{Template::CTemplate::Template};
  $tpl->set_template_root_directory("/tmp");
  is $tpl->template_root_directory(), q{/tmp/}, q{Template root directory};
  is $tpl->template_file(), q{./demo.tpl}, q{Template file name};
  $tpl->set_template_root_directory('.');
}

Blog_entries_example: {
  my $tpl = Template::CTemplate::Template->new('t/example.tpl', &Template::CTemplate::STRIP_BLANK_LINES);
  my $dict = Template::CTemplate::Dictionary->new('');
  $dict->show_section('NO_BLOG_ENTRIES');

  my $output = $tpl->expand($dict);
  is $output, "Welcome to todays blog entries:\n  Sorry, but there's no blog entries today!\n", q{no entries};

  my $dict2 = Template::CTemplate::Dictionary->new('');
  my $blog_entries = [
    { DATE => '2007-10-01', SUBJECT => 'SCO go down in flames', WHOM => 'Bob' },
    { DATE => '2007-10-02', SUBJECT => 'Gmail gets IMAP', WHOM => 'Charlie' },
  ];

  for my $entry (@$blog_entries){
    my $sec = $dict2->add_section_dictionary('BLOG_ENTRY');
    for my $k (keys %$entry){
      $sec->set_value($k, $entry->{$k});
    }
  }

  my $out = $tpl->expand($dict2);
  my $cmp = <<EOF;
Welcome to todays blog entries:
  Date: 2007-10-01
  Subject: SCO go down in flames
  Who: Bob
  Date: 2007-10-02
  Subject: Gmail gets IMAP
  Who: Charlie
EOF

  is $out, $cmp, q{list of entries};

}