#!/usr/bin/perl -w use strict; use Test::More tests => 68; BEGIN { use_ok('Rose::HTML::Form::Field::Checkbox'); use_ok('Rose::HTML::Form::Field::CheckboxGroup'); } my $field = Rose::HTML::Form::Field::CheckboxGroup->new(name => 'fruits'); ok(ref $field eq 'Rose::HTML::Form::Field::CheckboxGroup', 'new()'); is(scalar @{ $field->children }, 0, 'children scalar 1'); is(scalar(() = $field->children), 0, 'children list 1'); $field->checkboxes(apple => 'Apple', orange => { label => 'Orange', }, Rose::HTML::Form::Field::Checkbox->new(value => 'grape', label => 'Grape')); is(scalar @{ $field->children }, 0, 'children scalar 2'); is(scalar(() = $field->children), 0, 'children list 2'); is(join(',', sort $field->labels), 'Apple,Grape,Orange,apple,grape,orange', 'labels()'); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'html_field() 1'); $field = Rose::HTML::Form::Field::CheckboxGroup->new( name => 'fruits', choices => [ Rose::HTML::Form::Field::Checkbox->new(value => 'apple', label => 'Apple'), orange => 'Orange', grape => { label => 'Grape', } ]); $field->checkbox('apple')->label('Apple'); $field->escape_html(0); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'escape_html() 1'); $field->escape_html(1); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'escape_html() 1'); $field->checkbox('apple')->label('Apple'); $field->linebreak(0); is($field->html_field, qq( ) . qq( ) . qq( ), 'linebreak()'); $field->linebreak(1); $field->html_linebreak('

'); is($field->html_field, qq(

) . qq(

) . qq( ), 'html_linebreak()'); $field->html_linebreak("
\n"); $field->xhtml_linebreak('

'); is($field->xhtml_field, qq(

) . qq(

) . qq( ), 'xhtml_linebreak()'); $field->xhtml_linebreak("
\n"); $field->default('apple'); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'default()'); $field->input_value('orange'); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'value() 1'); $field->value('orange'); my $values = join(',', $field->values); $field->error("Do not pick orange!"); is($field->html, qq(
\n) . qq(
\n) . qq(
\n) . qq(Do not pick orange!), 'html()'); $field->error(undef); $field->add_value('apple'); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'add_value()'); is(join(',', $field->output_value), 'apple,orange', 'values()'); is(join(',', @{$field->output_value}), 'apple,orange', 'value() 2'); $field->input_value(undef); $field->add_values('orange', 'grape'); is($field->html_field, qq(
\n) . qq(
\n) . qq( ), 'add_values() 1'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq( ), 'add_values() 2'); is(join(',', $field->values), 'grape,orange', 'values() 2'); is(join(',', @{$field->value}), 'grape,orange', 'value() 3'); ok($field->is_checked('orange'), 'is_checked() 1'); ok($field->is_checked('grape'), 'is_checked() 2'); ok(!$field->is_checked('apple'), 'is_checked() 3'); ok(!$field->is_checked('foo'), 'is_checked() 4'); ok($field->has_value('orange'), 'has_value() 1'); ok($field->has_value('grape'), 'has_value() 2'); ok(!$field->has_value('apple'), 'has_value() 3'); ok(!$field->has_value('foo'), 'has_value() 4'); $field->add_checkboxes(pear => 'Pear', berry => 'Berry'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'add_checkboxes() hash'); $field->add_checkboxes(Rose::HTML::Form::Field::Checkbox->new(value => 'squash', label => 'Squash'), Rose::HTML::Form::Field::Checkbox->new(value => 'cherry', label => 'Cherry')); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'add_checkboxes() objects'); is($field->html_hidden_field, qq(\n) . qq(), 'html_hidden_field()'); is($field->html_hidden_fields, qq(\n) . qq(), 'html_hidden_fields()'); is(join("\n", map { $_->html } $field->hidden_field), qq(\n) . qq(), 'hidden_field()'); is(join("\n", map { $_->html } $field->hidden_fields), qq(\n) . qq(), 'hidden_fields()'); $field->clear; is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'clear()'); my $table =<<"EOF";






EOF is($field->html_table, $table, 'html_table() 1'); $table =<<"EOF";






EOF is($field->html_table(table => { cellpadding => 1, cellspacing => 2, border => 1, class => 'xxx' }), $table, 'xhtml_table() 1'); $table =<<"EOF";






EOF is($field->xhtml_table(class => 'yyy', table => { cellpadding => 1, cellspacing => 2, border => 1 }), $table, 'html_table() 2'); $table =<<"EOF";





EOF is($field->html_table(columns => 2), $table, 'html_table() 3'); $field->reset; is(join(',', $field->output_value), 'apple', 'reset() 1'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'reset() 2'); $field->default(undef); is(join(',', $field->value), '', 'reset() 3'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'reset() 4'); my $id = ref($field)->localizer->add_localized_message( name => 'ORANGE_LABEL', text => { en => 'Orange EN', xx => 'Le Orange', }); $field->checkbox('orange')->label_id($id); is($field->checkbox('orange')->label->as_string, 'Orange EN', 'localized label 1'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'localized label 2'); $field->localizer->locale('xx'); is($field->checkbox('orange')->label->as_string, 'Le Orange', 'localized label 3'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'localized label 4'); $field->input_value('grape'); $field->checkbox('grape')->hide; is($field->internal_value->[0], undef, 'hidden 0'); is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'hidden 1'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'hidden 2'); $field->checkbox('grape')->show; is($field->html_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'hidden 3'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'hidden 4'); $field->hide_all_checkboxes; is($field->xhtml_field, '', 'hidden 5'); $field->show_all_checkboxes; is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'hidden 6'); $field->delete_checkbox('squash'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'delete 1'); $field->delete_checkboxes('squash', 'pear', 'grape'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq( ), 'delete 2'); my $i = 1; foreach my $name (qw(items checkboxes)) { my $method = "${name}_html_attr"; $field->$method(class => 'bar'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq( ), "$method " . $i++); is($field->$method('class'), 'bar', "$method " . $i++); $method = "delete_${name}_html_attr"; $field->$method('class'); is($field->xhtml_field, qq(
\n) . qq(
\n) . qq(
\n) . qq( ), "$method " . $i++); } $field->input_value('apple'); is($field->is_empty, 0, 'is_empty 3'); $field->input_value(''); is($field->is_empty, 1, 'is_empty 4');