use strict; use warnings; use Test::More tests => 6; use HTML::FormFu; use lib 'lib'; my $form = HTML::FormFu->new; $form->element('Text')->name('foo')->filter('Callback') ->callback( sub { $_[0] =~ s/(\d)(\d)/$2$1/g; shift; } ); $form->element('Text')->name('bar')->filter('Callback'); $form->element('Text')->name('baz')->filter('Callback') ->callback('FilterCallback::my_filter'); my $original_foo = "ab123456"; my $filtered_foo = "ab214365"; my $original_bar = "ab123456"; my $filtered_bar = "ab123456"; my $original_baz = "abcdef"; my $filtered_baz = "ABCdef"; $form->process( { foo => $original_foo, bar => $original_bar, baz => $original_baz, } ); # foo is quoted is( $form->param('foo'), $filtered_foo, 'foo filtered' ); is( $form->params->{foo}, $filtered_foo, 'foo filtered' ); # bar is filtered is( $form->param('bar'), $filtered_bar, 'bar filtered' ); is( $form->params->{bar}, $filtered_bar, 'bar filtered' ); # baz is filtered is( $form->param('baz'), $filtered_baz, 'baz filtered' ); is( $form->params->{baz}, $filtered_baz, 'baz filtered' ); { package FilterCallback; use strict; use warnings; sub my_filter { my ($value) = @_; $value =~ tr/abc/ABC/; return $value; } }