Index: t/dynoplibs/myops.t
===================================================================
--- t/dynoplibs/myops.t	(revision 11400)
+++ t/dynoplibs/myops.t	(working copy)
@@ -57,7 +57,7 @@
 fortytwo
 OUTPUT
 
-pir_output_is(<< 'CODE', << 'OUTPUT', "hcf");
+pir_output_unlike(<< 'CODE', << 'OUTPUT', "hcf");
 .sub main :main
     loadlib P1, "myops_ops"
     print "neither here\n"
@@ -65,7 +65,9 @@
     print "nor there\n"
 .end
 CODE
-neither here
+/neither here
+nor there
+/
 OUTPUT
 
 {
Index: lib/Parrot/Test.pm
===================================================================
--- lib/Parrot/Test.pm	(revision 11400)
+++ lib/Parrot/Test.pm	(working copy)
@@ -177,6 +177,11 @@
 
 =back
 
+=head2 like and unlike
+
+Using the methods ending in like succeed if the pattern matches the output.
+The methods ending in unlike succeed if the pattern does not match the output.
+
 =cut
 
 package Parrot::Test;
@@ -195,20 +200,21 @@
 
 
 @EXPORT = qw( 
-              language_output_is language_output_like language_output_isnt
-              example_output_is
-              output_is          output_like          output_isnt
-              pasm_output_is     pasm_output_like     pasm_output_isnt
-              past_output_is     past_output_like     past_output_isnt
-              pir_output_is      pir_output_like      pir_output_isnt
-              pir_2_pasm_is      pir_2_pasm_like      pir_2_pasm_isnt
-              pbc_output_is      pbc_output_like      pbc_output_isnt
-              c_output_is        c_output_like        c_output_isnt
-              plan
-              skip
-              slurp_file
-              run_command
-          );
+    language_output_is language_output_like
+    language_output_unlike language_output_isnt
+    example_output_is                                            
+    output_is      output_like      output_unlike      output_isnt
+    pasm_output_is pasm_output_like pasm_output_unlike pasm_output_isnt
+    past_output_is past_output_like past_output_unlike past_output_isnt
+    pir_output_is  pir_output_like  pir_output_unlike  pir_output_isnt
+    pir_2_pasm_is  pir_2_pasm_like  pir_2_pasm_unlike  pir_2_pasm_isnt
+    pbc_output_is  pbc_output_like  pbc_output_unlike  pbc_output_isnt
+    c_output_is    c_output_like    c_output_unlike    c_output_isnt
+    plan
+    skip
+    slurp_file
+    run_command
+);
 @ISA = qw(Exporter);
 
 # tell parrot it's being tested.  this disables searching of installed libraries
@@ -342,21 +348,27 @@
         output_is          => 'is_eq',
         output_isnt        => 'isnt_eq',
         output_like        => 'like',
+        output_unlike        => 'unlike',
         pbc_output_is      => 'is_eq',
         pbc_output_isnt    => 'isnt_eq',
         pbc_output_like    => 'like',
+        pbc_output_unlike    => 'unlike',
         pasm_output_is     => 'is_eq',
         pasm_output_isnt   => 'isnt_eq',
         pasm_output_like   => 'like',
+        pasm_output_unlike   => 'unlike',
         past_output_is     => 'is_eq',
         past_output_isnt   => 'isnt_eq',
         past_output_like   => 'like',
+        past_output_unlike   => 'unlike',
         pir_output_is      => 'is_eq',
         pir_output_isnt    => 'isnt_eq',
         pir_output_like    => 'like',
+        pir_output_unlike    => 'unlike',
         pir_2_pasm_is      => 'is_eq',
         pir_2_pasm_isnt    => 'isnt_eq',
         pir_2_pasm_like    => 'like',
+        pir_2_pasm_unlike    => 'unlike',
                           );
 
     foreach my $func ( keys %parrot_test_map ) {
@@ -546,7 +558,8 @@
     my %c_test_map = (
          c_output_is   => 'is_eq',
          c_output_isnt => 'isnt_eq',
-         c_output_like => 'like'
+         c_output_like => 'like',
+         c_output_unlike => 'unlike',
                      );
 
     foreach my $func ( keys %c_test_map ) {
