use strict; use Test::More tests => 42; BEGIN{ use_ok("FormValidator::Simple::Profile") } my $rec = FormValidator::Simple::Profile::Record->new; $rec->set_keys( { id => ['key'] } ); is( $rec->name, 'id' ); is( $rec->keys->[0], 'key' ); $rec->set_keys( { 'id2' => 'key2' } ); is( $rec->name, 'id2' ); is( $rec->keys->[0], 'key2' ); $rec->set_keys( { 'id3' => [qw/key3 key4 key5/] } ); is( $rec->name, 'id3' ); is( $rec->keys->[0], 'key3' ); is( $rec->keys->[1], 'key4' ); is( $rec->keys->[2], 'key5' ); $rec->set_keys( 'id4' ); is( $rec->name, 'id4' ); is( $rec->keys->[0], 'id4' ); isa_ok( $rec->constraints, "FormValidator::Simple::Constraints" ); $rec->set_constraints( ['INT'] ); my $c1 = $rec->constraints->get_record_at(0); is( $c1->name, 'INT' ); $rec->set_constraints( [qw/ASCII INT/,[qw/LENGTH 4 10/]] ); my $c2 = $rec->constraints->get_record_at(0); my $c3 = $rec->constraints->get_record_at(1); my $c4 = $rec->constraints->get_record_at(2); is( $rec->constraints->records_count, 3 ); ok( !$rec->constraints->needs_blank_check ); is( $c2->name, 'ASCII' ); is( $c3->name, 'INT' ); is( $c4->name, 'LENGTH' ); is( $c4->args->[0], 4 ); is( $c4->args->[1], 10 ); $rec->set_constraints( [qw/NOT_BLANK ASCII INT/] ); my $c5 = $rec->constraints->get_record_at(0); my $c6 = $rec->constraints->get_record_at(1); is( $rec->constraints->records_count, 2 ); ok( $rec->constraints->needs_blank_check ); is( $c5->name, 'ASCII' ); is( $c6->name, 'INT' ); $rec->set_constraints('INT'); my $c7 = $rec->constraints->get_record_at(0); is( $c7->name, 'INT' ); $rec->set_constraints( ['NOT_BLANK'] ); is( $rec->constraints->records_count, 0 ); ok( $rec->constraints->needs_blank_check ); my $prof = FormValidator::Simple::Profile->new( [ id => [qw/NOT_BLANK/], { name => [qw/name1 name2/] } => [qw/ANY/], pass => [qw/NOT_BLANK ASCII/,['LENGTH', 4, 10]] ] ); my $prec1 = $prof->get_record_at(0); my $prec2 = $prof->get_record_at(1); my $prec3 = $prof->get_record_at(2); is( $prof->records_count, 3 ); isa_ok( $prec1, "FormValidator::Simple::Profile::Record" ); isa_ok( $prec2, "FormValidator::Simple::Profile::Record" ); isa_ok( $prec3, "FormValidator::Simple::Profile::Record" ); ok( $prec1->constraints->needs_blank_check ); is( $prec1->constraints->records_count, 0 ); ok( !$prec2->constraints->needs_blank_check ); is( $prec2->constraints->records_count, 1 ); ok( $prec3->constraints->needs_blank_check ); is( $prec3->constraints->records_count, 2 ); my $ite = $prof->iterator; isa_ok( $ite, "FormValidator::Simple::Profile::Iterator" ); my $prec4 = $ite->next; my $prec5 = $ite->next; my $prec6 = $ite->next; my $prec7 = $ite->next; is( $prec7, undef ); is( $prec4->name, 'id' ); is( $prec5->name, 'name' ); is( $prec6->name, 'pass' );