From: Kirrily R. <sk...@us...> - 2001-10-01 22:09:03
|
Update of /cvsroot/formmagick/formmagick/t In directory usw-pr-cvs1:/tmp/cvs-serv30639/t Added Files: embedded-CGI-FormMagick-HTML.t embedded-CGI-FormMagick-L10N.t embedded-CGI-FormMagick-Setup.t embedded-CGI-FormMagick-TagMaker.t embedded-CGI-FormMagick-Utils.t embedded-CGI-FormMagick-Validator.t embedded-CGI-FormMagick.t embedded-CGI-FormMagick.xml Log Message: Uh. General cleanup in the examples are. I must've forgotten to commit these a while back. --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 31 lib/CGI/FormMagick/HTML.pm BEGIN: { use_ok('CGI::FormMagick'); use vars qw($fm $i); use lib "lib/"; } my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); $fm = new CGI::FormMagick(TYPE => 'STRING', SOURCE => $xml); } { #line 250 lib/CGI/FormMagick/HTML.pm my $f = { # minimalist fieldinfo hashref VALIDATION => 'foo', LABEL => 'bar', TYPE => 'TEXT', ID => 'baz' }; $fm->{cgi} = CGI::new->(""); ok(($i = $fm->gather_field_info($f)), "Gather field info"); ok(ref($i) eq 'HASH', "gather_field_info returning a hashref"); } { #line 300 lib/CGI/FormMagick/HTML.pm ok(my $if = $fm->build_inputfield($i, CGI::FormMagick::TagMaker->new()), "build input field"); } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 87 lib/CGI/FormMagick/L10N.pm BEGIN: { use_ok('CGI::FormMagick'); use vars qw($fm); use lib "./lib"; } $ENV{HTTP_ACCEPT_LANGUAGE} = $ENV{LANG} = $ENV{LANGUAGE} = "fr"; my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); ok ($fm = new CGI::FormMagick(TYPE => 'STRING', SOURCE => $xml), "created fm object"); ok( $fm->add_lexicon("fr", { "yes" => "oui" }) , "Simple add_lexicon"); ok( not($fm->add_lexicon("fr", "abc" )) , "Non-hashref lexicon should fail"); ok( not($fm->add_lexicon("fr", (1,2,3))) , "Non-hashref lexicon should fail"); ok( not($fm->add_lexicon("fr", [1,2,3])) , "Non-hashref lexicon should fail"); TODO: { local $TODO = "Haven't yet implemented tests for non-existent languages"; ok( not($fm->add_lexicon("xx", { yes => 'oui' })) , "Non-existent language should fail"); } } { #line 160 lib/CGI/FormMagick/L10N.pm is($fm->localise("yes"), "oui", "Simple localisation"); is($fm->localise("xyz"), "xyz", "Attempted localisation of untranslated string"); is($fm->localise(""), "", "Fail gracefully on localisation of empty string"); } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 36 lib/CGI/FormMagick/Setup.pm BEGIN: { use vars qw( $fm ); use lib "./lib"; use CGI::FormMagick; } my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="lastname" LABEL="last name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); ok($fm = CGI::FormMagick->new(TYPE => 'STRING', SOURCE => $xml), "create fm object"); } { #line 73 lib/CGI/FormMagick/Setup.pm TODO: { local $TODO = "writeme"; fail(); } } { #line 131 lib/CGI/FormMagick/Setup.pm is(ref($fm->{clean_xml}), "HASH", "clean_xml gives us a hash"); is($fm->{clean_xml}->{TITLE}, "FormMagick demo application", "Picked up form title"); is(ref($fm->{clean_xml}->{PAGES}), "ARRAY", "clean_xml gives us an array of pages"); is(ref($fm->{clean_xml}->{PAGES}->[0]), "HASH", "each page is a hashref"); is($fm->{clean_xml}->{PAGES}->[0]->{NAME}, "Personal", "Picked up first page's name"); is(ref($fm->{clean_xml}->{PAGES}->[0]->{FIELDS}), "ARRAY", "Page's fields are an array"); } { #line 172 lib/CGI/FormMagick/Setup.pm ok( CGI::FormMagick::initialise_sessiondir("abc"), "Initialise sessiondir with name"); ok( CGI::FormMagick::initialise_sessiondir(), "Initialise sessiondir with undef"); } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 189 lib/CGI/FormMagick/TagMaker.pm TODO: { local $TODO = "Write tests for TagMaker!"; ok(0, "Fake test just to keep 'make test' happy"); } } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 37 lib/CGI/FormMagick/Utils.pm BEGIN: { use vars qw( $fm ); use lib "./lib"; use CGI::FormMagick; } my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="lastname" LABEL="last name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); ok($fm = CGI::FormMagick->new(TYPE => 'STRING', SOURCE => $xml), "create fm object"); } { #line 72 lib/CGI/FormMagick/Utils.pm is($fm->get_page_by_name('Personal'), 0, "get page by name"); } { #line 93 lib/CGI/FormMagick/Utils.pm is(ref($fm->get_page_by_number(0)), 'HASH', "get page by number"); } { #line 148 lib/CGI/FormMagick/Utils.pm ok(defined($fm->parse_template), "Fail gracefully if no template"); } { #line 175 lib/CGI/FormMagick/Utils.pm my $form = $fm->form(); is(ref $form, "HASH", "form data structure is a hash"); } { #line 192 lib/CGI/FormMagick/Utils.pm my $page = $fm->page(); is(ref $page, "HASH", "page data structure is a hash"); } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 68 lib/CGI/FormMagick/Validator.pm BEGIN: { use CGI::FormMagick; use CGI::FormMagick::Validator; use vars qw($fm); } is( nonblank("abc"), "OK" , "Strings aren't blank" ); isnt( nonblank(""), "OK" , "Empty string is blank"); isnt( nonblank(" "), "OK" , "Spaces are blank"); } { #line 97 lib/CGI/FormMagick/Validator.pm is( integer(5), "OK" , "5 is a positive integer"); isnt( integer(-5), "OK" , "-5 is not a positive integer"); isnt( integer(5.5), "OK" , "5.5 is not a positive integer"); isnt( integer(), "OK" , "undef is not a positive integer"); isnt( integer("abc"), "OK" , "Alpha chars are not a positive integer"); isnt( integer("2abc"), "OK" , "Alpha chars are not a positive integer"); isnt( integer("2abc"), "OK" , "Mixed alphanumeric is not a positive integer"); isnt( integer(0), "OK" , "0 is not a positive integer"); } { #line 125 lib/CGI/FormMagick/Validator.pm is( number(2), "OK" , "Integers are numbers"); is( number(2.2), "OK" , "Real numbers are numbers"); is( number(".2"), "OK" , "Decimal numbers with no integer part are numbers"); isnt( number(), "OK" , "Undef is not a number"); isnt( number("abc"), "OK" , "Alpha chars are not numbers"); isnt( number("2abc"), "OK" , "Mixed alphanumeric is not a number"); is( number(-2), "OK" , "Negative integers are numbers"); is( number(-2.2), "OK" , "Negative real numbers are numbers"); is( number(5.3e10), "OK" , "Scientific notation is a number"); is( number(0), "OK" , "Zero is a number"); } { #line 155 lib/CGI/FormMagick/Validator.pm is( word("abc"), "OK" , "Alpha string is a word"); is( word("123abc"), "OK" , "Alphanumeric string is a word"); isnt( word(""), "OK" , "Empty string is not a word"); isnt( word("abc def"), "OK" , "String with spaces is not a word"); isnt( word("abc&fed"), "OK" , "String with punctuation is not a word"); } { #line 178 lib/CGI/FormMagick/Validator.pm isnt( url('http://'), "OK" , "http:// is not a complete URL"); isnt( url('ftp://'), "OK" , "ftp:// is not a complete URL"); isnt( url('abc'), "OK" , "abc is not a valid URL"); isnt( url(), "OK" , "undef is not a valid URL"); isnt( url(''), "OK" , "empty string is not a valid URL"); is( url('http://a.bc'), "OK" , "http://a.bc is a valid URL"); is( url('ftp://a.bc:21/'), "OK" , "ftp://a.bc:21 is a valid URL"); } { #line 207 lib/CGI/FormMagick/Validator.pm is( email('a@b.c'), "OK" , 'a@b.c is a valid email address'); is( email('a+b@c.d'), "OK" , 'a+b@c.d is a valid email address'); is( email('a-b=c@d.e'), "OK" , 'a-b=c@d.e is a valid email address'); isnt( email('abc'), "OK" , 'abc is not a valid email address'); isnt( email('a@b'), "OK" , 'a@b is not a valid email address'); isnt( email('@b.c'), "OK" , '@b.c is not a valid email address'); isnt( email(), "OK" , 'undef is not a valid email address'); isnt( email(""), "OK" , 'empty string is not a valid email address'); } { #line 236 lib/CGI/FormMagick/Validator.pm is( domain_name("abc.com"), "OK" , "abc.com is a valid domain name"); isnt( domain_name("abc"), "OK" , "abc is not a valid domain name"); isnt( domain_name(), "OK" , "undef is not a valid domain name"); isnt( domain_name(""), "OK" , "empty string is not a valid domain name"); } { #line 260 lib/CGI/FormMagick/Validator.pm SKIP: { skip "Net::IPV4Addr not installed", 7 unless eval {require Net::IPV4Addr}; is( ip_number("1.2.3.4"), "OK" , "1.2.3.4 is a valid ip address"); isnt( ip_number("1000.2.3.4"), "OK" , "1000.2.3.4 is not a valid ip address"); isnt( ip_number("a.b.c.d"), "OK" , "a.b.c.d is not a valid ip address"); isnt( ip_number("1.2.3"), "OK" , "1.2.3 is not a valid ip address"); isnt( ip_number(), "OK" , "undef is not a valid ip address"); isnt( ip_number(""), "OK" , "empty string is not a valid ip address"); isnt( ip_number("abc"), "OK" , "abc is not a valid ip address"); } } { #line 296 lib/CGI/FormMagick/Validator.pm is( username("abc"), "OK" , "abc is a valid username"); isnt( username("123"), "OK" , "123 is not a valid username"); isnt( username(), "OK" , "undef is not a valid username"); isnt( username(""), "OK" , "empty string is not a valid username"); isnt( username(" "), "OK" , "spaces is not a valid username"); } { #line 321 lib/CGI/FormMagick/Validator.pm isnt( password("abc"), "OK" , "abc is not a good password"); isnt( password(), "OK" , "undef is not a good password"); isnt( password(""), "OK" , "empty string is not a good password"); is( password("ab1C23FouR!"), "OK" , "ab1C23FouR! is a good password"); } { #line 347 lib/CGI/FormMagick/Validator.pm isnt( date(), "OK" , "undef is not a date"); isnt( date(""), "OK" , "empty string is not a date"); isnt( date("abc"), "OK" , "abc is not a date"); } { #line 372 lib/CGI/FormMagick/Validator.pm SKIP: { skip "Locale::Country not installed", 4 unless eval { require Locale::Country }; ok( iso_country_code() ne "OK" , "undef is not a country"); ok( iso_country_code("") ne "OK" , "empty string is not a country"); ok( iso_country_code("00") ne "OK" , "00 is not a country"); ok( iso_country_code("au") eq "OK" , "au is a country"); } } { #line 411 lib/CGI/FormMagick/Validator.pm SKIP: { skip "Geography::States broken, install v1.6 - this means you Skud", 5 unless 0; #unless eval { require Geography::States }; ok( US_state("or") eq "OK" , "Oregon is a US state"); ok( US_state("OR") eq "OK" , "Oregon is a US state"); ok( US_state() ne "OK" , "undef is not a US state"); ok( US_state("") ne "OK" , "empty string is not a US state"); ok( US_state("zz") ne "OK" , "zz is not a US state"); } } { #line 447 lib/CGI/FormMagick/Validator.pm ok( US_zipcode() ne "OK" , "undef is not a US zipcode"); ok( US_zipcode("") ne "OK" , "empty string is not a US zipcode"); ok( US_zipcode("abc") ne "OK" , "abc is not a US zipcode"); ok( US_zipcode("2210") ne "OK" , "2210 is not a US zipcode"); ok( US_zipcode("90210") eq "OK" , "90210 is a US zipcode"); ok( US_zipcode("a0210") ne "OK" , "a0210 is not a US zipcode"); ok( US_zipcode("123456789") eq "OK" , "123456789 is a valid US zipcode"); ok( US_zipcode("12345-6789") eq "OK" , "12345-6789 is a valid US zipcode"); } { #line 479 lib/CGI/FormMagick/Validator.pm ok( credit_card_number() ne "OK" , "undef is not a credit card number"); ok( credit_card_number("") ne "OK" , "empty string is not a credit card number"); ok( credit_card_number("a") ne "OK" , "a is not a credit card number"); ok( credit_card_number("12")ne "OK" , "12 is not a credit card number"); ok( credit_card_number("4111 1111 1111 1111") eq "OK" , "4111 1111 1111 1111 is a credit card number"); ok( credit_card_number("4111111111111111") eq "OK" , "4111111111111111 is a credit card number"); ok( credit_card_number("4111111111111112") ne "OK" , "4111111111111112 is not a credit card number"); ok( credit_card_number("411111111111111") ne "OK" , "411111111111111 is not a credit card number"); } { #line 528 lib/CGI/FormMagick/Validator.pm my ($m, $y) = (localtime)[4,5]; $m++; $y += 1900; TODO: { local $TODO = "WRITE THESE TESTS"; ok(0); } } { #line 696 lib/CGI/FormMagick/Validator.pm TODO: { local $TODO = "Make validate_field accept a fieldname instead of a fieldref"; my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="lastname" LABEL="last name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); ok(CGI::FormMagick->can('new'), "We can call new"); ok($fm = CGI::FormMagick->new(TYPE => 'STRING', SOURCE => $xml), "create fm object"); use CGI; $fm->{cgi} = CGI->new(""); is($fm->validate_field("firstname"), "OK", "validate_field accepts field names"); } } --- NEW FILE --- #!/usr/local/bin/perl -w use Test::More 'no_plan'; package Catch; sub TIEHANDLE { my($class) = shift; return bless {}, $class; } sub PRINT { my($self) = shift; $main::_STDOUT_ .= join '', @_; } sub READ {} sub READLINE {} sub GETC {} package main; local $SIG{__WARN__} = sub { $_STDERR_ .= join '', @_ }; tie *STDOUT, 'Catch' or die $!; { #line 143 lib/CGI/FormMagick.pm BEGIN: { use_ok('CGI::FormMagick'); use vars qw($fm); use lib "lib/"; } my $xml = qq( <FORM TITLE="FormMagick demo application" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="first name" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="lastname" LABEL="last name" TYPE="TEXT" VALIDATION="nonblank"/> </PAGE> </FORM> ); ok(CGI::FormMagick->can('new'), "We can call new"); ok($fm = CGI::FormMagick->new(TYPE => 'STRING', SOURCE => $xml), "create fm object"); ok($fm->isa('CGI::FormMagick'), "fm object is what we expect"); } { #line 204 lib/CGI/FormMagick.pm ok($fm->display(), "Display"); } { #line 509 lib/CGI/FormMagick.pm TODO: { local $TODO = "writeme"; ok($fm->get_option_labels_and_values($f), "get option labels and values"); ok($fm->get_option_labels_and_values($f), "fail gracefully with empty/no options attribute"); } } --- NEW FILE --- <FORM TITLE="FormMagick demo application" HEADER="testfm_header.tmpl" FOOTER="testfm_footer.tmpl" PRE-EVENT="setup_form" POST-EVENT="submit_order"> <PAGE NAME="Personal" TITLE="Personal details" TEMPLATE="myform_page.tmpl" POST-EVENT="lookup_group_info"> <FIELD ID="firstname" LABEL="Your first name" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="lastname" LABEL="Your surname" TYPE="TEXT" VALIDATION="nonblank"/> <FIELD ID="username" LABEL="Choose a username" TYPE="TEXT" VALUE="username" VALIDATION="username, minlength(4)"/> <FIELD ID="group" LABEL="Choose a group" TYPE="SELECT" OPTIONS="my_groups" VALIDATION="nonblank"/> </PAGE> <PAGE NAME="Survey" TITLE="Annoying survey questions"> <FIELD ID="favorite_number" LABEL="Your favorite number" TYPE="TEXT" VALIDATION="number"/> <FIELD ID="quest" LABEL="Your quest" TYPE="TEXT" OPTIONS="my_quests"/> <FIELD ID="favorite_color" LABEL="Your favorite color" TYPE="RADIO" OPTIONS="colors" VALIDATION="word"/> <FIELD ID="date" LABEL="Your birthday" TYPE="TEXT" VALIDATION="date"/> <FIELD ID="iso_country_code" LABEL="Your favorite ISO country code" TYPE="TEXT" VALIDATION="date"/> <FIELD ID="binary" LABEL="Is your hair blue?" TYPE="CHECKBOX" VALIDATION="nonblank"/> <FIELD ID="state" LABEL="Your favorite US state" TYPE="TEXT" VALIDATION="US_state"/> <FIELD ID="zip" LABEL="Your US zipcode" TYPE="TEXT" VALIDATION="US_zipcode, nonblank"/> <FIELD ID="bigblob" LABEL="put text here, up to 300 chars" TYPE="TEXTAREA" VALIDATION="nonblank, maxlength(300)"/> </PAGE> <PAGE NAME="Number" TITLE="Number tests"> <FIELD ID="num1" LABEL="put exactly 2 letters here" TYPE="TEXT" VALIDATION="exactlength(2)"/> <FIELD ID="num2" LABEL="put more than 4 letters here" TYPE="TEXT" VALIDATION="minlength(4)"/> <FIELD ID="num3" LABEL="put less than 6 letters here" TYPE="TEXT" VALIDATION="maxlength(6)"/> <FIELD ID="num4" LABEL="put 4-10 letters here" TYPE="TEXT" VALIDATION="lengthrange(4,10)"/> </PAGE> <PAGE NAME="Net" TITLE="Net-related items"> <FIELD ID="some_url" LABEL="put a URL here." TYPE="TEXT" VALIDATION="url"/> <FIELD ID="some_email" LABEL="an email address." TYPE="TEXT" VALIDATION="email"/> <FIELD ID="domain" LABEL="a domain name." TYPE="TEXT" VALIDATION="domain_name"/> <FIELD ID="ip" LABEL="a valid IP." TYPE="TEXT" VALIDATION="ip_number"/> </PAGE> <PAGE NAME="Payment" TITLE="Payment details"> <FIELD ID="cardtype" LABEL="Credit card type" TYPE="SELECT" OPTIONS="list_credit_card_types" VALIDATION="credit_card_type"/> <FIELD ID="cardnumber" LABEL="Credit card number" TYPE="TEXT" VALIDATION="credit_card_number"/> <FIELD ID="cardexpiry" LABEL="Expiry date (MM/YY)" TYPE="TEXT" VALIDATION="credit_card_expiry"/> </PAGE> </FORM> |