# Copyright (C) 2004 Joshua Hoblitt
#
# $Id: 02_split.t,v 1.2 2004/07/18 19:36:35 jhoblitt Exp $
use strict;
use warnings;
use Test::More tests => 30;
require
require HTTP::Range;
require HTTP::Request;
require HTTP::Headers;
{
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 999,
);
is( $req[0]->method, "GET" );
is( $req[0]->uri, "http://example.com/" );
is( $req[0]->header( 'Range' ), "bytes=0-249" );
is( $req[1]->method, "GET" );
is( $req[1]->uri, "http://example.com/" );
is( $req[1]->header( 'Range' ), "bytes=250-499" );
is( $req[2]->method, "GET" );
is( $req[2]->uri, "http://example.com/" );
is( $req[2]->header( 'Range' ), "bytes=500-749" );
is( $req[3]->method, "GET" );
is( $req[3]->uri, "http://example.com/" );
is( $req[3]->header( 'Range' ), "bytes=750-998" );
}
{
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 999,
segments => 2,
);
is( $req[0]->method, "GET" );
is( $req[0]->uri, "http://example.com/" );
is( $req[0]->header( 'Range' ), "bytes=0-499" );
is( $req[1]->method, "GET" );
is( $req[1]->uri, "http://example.com/" );
is( $req[1]->header( 'Range' ), "bytes=500-998" );
}
{
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 2,
segments => 2,
);
is( @req, 2 );
}
eval {
my @req = HTTP::Range->split();
};
like( $@, qr/Mandatory parameter/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
);
};
like( $@, qr/Mandatory parameter/ );
eval {
my @req = HTTP::Range->split(
length => 42,
);
};
like( $@, qr/Mandatory parameter/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Headers->new,
length => 1,
);
};
like( $@, qr/not a 'HTTP::Request'/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 0,
);
};
like( $@, qr/length is > 0/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 1.5,
);
};
like( $@, qr/length is \+ integer/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => -1,
);
};
like( $@, qr/length is \+ integer/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 42,
segments => 1,
);
};
like( $@, qr/segments is > 1/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 42,
segments => 1.5,
);
};
like( $@, qr/segments is \+ integer/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 42,
segments => -1,
);
};
like( $@, qr/segments is \+ integer/ );
eval {
my @req = HTTP::Range->split(
request => HTTP::Request->new( GET => "http://example.com/" ),
length => 1,
segments => 2,
);
};
like( $@, qr/segments is <= length/ );