1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#============================================================= -*-perl-*-
#
# t/iterator.t
#
# Template script testing Template::Iterator and
# Template::Plugin::Iterator.
#
# Written by Andy Wardley <abw@kfs.org>
#
# Copyright (C) 1996-2000 Andy Wardley. All Rights Reserved.
# Copyright (C) 1998-2000 Canon Research Centre Europe Ltd.
#
# This is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# $Id: iterator.t,v 2.2 2000/11/14 15:54:58 abw Exp $
#
#========================================================================
use strict;
use lib qw( ./lib ../lib );
use Template::Test;
use Template::Iterator;
$^W = 1;
#$Template::Parser::DEBUG = 0;
#$Template::Test::DEBUG = 0;
my $data = [ qw( foo bar baz qux wiz woz waz ) ];
my $vars = {
data => $data,
# iterator => Template::Iterator->new($data),
};
my $i1 = Template::Iterator->new($data);
ok( $i1->get_first() eq 'foo' );
ok( $i1->get_next() eq 'bar' );
ok( $i1->get_next() eq 'baz' );
my $rest = $i1->get_all();
ok( scalar @$rest == 4 );
ok( $rest->[0] eq 'qux' );
ok( $rest->[3] eq 'waz' );
my ($val, $err) = $i1->get_next();
ok( ! $val );
ok( $err == Template::Constants::STATUS_DONE );
($val, $err) = $i1->get_all();
ok( ! $val );
ok( $err == Template::Constants::STATUS_DONE );
($val, $err) = $i1->get_first();
ok( $i1->get_first() eq 'foo' );
ok( $i1->get_next() eq 'bar' );
$rest = $i1->get_all();
ok( scalar @$rest == 5 );
test_expect(\*DATA, { POST_CHOMP => 1 }, $vars);
__DATA__
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
* [% i +%]
[% END %]
-- expect --
* foo
* bar
* baz
* qux
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.index %]/[% loop.max %] [% i +%]
[% END %]
-- expect --
#0/3 foo
#1/3 bar
#2/3 baz
#3/3 qux
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.count %]/[% loop.size %] [% i +%]
[% END %]
-- expect --
#1/4 foo
#2/4 bar
#3/4 baz
#4/4 qux
-- test --
# test that 'number' is supported as an alias to 'count', for backwards
# compatability
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.number %]/[% loop.size %] [% i +%]
[% END %]
-- expect --
#1/4 foo
#2/4 bar
#3/4 baz
#4/4 qux
-- test --
[% USE iterator(data) %]
[% FOREACH i = iterator %]
[% IF iterator.first %]
List of items:
[% END %]
* [% i +%]
[% IF iterator.last %]
End of list
[% END %]
[% END %]
-- expect --
List of items:
* foo
* bar
* baz
* qux
* wiz
* woz
* waz
End of list
-- test --
[% FOREACH i = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% "$loop.prev<-" IF loop.prev -%][[% i -%]][% "->$loop.next" IF loop.next +%]
[% END %]
-- expect --
[foo]->bar
foo<-[bar]->baz
bar<-[baz]->qux
baz<-[qux]
|