dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #02938
Re: Writing unit tests
On Tue, Aug 08, 2006 at 01:23:38AM +0200, Johan Jansson wrote:
> On Mon, Aug 07, 2006 at 08:52:30PM +0200, Anders Logg wrote:
> > I have added a simple example of some unit tests to src/test/.
> > We should populate this directory with subdirectories for each module
> > (like in src/demo, src/bench, src/kernel) with unit tests for the
> > different modules. Place test.py for module foo in src/test/foo/.
> >
> > Here's a simple example:
> >
> > """Unit test for the mesh library"""
> >
> > import unittest
> > from dolfin import *
> >
> > class SimpleShapes(unittest.TestCase):
> >
> > def testUnitSquare(self):
> > """Create mesh of unit square"""
> > mesh = NewUnitSquare(5, 7)
> > self.assertEqual(mesh.numVertices(), 48)
> > self.assertEqual(mesh.numCells(), 70)
> >
> > def testUnitCube(self):
> > """Create mesh of unit cube"""
> > mesh = NewUnitCube(5, 7, 9)
> > self.assertEqual(mesh.numVertices(), 480)
> > self.assertEqual(mesh.numCells(), 1890)
> >
> > if __name__ == "__main__":
> > unittest.main()
> >
> > It's very simple:
> >
> > 1. Create a sub class of unittest.TestCase for each sub group of unit
> > tests for the module in question (only one sub group here).
> >
> > 2. Create a function named testFoo for each unit test.
> >
> > 3. Call self.assertEqual (or one of the other available tests) for
> > each unit test.
> >
> > 4. Add the two lines at the bottom of the file.
> >
> > This only works for PyDOLFIN, but maybe that's enough.
> >
> > It's a good practice to write the tests before writing the code. That
> > way, we won't forget to write them.
> >
> > /Anders
>
> This is an excellent practice, to write examples with expected
> results. It also servers as an implicit documentation of the code,
> which is very good since we don't normally write extensive
> documentation for every function.
>
> PyDOLFIN mirrors the C++ interface except for a few exceptions, so
> performing the unit tests in Python should be sufficient.
>
> Johan
Maybe we should soon change --enable-pydolfin to --disable-pydolfin so
PyDOLFIN is installed by default?
/Anders
References