<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML ><HEAD ><TITLE >Writing A Test Case</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="DejaGnu" HREF="book1.html"><LINK REL="UP" TITLE="Extending DejaGnu" HREF="c896.html"><LINK REL="PREVIOUS" TITLE="Board Config File Values" HREF="x1031.html"><LINK REL="NEXT" TITLE="Debugging A Test Case" HREF="x1259.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >DejaGnu: The GNU Testing Framework</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x1031.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Extending DejaGnu</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x1259.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="WRITING" ></A >Writing A Test Case</H1 ><P >The easiest way to prepare a new test case is to base it on an existing one for a similar situation. There are two major categories of tests: batch or interactive. Batch oriented tests are usually easier to write.</P ><P >The GCC tests are a good example of batch oriented tests. All GCC tests consist primarily of a call to a single common procedure, Since all the tests either have no output, or only have a few warning messages when successfully compiled. Any non-warning output is a test failure. All the C code needed is kept in the test directory. The test driver, written in Tcl, need only get a listing of all the C files in the directory, and compile them all using a generic procedure. This procedure and a few others supporting for these tests are kept in the library module <TT CLASS="FILENAME" >lib/c-torture.exp</TT > in the GCC test suite. Most tests of this kind use very few <SPAN CLASS="PRODUCTNAME" >expect</SPAN > features, and are coded almost purely in Tcl.</P ><P >Writing the complete suite of C tests, then, consisted of these steps:</P ><P ></P ><UL ><LI STYLE="list-style-type: disc" ><P >Copying all the C code into the test directory. These tests were based on the C-torture test created by Torbjorn Granlund (on behalf of the Free Software Foundation) for GCC development.</P ></LI ><LI STYLE="list-style-type: disc" ><P >Writing (and debugging) the generic Tcl procedures for compilation.</P ></LI ><LI STYLE="list-style-type: disc" ><P >Writing the simple test driver: its main task is to search the directory (using the Tcl procedure <I CLASS="EMPHASIS" >glob</I > for filename expansion with wildcards) and call a Tcl procedure with each filename. It also checks for a few errors from the testing procedure.</P ></LI ></UL ><P >Testing interactive programs is intrinsically more complex. Tests for most interactive programs require some trial and error before they are complete.</P ><P >However, some interactive programs can be tested in a simple fashion reminiscent of batch tests. For example, prior to the creation of DejaGnu, the GDB distribution already included a wide-ranging testing procedure. This procedure was very robust, and had already undergone much more debugging and error checking than many recent DejaGnu test cases. Accordingly, the best approach was simply to encapsulate the existing GDB tests, for reporting purposes. Thereafter, new GDB tests built up a family of Tcl procedures specialized for GDB testing.</P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x1031.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x1259.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Board Config File Values</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c896.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Debugging A Test Case</TD ></TR ></TABLE ></DIV ></BODY ></HTML >