Author: particle
Date: Sat Feb  3 23:16:07 2007
New Revision: 16889

Added:
   trunk/t/pmc/io_iterator.t
   trunk/t/pmc/io_status.t
Modified:
   trunk/MANIFEST

Log:
[PDD22]: add TODO tests for not yet implemented IO status and iterator objects

Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Sat Feb  3 23:16:07 2007
@@ -2794,6 +2794,8 @@
 t/pmc/integer.t                                             []
 t/pmc/intlist.t                                             []
 t/pmc/io.t                                                  []
+t/pmc/io_iterator.t                                         []
+t/pmc/io_status.t                                           []
 t/pmc/iterator.t                                            []
 t/pmc/key.t                                                 []
 t/pmc/lexinfo.t                                             []

Added: trunk/t/pmc/io_iterator.t
==============================================================================
--- (empty file)
+++ trunk/t/pmc/io_iterator.t   Sat Feb  3 23:16:07 2007
@@ -0,0 +1,115 @@
+#!perl
+# Copyright (C) 2006, The Perl Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test tests => 3;
+
+=head1 NAME
+
+t/pmc/io_iterator.t - test the I/O Iterator PMC described in PDD22
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/io_iterator.t
+
+=head1 DESCRIPTION
+
+Tests the I/O Iterator PMC described in PDD22.
+
+=cut
+
+
+# TODO create helper functions to put data in an i/o pmc
+
+
+# L<PDD22/I\/O Iterator PMC API/=item new>
+pir_output_is( <<'CODE', <<'OUT', 'new', todo => 'not yet implemented' );
+.sub 'test' :main
+    $P99 = 1 # TODO replace with io object
+    $P0 = new .Iterator, $P99
+    say 'ok 1 - $P0 = new .Iterator, $P1'
+.end
+CODE
+ok 1 - $P0 = new .Iterator, $P1
+OUT
+
+
+# L<PDD22/I\/O Iterator PMC API/=item shift>
+pir_output_is( <<'CODE', <<'OUT', 'shift', todo => 'not yet implemented' );
+.sub 'test' :main
+    $P99 = 1 # TODO replace with io object
+    $P0 = new .Iterator, $P99
+
+    $S0 = shift $P0
+
+    if $S0 == 'abc' goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $S0 = shift $P1 # success'
+
+    # TODO test more return values, including end of file
+.end
+CODE
+ok 1 - $I0 = shift $P1 # success
+OUT
+
+
+# L<PDD22/I\/O Iterator PMC API/=item get_bool (vtable)>
+pir_output_is( <<'CODE', <<'OUT', 'get_bool (vtable)', todo => 'not yet 
implemented' );
+.sub 'test' :main
+    $P99 = 1 # TODO replace with io object
+    $P0 = new .Iterator, $P99
+
+    # empty i/o object
+    unless $P0 goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $P0 # empty i/o object returns false'
+
+    # TODO setup i/o object with two lines
+    if $P0 got ok_2
+    print 'not '
+  ok_2:
+    say 'ok 2 - $P0 # i/o object with data returns true
+
+    $S0 = shift $P0
+    $I0 = length $S0
+    unless $I0 goto nok_3
+    if $P0 goto ok_3
+
+  nok_3:
+    print 'not '
+  ok_3:
+    say 'ok 3 - $P0 # i/o object with more data returns true'
+
+    $S0 = shift $P0
+    $I0 = length $S0
+    unless $I0 goto nok_4
+    unless $P0 goto ok_4
+
+  nok_4:
+    print 'not '
+  ok_4:
+    say 'ok 4 - $P0 # i/o object with no more data returns false'
+
+    if $P0 goto ok_1
+    print 'not '
+.end
+CODE
+ok 1 - $P0 # empty i/o object returns false
+ok 2 - $P0 # i/o object with data returns true
+ok 3 - $P0 # i/o object with more data returns true
+ok 4 - $P0 # i/o object with no more data returns false
+OUT
+
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Added: trunk/t/pmc/io_status.t
==============================================================================
--- (empty file)
+++ trunk/t/pmc/io_status.t     Sat Feb  3 23:16:07 2007
@@ -0,0 +1,228 @@
+#!perl
+# Copyright (C) 2006, The Perl Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test tests => 6;
+
+=head1 NAME
+
+t/pmc/io_status.t - test the Status PMC described in PDD22
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/io_status.t
+
+=head1 DESCRIPTION
+
+Tests the Status PMC described in PDD22.
+
+=cut
+
+
+# L<PDD22/Status Object PMC API/=item new>
+pir_output_is( <<'CODE', <<'OUT', 'new', todo => 'not yet implemented' );
+.sub 'test' :main
+    new P0, .Status
+    say 'ok 1 - $P0 = new .Status'
+.end
+CODE
+ok 1 - $P0 = new .Status
+OUT
+
+
+# L<PDD22/Status Object PMC API/=item get_integer (vtable)>
+pir_output_is( <<'CODE', <<'OUT', 'get_integer (vtable)', todo => 'not yet 
implemented' );
+.sub 'test' :main
+    $P0 = new .Status
+
+    # TODO test more return values
+    # TODO figure out how to set the values to make testing possible
+    $I0 = $P0
+
+    if $I0 == 1 goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $I0 = $P1 # success'
+
+    if $I0 == 0 goto ok_2
+    print 'not '
+  ok_2:
+    say 'ok 2 - $I0 = $P1 # still running'
+
+    if $I0 == -1 goto ok_3
+    print 'not '
+  ok_3:
+    say 'ok 3 - $I0 = $P1 # failure
+.end
+CODE
+ok 1 - $I0 = $P0 # success
+ok 2 - $I0 = $P0 # still running
+ok 3 - $I0 = $P0 # failure
+OUT
+
+
+# L<PDD22/Status Object PMC API/=item get_bool (vtable)>
+pir_output_is( <<'CODE', <<'OUT', 'get_bool (vtable)', todo => 'not yet 
implemented' );
+.sub 'test' :main
+    $P0 = new .Status
+
+    # TODO figure out how to set the values to make testing possible
+
+    if $P0 goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $P0 # success'
+
+    if $P0 goto ok_2
+    print 'not '
+  ok_2:
+    say 'ok 2 - $P0 # still running'
+
+    unless $P0 goto ok_3
+    print 'not '
+  ok_3:
+    say 'ok 3 - $P0 # failure
+.end
+CODE
+ok 1 - $P0 # success
+ok 2 - $P0 # still running
+ok 3 - $P0 # failure
+OUT
+
+
+# L<PDD22/Status Object PMC API/=item return>
+pir_output_is( <<'CODE', <<'OUT', 'return', todo => 'not yet implemented' );
+.sub 'test' :main
+    $P0 = new .Status
+
+    # TODO test all return values
+    # TODO figure out how to set the values to make testing possible
+
+    $P1 = $P0.return()
+
+    if $P1 goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $P0 = $P1.return() # success'
+
+    # TODO test return value is expected value
+
+    if null $P1 goto ok_2
+    print 'not '
+  ok_2:
+    say 'ok 2 - $P0 = $P1.return() # still running'
+
+    if null $P1 goto ok_3
+    print 'not '
+  ok_3:
+    say 'ok 3 - $P0 = $P1.return() # no return value
+.end
+CODE
+ok 1 - $P0 = $P1.return() # success
+ok 2 - $P0 = $P1.return() # still running
+ok 3 - $P0 = $P1.return() # no return value
+OUT
+
+
+# L<PDD22/Status Object PMC API/=item error>
+pir_output_is( <<'CODE', <<'OUT', 'error', todo => 'not yet implemented' );
+.sub 'test' :main
+    $P0 = new .Status
+
+    # TODO test all error values
+    # TODO figure out how to set the values to make testing possible
+
+    $P1 = $P0.error()
+
+    if null $P1 goto ok_1
+    print 'not '
+  ok_1:
+    say 'ok 1 - $P0 = $P1.error() # success'
+
+    $P1 = $P0.error() # need still running here
+
+    if null $P1 goto ok_2
+    print 'not '
+  ok_2:
+    say 'ok 2 - $P0 = $P1.error() # still running'
+
+    $P1 = $P0.error() # need real error here
+
+    unless null $P1 goto ok_3
+    print 'not '
+  ok_3:
+    say 'ok 3 - $P0 = $P1.error() # got an error'
+
+    $I0 = isa $P1, 'Exception'
+    if $I0 goto ok_4
+    print 'not '
+  ok_4:
+    say 'ok 4 - $P0 = $P1.error() # error isa Exception'
+
+    # TODO test error value is expected value
+
+    $P1 = $P0.error() # need no error here
+
+    if null $P1 goto ok_5
+    print 'not '
+  ok_5:
+    say 'ok 5 - $P0 = $P1.error() # no error
+.end
+CODE
+ok 1 - $P0 = $P1.error() # success
+ok 2 - $P0 = $P1.error() # still running
+ok 3 - $P0 = $P1.error() # got an error
+ok 4 - $P0 = $P1.error() # error isa Exception
+ok 5 - $P0 = $P1.error() # no error
+OUT
+
+
+# L<PDD22/Status Object PMC API/=item throw>
+pir_output_is( <<'CODE', <<'OUT', 'throw', todo => 'not yet implemented' );
+.sub 'test' :main
+    $P0 = new .Status
+
+    # TODO figure out how to set the values to make testing possible
+
+    push_eh eh_no_error
+    $P0.throw()
+    clear_eh eh_no_error
+
+    say 'ok 1 - $P0.throw() # no error'
+
+  test_2:
+    $P0 = new .Status # need error here
+
+    push_eh eh_error
+    $P0.throw()
+    clear_eh
+
+    say 'not ok 2 - $P0.throw() # error'
+
+    goto end
+
+  eh_no_error:
+    say 'not ok 1 - $P0.throw() # no error'
+    goto test_2
+
+  eh_error:
+    say 'ok 2 - $P0.throw() # error'
+
+  end:
+.end
+CODE
+ok 1 - $P1.throw() # no error
+ok 2 - $P1.throw() # error
+OUT
+
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Reply via email to