Test::Environment::Plugin::Apache2::Apache2::Filter - fake Apache2::Filter for Test::Environment


Test-Environment documentation Contained in the Test-Environment distribution.

Index


Code Index:

NAME

Top

Test::Environment::Plugin::Apache2::Apache2::Filter - fake Apache2::Filter for Test::Environment

SYNOPSIS

Top

    use Test::Environment qw{
        Apache2
    };

    my $filter = Apache2::Filter->new(
        'data' => \$data,
    );

    is(
        My::App:Apache2::Filter::handler($filter),
        Apache2::Const::OK,
    );
    is($$filter->r->pnotes('any_news'), 'no');

DESCRIPTION

Top

Will populate Apache2::Filter namespace with fake methods that can be used for Apache2::Filter testing.

PROPERTIES

Top

    ctx
    data
    max_buffer_size
    data_for_next_filter
    seen_eos

METHODS

Top

new()

Filter object contructor.

read($bufer, $len)

Will put $len (or $self->max_bufer_size if smaller) characters from $self->data into the buffer.

TODO

Top

	* implement sending/setting eos

AUTHOR

Top

Jozef Kutej


Test-Environment documentation Contained in the Test-Environment distribution.
package Test::Environment::Plugin::Apache2::Apache2::Filter;

our $VERSION = '0.06';

1;

package Apache2::Filter;

use warnings;
use strict;

our $VERSION = '0.06';

use IO::String;
use Carp::Clan ();

use base 'Class::Accessor::Fast';
__PACKAGE__->mk_accessors(qw{
    ctx
    data
    max_buffer_size
    seen_eos
});

sub new {
    my $class = shift;
    my $self = $class->SUPER::new({
        'data'            => '',
        'request_rec'     => {},
        'max_buffer_size' => 100,
        @_,
    });
    
    if (ref $self->data eq 'SCALAR') {
        $self->{'data'} = IO::String->new(${$self->data});
    }
    elsif (ref $self->data eq '') {
        my $filename = $self->{'data'};
        open($self->{'data'}, '<', $filename)
            or die 'failed to open "'.$filename.'": '.$!;
    }
    elsif (eval { $self->data->can('read'); }) {
    }
    else {
        Carp::Clan::croak('wrong "data" argument passed');
    }
    
    return $self;
}


sub read {
    my $self   = shift;

    my $buffer   = \$_[0];
    my $len      =  $_[1];
    
    $len = $self->max_buffer_size
        if $len > $self->max_buffer_size;
    
    return read($self->data, $$buffer, $len);
}


sub print {
    my $self   = shift;

    $self->{'data_for_next_filter'} .= @_;
}


'man who sold the world';

__END__