source: text-formbuilder/trunk/t/01-field.t

Last change on this file was 84, checked in by peichman, 19 years ago

added support for the 'multiple' attribute on fields

File size: 3.4 KB
Line 
1use strict;
2
3use Test::More qw(no_plan); #tests => 6;
4BEGIN { use_ok('Text::FormBuilder::Parser'); };
5
6my $p = Text::FormBuilder::Parser->new;
7
8# this is the minimal hash that is returned with every field that is parsed
9my %base = (
10    comment  => undef,
11    growable => undef,
12    label    => undef,
13    list     => undef,
14    multiple => undef,
15    name     => undef,
16    other    => undef,
17    required => undef,
18    type     => undef,
19    validate => undef,
20    value    => undef,
21);
22
23my @test_fields = (
24    {
25        comment => 'just the name of the field',
26        fieldspec => 'name',
27        expecting => { name => 'name' },
28    },
29    {
30        comment => 'different single word label',
31        fieldspec => 'name|Moniker',
32        expecting => {
33            name => 'name',
34            label => 'Moniker',
35        },
36    },
37    {
38        comment => 'multi-word label',
39        fieldspec => 'name|Full name',
40        expecting => {
41            name => 'name',
42            label => 'Full name',
43        },
44    },
45    {
46        comment => 'quoted label',
47        fieldspec => "name|'Name/nickname'",
48        expecting => {
49            name => 'name',
50            label => 'Name/nickname',
51        },
52    },
53    {
54        comment => 'quoted label with \ escapes',
55        fieldspec => "name|'Your \\'name\\''",
56        expecting => {
57            name => 'name',
58            label => "Your 'name'",
59        },
60    },
61
62    # field types
63    {
64        comment => 'field type "text"',
65        fieldspec => 'name:text',
66        expecting => {
67            name => 'name',
68            type => 'text',
69        },
70    },
71    {
72        comment => 'field type "textarea"',
73        fieldspec => 'name:textarea',
74        expecting => {
75            name => 'name',
76            type => 'textarea',
77        },
78    },
79    {
80        comment => 'field type "password"',
81        fieldspec => 'name:password',
82        expecting => {
83            name => 'name',
84            type => 'password',
85        },
86    },
87    {
88        comment => 'field type "checkbox"',
89        fieldspec => 'name:checkbox',
90        expecting => {
91            name => 'name',
92            type => 'checkbox',
93        },
94    },
95    {
96        comment => 'field type "radio"',
97        fieldspec => 'name:radio',
98        expecting => {
99            name => 'name',
100            type => 'radio',
101        },
102    },
103    {
104        comment => 'field type "select"',
105        fieldspec => 'name:select',
106        expecting => {
107            name => 'name',
108            type => 'select',
109        },
110    },
111
112
113    {
114        comment => 'text field with size',
115        fieldspec => 'name[25]:text',
116        expecting => {
117            name => 'name',
118            type => 'text',
119            size => 25,
120        },
121    },
122    {
123        comment => 'text field with size and maxlength',
124        fieldspec => 'name[25!]:text',
125        expecting => {
126            name => 'name',
127            type => 'text',
128            size => 25,
129            maxlength => 25,
130        },
131    },
132    {
133        comment => 'textarea field with size (rows and columns)',
134        fieldspec => 'name[4,40]:textarea',
135        expecting => {
136            name => 'name',
137            type => 'textarea',
138            rows => 4,
139            cols => 40,
140        },
141    },
142
143);
144
145foreach (@test_fields) {
146    my $field = $p->field($_->{fieldspec});
147    ok(eq_hash($field, { %base, %{ $_->{expecting} } }), $_->{comment});
148}
Note: See TracBrowser for help on using the repository browser.