Added tests for HB
Sebastian Riedel [Fri, 6 Jan 2006 10:45:13 +0000 (10:45 +0000)]
Changes
t/06octetstream.t [new file with mode: 0644]
t/data/octetstream/001-content.dat [new file with mode: 0644]
t/data/octetstream/001-headers.yml [new file with mode: 0644]
t/data/octetstream/001-results.dat [new file with mode: 0644]
t/data/octetstream/002-content.dat [new file with mode: 0644]
t/data/octetstream/002-headers.yml [new file with mode: 0644]
t/data/octetstream/002-results.dat [new file with mode: 0644]

diff --git a/Changes b/Changes
index 59f31eb..5d465ec 100644 (file)
--- a/Changes
+++ b/Changes
@@ -3,6 +3,7 @@ This file documents the revision history for Perl extension HTTP::Body.
 0.6   2005-11-00 00:00:00
         - Fixed buffer bug in OctetStream, reported by Daisuke Murase <typester@cpan.org>.
         - Fixed YAML prereq, reported by Jess Robinson
+        - Added tests, Ben Trott <ben@sixapart.com>.
 
 0.5   2005-11-17 00:00:00
         - Updated for PAR compatibility
diff --git a/t/06octetstream.t b/t/06octetstream.t
new file mode 100644 (file)
index 0000000..87331a2
--- /dev/null
@@ -0,0 +1,48 @@
+use strict;
+use warnings;
+
+use Test::More tests => 8;
+
+use Cwd;
+use HTTP::Body;
+use File::Spec::Functions;
+use IO::File;
+use YAML;
+
+my $path = catdir( getcwd(), 't', 'data', 'octetstream' );
+
+for ( my $i = 1 ; $i <= 2 ; $i++ ) {
+
+    my $test = sprintf( "%.3d", $i );
+    my $headers = YAML::LoadFile( catfile( $path, "$test-headers.yml" ) );
+    my $results =
+      slurp_fh( IO::File->new( catfile( $path, "$test-results.dat" ) ) );
+    my $content = IO::File->new( catfile( $path, "$test-content.dat" ) );
+    my $body = HTTP::Body->new( $headers->{'Content-Type'},
+        $headers->{'Content-Length'} );
+
+    binmode $content, ':raw';
+
+    while ( $content->read( my $buffer, 1024 ) ) {
+        $body->add($buffer);
+    }
+
+    isa_ok( $body->body, 'File::Temp', "$test OctetStream body isa" );
+    my $data = slurp_fh( $body->body );
+    is_deeply( $data, $results, "$test UrlEncoded body" );
+    cmp_ok( $body->state, 'eq', 'done', "$test UrlEncoded state" );
+    cmp_ok(
+        $body->length, '==',
+        $headers->{'Content-Length'},
+        "$test UrlEncoded length"
+    );
+}
+
+sub slurp_fh {
+    my ($fh) = @_;
+    my $data = '';
+    while ( $fh->read( my $buffer, 1024 ) ) {
+        $data .= $buffer;
+    }
+    $data;
+}
diff --git a/t/data/octetstream/001-content.dat b/t/data/octetstream/001-content.dat
new file mode 100644 (file)
index 0000000..bc56c4d
--- /dev/null
@@ -0,0 +1 @@
+Foo
diff --git a/t/data/octetstream/001-headers.yml b/t/data/octetstream/001-headers.yml
new file mode 100644 (file)
index 0000000..99ff2b1
--- /dev/null
@@ -0,0 +1,4 @@
+---
+Content-Length: 4
+Content-Type: application/octet-stream
+User-Agent: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312'
diff --git a/t/data/octetstream/001-results.dat b/t/data/octetstream/001-results.dat
new file mode 100644 (file)
index 0000000..bc56c4d
--- /dev/null
@@ -0,0 +1 @@
+Foo
diff --git a/t/data/octetstream/002-content.dat b/t/data/octetstream/002-content.dat
new file mode 100644 (file)
index 0000000..3b45458
--- /dev/null
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/t/data/octetstream/002-headers.yml b/t/data/octetstream/002-headers.yml
new file mode 100644 (file)
index 0000000..152afff
--- /dev/null
@@ -0,0 +1,4 @@
+---
+Content-Length: 1025
+Content-Type: application/x.atom+xml
+User-Agent: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312'
diff --git a/t/data/octetstream/002-results.dat b/t/data/octetstream/002-results.dat
new file mode 100644 (file)
index 0000000..3b45458
--- /dev/null
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa