--- docs/tests.pod	Mon Sep 29 14:10:51 2003
+++ docs/tests.pod.new	Mon Sep 29 14:09:02 2003
@@ -11,31 +11,64 @@
 
 =head2 How to write a test
 
-First, find an appropriate file in F<t/op/*.t> (for basic ops) or
-F<t/pmc/*.t> (for anything to do with PMCs). If there isn't an
-appropriate file, create one.
+First, find an appropriate file in F<t/op/*.t> (for basic ops),
+F<t/pmc/*.t> (for anything to do with PMCs), and F<t/src/*.t> for C
+source code tests. If there isn't an appropriate file, create one.
 
 Near the top of each file, you'll see a line like:
 
   use Parrot::Test tests => 8;
 
-This sets up the test harness used to assemble and run the tests,
-and lets it know how many tests you plan to run. New tests should be
-added by:
-
- 1. Incrementing the number of planned tests.
-
- 2. Putting some code in like this:
-
-	output_is(<<'CODE', <<'OUTPUT', "name for test");
-		*** a big chunk of assembler, eg:
-		print   1
-		print   "\n" # you can even comment it if it's obscure
-		end          # don't forget this...!
-	CODE
-	 *** what you expect the output of the chunk to be, eg.
-	1
-	OUTPUT
+This sets up the test harness used to assemble and run the tests, and
+lets it know how many tests you plan to run. New tests should be added
+by:
+
+1. Incrementing the number of planned tests.
+
+2. Putting some code in like this:
+
+    output_is(<<'CODE', <<'OUTPUT', "name for test");
+        *** a big chunk of assembler, eg:
+        print   1
+        print   "\n" # you can even comment it if it's obscure
+        end          # don't forget this...!
+    CODE
+    *** what you expect the output of the chunk to be, eg.
+    1
+    OUTPUT
+
+or, if it is a C test, some code like this:
+
+    c_output_is(<<'CODE', <<'OUTPUT', "name for test");
+    #include <stdio.h>
+    #include "parrot/parrot.h"
+    #include "parrot/embed.h"
+    
+    int do_test(Interp *interpreter);
+    
+    int main(int argc, char* argv[]) {
+        Interp* interpreter;
+        interpreter = Parrot_new();
+
+        if ( interpreter == NULL ) return 1;
+        interpreter->lo_var_ptr = &interpreter;
+    
+        Parrot_init(interpreter);
+        return do_test(interpreter);
+    }
+    
+    int do_test(Interp *interpreter) {
+        /* Your test goes here. */
+        printf("done\n");
+        return 0;
+    }
+    CODE
+    # Anything that might be output prior to "done".
+    done
+    OUTPUT
+
+Note, it's always a good idea to output "done" to confirm that the
+compiled code executed completely.
 
 =head2 Ideal tests:
 
