# $Id: Test.pm,v 1.7 2003/03/02 11:52:10 m_ilya Exp $ package HTTP::WebTest::Test; =head1 NAME HTTP::WebTest::Test - Test object class =head1 SYNOPSIS use HTTP::WebTest::Test; my $test = HTTP::WebTest::Test->new(%params); my $test = HTTP::WebTest::Test->convert($raw_test); my $value = $test->param($param); my $value = $test->params->{$param}; my $results = $test->results; my $result = $test->result->[0]; $test->result->[0] = $result; $test->results([ @results ]); my $request = $test->request; $test->request($request); my $response = $test->response; $test->response($response); my $response_time = $test->response_time; $test->response_time($response_time); =head1 DESCRIPTION Objects of this class represent tests. They store both test parameters and test results. =head1 CLASS METHODS =cut use strict; use HTTP::WebTest::Utils qw(make_access_method); =head2 new (%params) Constructor. =head3 Parameters =over 4 =item * %params A hash with test parameters. =back =head3 Returns A new C object. =cut sub new { my $class = shift; my %params = @_; my $self = bless {}, $class; $self->params({ %params }); return $self; } =head2 params =head3 Returns A reference to a hash with all test parameters. =cut *params = make_access_method('PARAMS', sub { {} }); =head2 param ($param) =head3 Returns A value of test parameter named C<$param>. =cut sub param { my $self = shift; my $param = shift; return $self->params->{$param}; } =head2 results ($optional_results) Can set L objects for this C object if an array reference C<$optional_results> is passed. =head3 Returns A reference to an array that contains L objects. =cut *results = make_access_method('RESULTS', sub { [] }); =head2 request ($optional_request) If parameter C<$optional_request> is passed, set L object for this C object. =head3 Returns A L object. =cut *request = make_access_method('REQUEST'); =head2 response ($optional_response) If parameter C<$optional_response> is passed, set L object for this C object. =head3 Returns A L object. =cut *response = make_access_method('RESPONSE'); =head2 response_time ($optional_response_time) If parameter C<$optional_response_time> is passed, set response time for this C object. =head3 Returns A response time. =cut *response_time = make_access_method('RESPONSE_TIME'); =head2 convert ($test) Tries to convert test definition in some form into C object. Currenlty supports test defintion in form of C object (it is just passed through) or in the form of hash reference: { test_param1 => test_value1, test_param2 => test_value2 } =head3 Returns A new C object. =cut sub convert { my $class = shift; my $test = shift; return $test if UNIVERSAL::isa($test, 'HTTP::WebTest::Test'); my $conv_test = $class->new(%$test); return $conv_test; } =head2 reset () Resets test object =cut sub reset { my $self = shift; $self->request(undef); $self->response(undef); $self->response_time(undef); $self->results(undef); } =head1 COPYRIGHT Copyright (c) 2001-2003 Ilya Martynov. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO L L L L L =cut 1;