#!/usr/local/bin/perl -w use strict; use Rose::HTML::Object::Errors qw(:number); BEGIN { use Test::More tests => 46; use_ok('Rose::HTML::Form::Field::Numeric'); } my $field = Rose::HTML::Form::Field::Numeric->new( label => 'Num', description => 'Your num', name => 'num', value => 123, default => 456, maxlength => 20); ok(ref $field eq 'Rose::HTML::Form::Field::Numeric', 'new()'); ok($field->validate, 'validate() 0'); is($field->html_field, '', 'html_field() 1'); is($field->xhtml_field, '', 'xhtml_field() 1'); $field->clear; is($field->internal_value, undef, 'clear()'); is($field->html_field, '', 'html_field() 2'); is($field->xhtml_field, '', 'xhtml_field() 2'); $field->reset; is($field->internal_value, '456', 'reset()'); is($field->html_field, '', 'html_field() 3'); is($field->xhtml_field, '', 'xhtml_field() 3'); $field->input_value('123.456'); $field->class('foo'); $field->id('bar'); $field->style('baz'); is($field->html_field, '', 'html_field() 4'); is($field->xhtml_field, '', 'xhtml_field() 4'); $field->input_value('bad'); ok(!$field->validate, 'validate() 1'); is($field->error, 'Num must be a number.', 'error() 1'); is($field->error_id, NUM_INVALID_NUMBER, 'error_id() 1'); $field->input_value('7^7'); ok(!$field->validate, 'validate() 2'); $field->input_value('-1.23'); ok($field->validate, 'validate() 3'); $field->input_value(' - 123.456 '); ok($field->validate, 'validate() 4'); is($field->internal_value, '-123.456', 'internal_value() 1'); $field->input_value(' + 123.456 '); ok($field->validate, 'validate() 4.1'); is($field->internal_value, '123.456', 'internal_value() 2'); ok(!$field->error, 'error() 2'); $field->input_value(-5); ok($field->validate, 'validate() 5'); ok(!$field->error, 'error() 3'); $field->min(0); ok(!$field->validate, 'validate() 6'); is($field->error, 'Num must be a positive number.', 'error() 4'); is($field->error_id, NUM_NOT_POSITIVE_NUMBER, 'error_id() 2'); $field->min(1); ok(!$field->validate, 'validate() 7'); is($field->error, 'Num must be greater than or equal to 1.', 'error() 4'); is($field->error_id, NUM_BELOW_MIN, 'error_id() 3'); $field->max(100); $field->input_value(100); ok($field->validate, 'validate() 8'); ok(!$field->has_error, 'error() 4'); $field->input_value(101); ok(!$field->validate, 'validate() 9'); is($field->error, 'Num must be less than or equal to 100.', 'error() 4'); is($field->error_id, NUM_ABOVE_MAX, 'error_id() 4'); $field->negative(1); $field->input_value(300); ok(!$field->validate, 'validate() 10'); $field->input_value(-300); ok($field->validate, 'validate() 11'); $field->input_value(0); ok($field->validate, 'validate() 12'); $field->positive(1); ok($field->validate, 'validate() 13'); $field->input_value(-400); ok(!$field->validate, 'validate() 14'); $field->input_value(400); ok($field->validate, 'validate() 15'); $field->negative(0); ok($field->validate, 'validate() 16'); $field->positive(0); $field->input_value(-400); ok($field->validate, 'validate() 17'); $field->input_value(400); ok($field->validate, 'validate() 18'); $field->input_value('400a'); ok(!$field->validate, 'validate() 19');