use HTML::Widget; use Test::MockObject; my $w1 = HTML::Widget->new('widget1')->legend('widget1'); my $w2 = HTML::Widget->new('widget2'); $w1->element( 'Checkbox', 'checkbox1' )->label('Checkbox1'); $w1->element( 'Checkbox', 'checkbox2' )->label('Checkbox3'); $w1->element( 'Checkbox', 'checkbox3' )->label('Checkbox2'); $w1->element( 'Radio', 'radio' )->label('Radio1'); $w1->element( 'Radio', 'radio' )->label('Radio2'); $w1->element( 'Radio', 'radio' )->label('Radio3'); $w1->element( 'Textarea', 'textarea' )->label('Textarea'); $w1->element( 'Textfield', 'texfield' )->label('Textfield') ->comment('(Optional)'); $w1->element( 'Upload', 'upload' )->label('Upload'); $w1->element( 'Submit', 'submit' )->value('Submit'); $w1->constraint( 'All', qw/checkbox1 checkbox2 checkbox3 radio1 radio2 radio3 textarea textfield upload submit/ )->message('Required'); my $f1 = $w1->process; print "Example1:\n"; print $f1; $w2->embed($w1); my $f2 = $w2->process; print "Example2:\n"; print $f2; my $query = Test::MockObject->new; my $data = { foo => 'bar' }; $query->mock( 'param', sub { $_[1] ? ( return $data->{ $_[1] } ) : ( keys %$data ) } ); my $f3 = $w2->process($query); print "Example3:\n"; print $f3;