#! /usr/bin/env perl # -*- perl -*- # Copyright (C) 2016-2018 Guido Flohr <guido.flohr@cantanea.com>, # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. use strict; use Template; use Test::More tests => 5; my $assets = { months => [ { name => 'January', const => 'constant', date => { month => '01', imonth => 1, }, }, { name => 'February', const => 'constant', date => { month => '02', imonth => 2, }, }, { name => 'March', const => 'constant', date => { month => '03', imonth => 3, }, }, { name => 'April', const => 'constant', date => { month => '04', imonth => 4, }, }, { name => 'May', const => 'constant', date => { month => '05', imonth => 5, }, }, { name => 'June', const => 'constant', date => { month => '06', imonth => 6, }, }, { name => 'July', const => 'constant', date => { month => '07', imonth => 7, }, }, { name => 'August', const => 'constant', date => { month => '08', imonth => 8, }, }, { name => 'September', const => 'constant', date => { month => '09', imonth => 9, }, }, { name => 'October', const => 'constant', date => { month => '10', imonth => 10, }, }, { name => 'November', const => 'constant', date => { month => '11', imonth => 11, }, }, { name => 'December', const => 'constant', date => { month => '12', imonth => 12, }, }, ] }; my $tt = Template->new; my ($in, $out); $out = ''; $in = <<EOF; [% USE Qgoda %] [% FOREACH month IN months.sortBy('name') %] [%- month.name %] [% END %] EOF $tt->process(\$in, $assets, \$out) or die $tt->error; is $out, <<EOF; April August December February January July June March May November October September EOF $out = ''; $in = <<EOF; [% USE Qgoda %] [% FOREACH month IN months.sortBy('date.imonth') %] [%- month.name %] [% END %] EOF $tt->process(\$in, $assets, \$out) or die $tt->error; is $out, <<EOF; January October November December February March April May June July August September EOF $out = ''; $in = <<EOF; [% USE Qgoda %] [% FOREACH month IN months.nsortBy('date.imonth') %] [%- month.name %] [% END %] EOF $tt->process(\$in, $assets, \$out) or die $tt->error; is $out, <<EOF; January February March April May June July August September October November December EOF $out = ''; $in = <<EOF; [% USE Qgoda %] [% FOREACH month IN months.sortBy('date.month') %] [%- month.name %] [% END %] EOF $tt->process(\$in, $assets, \$out) or die $tt->error; is $out, <<EOF; January February March April May June July August September October November December EOF $out = ''; $in = <<EOF; [% USE Qgoda %] [% FOREACH month IN months.sortBy('const', 'date.month') %] [%- month.name %] [% END %] EOF $tt->process(\$in, $assets, \$out) or die $tt->error; is $out, <<EOF; January February March April May June July August September October November December EOF