[Avida-cvs] [avida-svn] r660 - in development/source: testsuites tools

kaben@myxo.css.msu.edu kaben at myxo.css.msu.edu
Mon May 8 13:57:41 PDT 2006


Author: kaben
Date: 2006-05-08 16:57:41 -0400 (Mon, 08 May 2006)
New Revision: 660

Added:
   development/source/tools/nTemplateTests.cc
   development/source/tools/nTemplateTests.h
Removed:
   development/source/tools/cTemplateTests.cc
   development/source/tools/cTemplateTests.h
Modified:
   development/source/testsuites/full-unit-tests.cc
   development/source/tools/CMakeLists.txt
   development/source/tools/SConscript
Log:

Replaced class cTemplateTests with namespace nTemplateTests. The purpose
of both is collection unit tests of our template classes.



Modified: development/source/testsuites/full-unit-tests.cc
===================================================================
--- development/source/testsuites/full-unit-tests.cc	2006-05-08 20:50:38 UTC (rev 659)
+++ development/source/testsuites/full-unit-tests.cc	2006-05-08 20:57:41 UTC (rev 660)
@@ -3,7 +3,7 @@
 #include "cInitFile.h"
 #include "cRandom.h"
 #include "cString.h"
-#include "cTemplateTests.h"
+#include "nTemplateTests.h"
 
 #include <boost/detail/lightweight_test.hpp>
 
@@ -15,7 +15,7 @@
   nRandom::UnitTests(true);
   nString::UnitTests(true);
   nStringList::UnitTests(true);
-  cTemplateTests::UnitTests(true);
+  nTemplateTests::UnitTests(true);
 
   return boost::report_errors();
 }

Modified: development/source/tools/CMakeLists.txt
===================================================================
--- development/source/tools/CMakeLists.txt	2006-05-08 20:50:38 UTC (rev 659)
+++ development/source/tools/CMakeLists.txt	2006-05-08 20:57:41 UTC (rev 660)
@@ -28,11 +28,11 @@
   cStringIterator.cc
   cStringList.cc
   cStringUtil.cc
-  cTemplateTests.cc
   cThread.cc
   cTools.cc
   cWeightedIndex.cc
   cCycleCheck.cc
+  nTemplateTests.cc
 )
 
 INCLUDE_DIRECTORIES(${ALL_INC_DIRS})

Modified: development/source/tools/SConscript
===================================================================
--- development/source/tools/SConscript	2006-05-08 20:50:38 UTC (rev 659)
+++ development/source/tools/SConscript	2006-05-08 20:57:41 UTC (rev 660)
@@ -32,11 +32,11 @@
     'cStringIterator.cc',
     'cStringList.cc',
     'cStringUtil.cc',
-    'cTemplateTests.cc',
     'cThread.cc',
     'cTools.cc',
     'cWeightedIndex.cc',
     'cCycleCheck.cc',
+    'nTemplateTests.cc',
   ],
 ) 
 

Deleted: development/source/tools/cTemplateTests.cc
===================================================================
--- development/source/tools/cTemplateTests.cc	2006-05-08 20:50:38 UTC (rev 659)
+++ development/source/tools/cTemplateTests.cc	2006-05-08 20:57:41 UTC (rev 660)
@@ -1,753 +0,0 @@
-/*
- *  cTemplateTests.cc
- *  Avida
- *
- *  Copyright 2005-2006 Michigan State University. All rights reserved.
- *  Copyright 1993-2003 California Institute of Technology
- *
- */
-
-#include "cTemplateTests.h"
-
-
-/*
-Unit tests
-*/
-#include "cXMLArchive.h"
-#include "tArray.h"
-#include "tBuffer.h"
-#include "tDictionary.h"
-#include "tHashTable.h"
-#include "tList.h"
-#include "tManagedPointerArray.h"
-#include "tMatrix.h"
-#include "tMemTrack.h"
-#include "tSmartArray.h"
-
-#include <boost/detail/lightweight_test.hpp>
-
-#include <cstdio>    // for std::remove() to remove temporary files.
-#include <iomanip>
-#include <iostream>
-#include <fstream> 
-#include <string>
-
-namespace nTemplateTests {
-  /*
-  Test-helpers.
-  */  
-  class A {
-    tMemTrack<A> mt;
-  public:
-    int m_i;
-    int m_j;
-  public:
-    A():m_i(-1),m_j(-1){}
-    A(const A &in):m_i(in.m_i),m_j(in.m_j){}
-    A& operator=(const A& in){ 
-      m_i = in.m_i;
-      m_j = in.m_j;
-      return *this;
-    }
-    template<class Archive>
-    void serialize(Archive & a, const unsigned int version){
-      a.ArkvObj("m_i", m_i);
-      a.ArkvObj("m_j", m_j);
-    } 
-  };  
-  // ostream output, needed for tHashTable::OK()
-  std::ostream& operator << (std::ostream& out, const A & a){
-    out << "(" << a.m_i << "," << a.m_j << ")";
-    return out;
-  }
-      
-  template <class T>
-  void save_stuff(const T &s, const char * filename){
-    std::ofstream ofs(filename);
-    cXMLOArchive oa(ofs);
-    oa.ArkvObj("TemplateTest", s);
-  }   
-      
-  template <class T>
-  void restore_stuff(T &s, const char * filename) {
-    std::ifstream ifs(filename);
-    cXMLIArchive ia(ifs);
-    ia.ArkvObj("TemplateTest", s);
-  }   
-    
-
-  namespace utTemplateTests_hello_world {
-    void test(){
-      BOOST_TEST(true);
-      BOOST_TEST(false);
-    }
-  }
-  
-
-  namespace utMemTrack {
-    void test(){
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      {
-        A a;
-        BOOST_TEST(1 == tMemTrack<A>::Instances());
-      }
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      A *p;
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      p = new A();
-      BOOST_TEST(1 == tMemTrack<A>::Instances());
-      delete p;
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      
-    }
-  }
-  
-  namespace utList_basic_serialization {
-    void test(){
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      A *a;
-      tList<A> l;
-      tListIterator<A> it(l);
-      std::string filename("./tList_basic_serialization.xml");
-      int i, listsize = 10;
-      
-      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
-      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
-      
-      /*
-      Construct basic list.
-      */
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      for(i=0; i<listsize; i++){
-        a = new A;
-        a->m_i = i; 
-        l.PushRear(a);
-      }
-      BOOST_TEST(listsize == tMemTrack<A>::Instances());
-      BOOST_TEST(1 + listsize == tMemTrack<tListNode<A> >::Instances());
-  
-      /*
-      Verify basic list contents.
-      */
-      BOOST_TEST(listsize == tMemTrack<A>::Instances());
-      it.Reset();
-      for(i=0; (a = it.Next()); i++){
-        BOOST_TEST(i == a->m_i);
-      }
-  
-      /*
-      Save basic list.
-      */
-      save_stuff<>(l, filename.c_str());
-      it.Reset();
-      for(i=0; (a = it.Next()); i++){
-        delete a;
-      }
-      l.Clear();
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
-      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
-  
-      /*
-      Reload basic list.
-      */
-      restore_stuff<>(l, filename.c_str());
-      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
-      BOOST_TEST(listsize == tMemTrack<A>::Instances());
-      BOOST_TEST(1 + listsize == tMemTrack<tListNode<A> >::Instances());
-  
-      /*
-      Verify contents of reloaded basic list.
-      */
-      for(i=0; i<listsize; i++){
-        a = l.Pop();
-        BOOST_TEST(i == a->m_i);
-        delete a;
-      }
-  
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
-      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
-  
-      std::remove(filename.c_str());
-    }
-  } // utList_basic_serialization
-  
-  namespace utList_archive_structure {
-    void test(){
-      std::string filename("./tList_archive_structure.xml");
-      
-      A *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10;
-      
-      tList<A> l;
-      tListIterator<A> it(l);
-      
-      /*
-      Construct list...
-      */
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      a1 = new A;
-      a2 = new A;
-      BOOST_TEST(2 == tMemTrack<A>::Instances());
-      l.PushRear(a1); 
-      l.PushRear(a2);
-      l.PushRear(a1);
-      l.PushRear(a2);
-      BOOST_TEST(2 == tMemTrack<A>::Instances());
-      
-      /*
-      Verify list structure. It should now contain two copies each,
-      interleaved, of two instances of A.
-      */
-      it.Reset();
-      a3 = it.Next();
-      a4 = it.Next();
-      a5 = it.Next();
-      a6 = it.Next();
-      BOOST_TEST(2 == tMemTrack<A>::Instances());
-  
-      a1->m_i = 3;
-      a2->m_i = 5;
-      BOOST_TEST(3 == a3->m_i);
-      BOOST_TEST(5 == a4->m_i);
-      BOOST_TEST(3 == a5->m_i);
-      BOOST_TEST(5 == a6->m_i);
-  
-      /*
-      Save to disk, clear, and reload.
-      */
-      save_stuff<>(l, filename.c_str());
-      BOOST_TEST(2 == tMemTrack<A>::Instances());
-  
-      l.Clear();
-      BOOST_TEST(2 == tMemTrack<A>::Instances());
-  
-      restore_stuff<>(l, filename.c_str());
-  
-      /*
-      New list should contain two copies each, interleaved, of the two
-      new instances of A.
-      */
-      BOOST_TEST(4 == tMemTrack<A>::Instances());
-  
-      /*
-      Verify new list structure.
-      */
-      it.Reset();
-      a7 = it.Next();
-      a8 = it.Next();
-      a9 = it.Next();
-      a10 = it.Next();
-      BOOST_TEST(4 == tMemTrack<A>::Instances());
-  
-      BOOST_TEST(3 == a7->m_i);
-      BOOST_TEST(5 == a8->m_i);
-      BOOST_TEST(3 == a9->m_i);
-      BOOST_TEST(5 == a10->m_i);
-  
-      /*
-      Verify that elements of old and new lists are independent.
-      */
-      a1->m_i = 7;
-      a7->m_i = 11;
-      a8->m_i = 13;
-      BOOST_TEST(7 == a3->m_i);
-      BOOST_TEST(5 == a4->m_i);
-      BOOST_TEST(7 == a5->m_i);
-      BOOST_TEST(5 == a6->m_i);
-      BOOST_TEST(11 == a7->m_i);
-      BOOST_TEST(13 == a8->m_i);
-      BOOST_TEST(11 == a9->m_i);
-      BOOST_TEST(13 == a10->m_i);
-  
-      l.Clear();
-      /*
-      Delete originals instances of A.
-      */
-      delete a1;
-      delete a2;
-      /*
-      Delete reloaded copies of A.
-      */
-      delete a7;
-      delete a8;
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-  
-      std::remove(filename.c_str());
-    }
-  } // utList_archive_structure
-
-  namespace utArray_basic_serialization {
-    void test(){
-      std::string filename("./tArray_basic_serialization.xml");
-      int i, arraysize = 10;
-
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tArray<A> l(arraysize);
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-       
-      /*
-      Construct basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        l[i].m_i = i;
-      }
-  
-      /*
-      Verify basic array contents.
-      */ 
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-      
-      /* 
-      Save basic array.
-      */
-      save_stuff<>(l, filename.c_str());
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      /*
-      Reload basic array.
-      */
-      restore_stuff<>(l, filename.c_str());
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-
-      /*
-      Verify contents of reloaded basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utArray_basic_serialization
-  
-  namespace utHashTable_basic_serialization {
-    void test(){
-      std::string filename("./tHashTable_basic_serialization.xml");
-
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tHashTable<cString, A> d;
-      char keystr[9] = "number 0";
-      int i, dictsize = 10;
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      // Sanity checks.
-      BOOST_TEST(d.OK());
-      BOOST_TEST(0 == d.GetSize());
-      BOOST_TEST(!d.HasEntry("blah"));
-      {
-        A a;
-        BOOST_TEST(!d.Find("blah", a));
-      }
-
-      /*
-      Construct basic dict.
-      */
-      for(i=0; i<dictsize; i++){
-        A a;
-        keystr[7] = '0' + i;
-        a.m_i = i;
-        d.Add(cString(keystr), a);
-      }
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      /*
-      Verify basic dict contents.
-      */
-      for(i=0; i<dictsize; i++){
-        A a;
-        keystr[7] = '0' + i;
-        BOOST_TEST(d.Find(cString(keystr), a));
-        BOOST_TEST(i == a.m_i);
-      }
-      BOOST_TEST(d.OK());
-
-      /*
-      Save basic table.
-      */
-      save_stuff<>(d, filename.c_str());
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      /*
-      Reload basic table.
-      */
-      {
-        tHashTable<cString, A> d2;
-        restore_stuff<>(d2, filename.c_str());
-        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
-        BOOST_TEST(d2.OK());
-
-        /*
-        Verify contents of reloaded basic dict.
-        */
-        for(i=0; i<dictsize; i++){
-          A a;
-          keystr[7] = '0' + i;
-          BOOST_TEST(d2.Find(cString(keystr), a));
-          BOOST_TEST(i == a.m_i);
-        }
-        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
-      }
-
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utHashTable_basic_serialization
-
-  namespace utDictionary_basic_serialization {
-    void test(){
-      std::string filename("./tDictionary_basic_serialization.xml");
-
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tDictionary<A> d;
-      char keystr[9] = "number 0";
-      int i, dictsize = 10;
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      // Sanity checks.
-      BOOST_TEST(d.OK());
-      BOOST_TEST(0 == d.GetSize());
-      BOOST_TEST(!d.HasEntry("blah"));
-      {
-        A a;
-        BOOST_TEST(!d.Find("blah", a));
-      }
-      BOOST_TEST(cString("") == d.NearMatch("blah"));
-
-      /*
-      Construct basic dict.
-      */
-      for(i=0; i<dictsize; i++){
-        A a;
-        keystr[7] = '0' + i;
-        a.m_i = i;
-        d.Add(cString(keystr), a);
-      }
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      /*
-      Verify basic dict contents.
-      */
-      for(i=0; i<dictsize; i++){
-        A a;
-        keystr[7] = '0' + i;
-        BOOST_TEST(d.Find(cString(keystr), a));
-        BOOST_TEST(i == a.m_i);
-      }
-      BOOST_TEST(d.OK());
-
-      /*
-      Save basic list.
-      */
-      save_stuff<>(d, filename.c_str());
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      /*
-      Reload basic list.
-      */
-      {
-        tDictionary<A> d2;
-        restore_stuff<>(d2, filename.c_str());
-        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
-        BOOST_TEST(d2.OK());
-
-        /*
-        Verify contents of reloaded basic dict.
-        */
-        for(i=0; i<dictsize; i++){
-          A a;
-          keystr[7] = '0' + i;
-          BOOST_TEST(d2.Find(cString(keystr), a));
-          BOOST_TEST(i == a.m_i);
-        }
-        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
-      }
-
-      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utDictionary_basic_serialization
-
-  namespace utBuffer_basic_serialization {
-    void test(){
-      std::string filename("./tBuffer_basic_serialization.xml");
-      A a;
-      int i, buffer_size = 10;
-
-      BOOST_TEST(1 == tMemTrack<A>::Instances());
-      tBuffer<A> b(buffer_size);
-      BOOST_TEST(1 + buffer_size == tMemTrack<A>::Instances());
-       
-      /*
-      Construct basic buffer.
-      */
-      for(i=0; i < buffer_size - 1; i++){
-        a.m_i = i;
-        b.Add(a);
-      }
-  
-      /*
-      Verify basic buffer contents.
-      */ 
-      for(i=0; i < buffer_size - 1; i++){
-        BOOST_TEST(buffer_size - 2 - i == b[i].m_i);
-      }
-      BOOST_TEST(b.GetCapacity() == buffer_size);
-      BOOST_TEST(b.GetTotal() == buffer_size - 1);
-      BOOST_TEST(b.GetNumStored() == buffer_size - 1);
-      BOOST_TEST(b.GetNum() == buffer_size - 1);
-      
-      /* 
-      Save and clear basic buffer.
-      */
-      save_stuff<>(b, filename.c_str());
-      b.Clear();
-      for(i=0; i < buffer_size - 1; i++){
-        a.m_i = 0;
-        b.Add(a);
-      }
-      for(i=0; i < buffer_size - 1; i++){
-        BOOST_TEST(0 == b[i].m_i);
-      }
-      b.Clear();
-      BOOST_TEST(b.GetCapacity() == buffer_size);
-      BOOST_TEST(b.GetTotal() == 0);
-      BOOST_TEST(b.GetNumStored() == 0);
-      BOOST_TEST(b.GetNum() == 0);
-
-      /*
-      Reload basic buffer.
-      */
-      restore_stuff<>(b, filename.c_str());
-      BOOST_TEST(1 + buffer_size == tMemTrack<A>::Instances());
-
-      /*
-      Verify contents of reloaded basic buffer.
-      */
-      for(i=0; i < buffer_size - 1; i++){
-        BOOST_TEST(buffer_size - 2 - i == b[i].m_i);
-      }
-      BOOST_TEST(b.GetCapacity() == buffer_size);
-      BOOST_TEST(b.GetTotal() == buffer_size - 1);
-      BOOST_TEST(b.GetNumStored() == buffer_size - 1);
-      BOOST_TEST(b.GetNum() == buffer_size - 1);
-
-      std::remove(filename.c_str());
-    }
-  } // utBuffer_basic_serialization
-
-  namespace utManagedPointerArray_basic_serialization {
-    void test(){
-      std::string filename("./tManagedPointerArray_basic_serialization.xml");
-      int i, arraysize = 10;
-
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tManagedPointerArray<A> l(arraysize);
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-       
-      /*
-      Construct basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        l[i].m_i = i;
-      }
-  
-      /*
-      Verify basic array contents.
-      */ 
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-      
-      /* 
-      Save basic array.
-      */
-      save_stuff<>(l, filename.c_str());
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      /*
-      Reload basic array.
-      */
-      restore_stuff<>(l, filename.c_str());
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-
-      /*
-      Verify contents of reloaded basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utManagedPointerArray_basic_serialization
-
-  namespace utSmartArray_basic_serialization {
-    void test(){
-      std::string filename("./tSmartArray_basic_serialization.xml");
-      int i, arraysize = 10;
-
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tSmartArray<A> l(arraysize);
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-       
-      /*
-      Construct basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        l[i].m_i = i;
-      }
-  
-      /*
-      Verify basic array contents.
-      */ 
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-      
-      /* 
-      Save basic array.
-      */
-      save_stuff<>(l, filename.c_str());
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      /*
-      Reload basic array.
-      */
-      restore_stuff<>(l, filename.c_str());
-      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
-
-      /*
-      Verify contents of reloaded basic array.
-      */
-      for(i=0; i<arraysize; i++){
-        BOOST_TEST(i == l[i].m_i);
-      }
-
-      l.ResizeClear(0);
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utSmartArray_basic_serialization
-
-  namespace utMatrix_basic_serialization {
-    void test(){
-      std::string filename("./tMatrix_basic_serialization.xml");
-      int i, j, rows = 3, cols = 5;
-      
-      BOOST_TEST(0 == tMemTrack<A>::Instances());
-      tMatrix<A> m(rows, cols);
-      BOOST_TEST(rows * cols == tMemTrack<A>::Instances());
-      
-      /*
-      Construct basic matrix.
-      */
-      for(i=0; i<rows; i++){
-        for(j=0; j<cols; j++){
-          m[i][j].m_i = i;
-          m[i][j].m_j = j;
-        }
-      }
-  
-      /*
-      Verify basic matrix contents.
-      */
-      for(i=0; i<rows; i++){ 
-        for(j=0; j<cols; j++){
-          BOOST_TEST(i == m[i][j].m_i); 
-          BOOST_TEST(j == m[i][j].m_j);
-        }
-      } 
-        
-      /*
-      Save basic matrix. 
-      */
-      save_stuff<>(m, filename.c_str());
-      m.ResizeClear(1,1);
-      BOOST_TEST(1 == tMemTrack<A>::Instances());
-  
-      /*
-      Reload basic matrix.
-      */
-      restore_stuff<>(m, filename.c_str());
-      BOOST_TEST(rows * cols == tMemTrack<A>::Instances());
-
-      /*
-      Verify contents of reloaded basic matrix.
-      */
-      for(i=0; i<rows; i++){
-        for(j=0; j<cols; j++){
-          BOOST_TEST(i == m[i][j].m_i);
-          BOOST_TEST(j == m[i][j].m_j);
-        }
-      }
-
-      m.ResizeClear(1,1);
-      BOOST_TEST(1 == tMemTrack<A>::Instances());
-
-      std::remove(filename.c_str());
-    }
-  } // utMatrix_basic_serialization
-} // nTemplateTests
-
-void cTemplateTests::UnitTests(bool full)
-{
-  //if(full) {
-  //  std::cout << "nTemplateTests::utTemplateTests_hello_world" << std::endl;
-  //  nTemplateTests::utTemplateTests_hello_world::test();
-  //}
-  if(full) {
-    std::cout << "nTemplateTests::utMemTrack" << std::endl;
-    nTemplateTests::utMemTrack::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utList_basic_serialization" << std::endl;
-    nTemplateTests::utList_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utList_archive_structure" << std::endl;
-    nTemplateTests::utList_archive_structure::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utArray_basic_serialization" << std::endl;
-    nTemplateTests::utArray_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utHashTable_basic_serialization" << std::endl;
-    nTemplateTests::utHashTable_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utDictionary_basic_serialization" << std::endl;
-    nTemplateTests::utDictionary_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utBuffer_basic_serialization" << std::endl;
-    nTemplateTests::utBuffer_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utManagedPointerArray_basic_serialization" << std::endl;
-    nTemplateTests::utManagedPointerArray_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utSmartArray_basic_serialization" << std::endl;
-    nTemplateTests::utSmartArray_basic_serialization::test();
-  }
-  if(full) {
-    std::cout << "nTemplateTests::utMatrix_basic_serialization" << std::endl;
-    nTemplateTests::utMatrix_basic_serialization::test();
-  }
-}

Deleted: development/source/tools/cTemplateTests.h
===================================================================
--- development/source/tools/cTemplateTests.h	2006-05-08 20:50:38 UTC (rev 659)
+++ development/source/tools/cTemplateTests.h	2006-05-08 20:57:41 UTC (rev 660)
@@ -1,23 +0,0 @@
-/*
- *  cTemplateTests.h
- *  Avida
- *
- *  Copyright 2005-2006 Michigan State University. All rights reserved.
- *  Copyright 1993-2003 California Institute of Technology
- *
- */
-
-#ifndef cTemplateTests_h
-#define cTemplateTests_h
-
-class cTemplateTests {
-public:
-  /**
-   * Run unit tests
-   *
-   * @param full Run full test suite; if false, just the fast tests.
-   **/
-  static void UnitTests(bool full = false);
-};
-
-#endif

Copied: development/source/tools/nTemplateTests.cc (from rev 652, development/source/tools/cTemplateTests.cc)
===================================================================
--- development/source/tools/cTemplateTests.cc	2006-05-08 18:58:20 UTC (rev 652)
+++ development/source/tools/nTemplateTests.cc	2006-05-08 20:57:41 UTC (rev 660)
@@ -0,0 +1,756 @@
+/*
+ *  nTemplateTests.cc
+ *  Avida
+ *
+ *  Copyright 2005-2006 Michigan State University. All rights reserved.
+ *  Copyright 1993-2003 California Institute of Technology
+ *
+ */
+
+#include "nTemplateTests.h"
+
+
+/*
+Unit tests
+*/
+#include "cXMLArchive.h"
+#include "tArray.h"
+#include "tBuffer.h"
+#include "tDictionary.h"
+#include "tHashTable.h"
+#include "tList.h"
+#include "tManagedPointerArray.h"
+#include "tMatrix.h"
+#include "tMemTrack.h"
+#include "tSmartArray.h"
+
+#include <boost/detail/lightweight_test.hpp>
+
+#include <cstdio>    // for std::remove() to remove temporary files.
+#include <iomanip>
+#include <iostream>
+#include <fstream> 
+#include <string>
+
+namespace nTemplateTests {
+  /*
+  Test-helpers.
+  */  
+  class A {
+    tMemTrack<A> mt;
+  public:
+    int m_i;
+    int m_j;
+  public:
+    A():m_i(-1),m_j(-1){}
+    A(const A &in):m_i(in.m_i),m_j(in.m_j){}
+    A& operator=(const A& in){ 
+      m_i = in.m_i;
+      m_j = in.m_j;
+      return *this;
+    }
+    template<class Archive>
+    void serialize(Archive & a, const unsigned int version){
+      a.ArkvObj("m_i", m_i);
+      a.ArkvObj("m_j", m_j);
+    } 
+  };  
+  // ostream output, needed for tHashTable::OK()
+  std::ostream& operator << (std::ostream& out, const A & a){
+    out << "(" << a.m_i << "," << a.m_j << ")";
+    return out;
+  }
+      
+  template <class T>
+  void save_stuff(const T &s, const char * filename){
+    std::ofstream ofs(filename);
+    cXMLOArchive oa(ofs);
+    oa.ArkvObj("TemplateTest", s);
+  }   
+      
+  template <class T>
+  void restore_stuff(T &s, const char * filename) {
+    std::ifstream ifs(filename);
+    cXMLIArchive ia(ifs);
+    ia.ArkvObj("TemplateTest", s);
+  }   
+    
+
+  namespace utTemplateTests_hello_world {
+    void test(){
+      BOOST_TEST(true);
+      BOOST_TEST(false);
+    }
+  }
+  
+
+  namespace utMemTrack {
+    void test(){
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      {
+        A a;
+        BOOST_TEST(1 == tMemTrack<A>::Instances());
+      }
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      A *p;
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      p = new A();
+      BOOST_TEST(1 == tMemTrack<A>::Instances());
+      delete p;
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      
+    }
+  }
+  
+  namespace utList_basic_serialization {
+    void test(){
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      A *a;
+      tList<A> l;
+      tListIterator<A> it(l);
+      std::string filename("./tList_basic_serialization.xml");
+      int i, listsize = 10;
+      
+      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
+      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
+      
+      /*
+      Construct basic list.
+      */
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      for(i=0; i<listsize; i++){
+        a = new A;
+        a->m_i = i; 
+        l.PushRear(a);
+      }
+      BOOST_TEST(listsize == tMemTrack<A>::Instances());
+      BOOST_TEST(1 + listsize == tMemTrack<tListNode<A> >::Instances());
+  
+      /*
+      Verify basic list contents.
+      */
+      BOOST_TEST(listsize == tMemTrack<A>::Instances());
+      it.Reset();
+      for(i=0; (a = it.Next()); i++){
+        BOOST_TEST(i == a->m_i);
+      }
+  
+      /*
+      Save basic list.
+      */
+      save_stuff<>(l, filename.c_str());
+      it.Reset();
+      for(i=0; (a = it.Next()); i++){
+        delete a;
+      }
+      l.Clear();
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
+      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
+  
+      /*
+      Reload basic list.
+      */
+      restore_stuff<>(l, filename.c_str());
+      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
+      BOOST_TEST(listsize == tMemTrack<A>::Instances());
+      BOOST_TEST(1 + listsize == tMemTrack<tListNode<A> >::Instances());
+  
+      /*
+      Verify contents of reloaded basic list.
+      */
+      for(i=0; i<listsize; i++){
+        a = l.Pop();
+        BOOST_TEST(i == a->m_i);
+        delete a;
+      }
+  
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      BOOST_TEST(1 == tMemTrack<tList<A> >::Instances());
+      BOOST_TEST(1 == tMemTrack<tListNode<A> >::Instances());
+  
+      std::remove(filename.c_str());
+    }
+  } // utList_basic_serialization
+  
+  namespace utList_archive_structure {
+    void test(){
+      std::string filename("./tList_archive_structure.xml");
+      
+      A *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10;
+      
+      tList<A> l;
+      tListIterator<A> it(l);
+      
+      /*
+      Construct list...
+      */
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      a1 = new A;
+      a2 = new A;
+      BOOST_TEST(2 == tMemTrack<A>::Instances());
+      l.PushRear(a1); 
+      l.PushRear(a2);
+      l.PushRear(a1);
+      l.PushRear(a2);
+      BOOST_TEST(2 == tMemTrack<A>::Instances());
+      
+      /*
+      Verify list structure. It should now contain two copies each,
+      interleaved, of two instances of A.
+      */
+      it.Reset();
+      a3 = it.Next();
+      a4 = it.Next();
+      a5 = it.Next();
+      a6 = it.Next();
+      BOOST_TEST(2 == tMemTrack<A>::Instances());
+  
+      a1->m_i = 3;
+      a2->m_i = 5;
+      BOOST_TEST(3 == a3->m_i);
+      BOOST_TEST(5 == a4->m_i);
+      BOOST_TEST(3 == a5->m_i);
+      BOOST_TEST(5 == a6->m_i);
+  
+      /*
+      Save to disk, clear, and reload.
+      */
+      save_stuff<>(l, filename.c_str());
+      BOOST_TEST(2 == tMemTrack<A>::Instances());
+  
+      l.Clear();
+      BOOST_TEST(2 == tMemTrack<A>::Instances());
+  
+      restore_stuff<>(l, filename.c_str());
+  
+      /*
+      New list should contain two copies each, interleaved, of the two
+      new instances of A.
+      */
+      BOOST_TEST(4 == tMemTrack<A>::Instances());
+  
+      /*
+      Verify new list structure.
+      */
+      it.Reset();
+      a7 = it.Next();
+      a8 = it.Next();
+      a9 = it.Next();
+      a10 = it.Next();
+      BOOST_TEST(4 == tMemTrack<A>::Instances());
+  
+      BOOST_TEST(3 == a7->m_i);
+      BOOST_TEST(5 == a8->m_i);
+      BOOST_TEST(3 == a9->m_i);
+      BOOST_TEST(5 == a10->m_i);
+  
+      /*
+      Verify that elements of old and new lists are independent.
+      */
+      a1->m_i = 7;
+      a7->m_i = 11;
+      a8->m_i = 13;
+      BOOST_TEST(7 == a3->m_i);
+      BOOST_TEST(5 == a4->m_i);
+      BOOST_TEST(7 == a5->m_i);
+      BOOST_TEST(5 == a6->m_i);
+      BOOST_TEST(11 == a7->m_i);
+      BOOST_TEST(13 == a8->m_i);
+      BOOST_TEST(11 == a9->m_i);
+      BOOST_TEST(13 == a10->m_i);
+  
+      l.Clear();
+      /*
+      Delete originals instances of A.
+      */
+      delete a1;
+      delete a2;
+      /*
+      Delete reloaded copies of A.
+      */
+      delete a7;
+      delete a8;
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+  
+      std::remove(filename.c_str());
+    }
+  } // utList_archive_structure
+
+  namespace utArray_basic_serialization {
+    void test(){
+      std::string filename("./tArray_basic_serialization.xml");
+      int i, arraysize = 10;
+
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tArray<A> l(arraysize);
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+       
+      /*
+      Construct basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        l[i].m_i = i;
+      }
+  
+      /*
+      Verify basic array contents.
+      */ 
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+      
+      /* 
+      Save basic array.
+      */
+      save_stuff<>(l, filename.c_str());
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      /*
+      Reload basic array.
+      */
+      restore_stuff<>(l, filename.c_str());
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+
+      /*
+      Verify contents of reloaded basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utArray_basic_serialization
+  
+  namespace utHashTable_basic_serialization {
+    void test(){
+      std::string filename("./tHashTable_basic_serialization.xml");
+
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tHashTable<cString, A> d;
+      char keystr[9] = "number 0";
+      int i, dictsize = 10;
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      // Sanity checks.
+      BOOST_TEST(d.OK());
+      BOOST_TEST(0 == d.GetSize());
+      BOOST_TEST(!d.HasEntry("blah"));
+      {
+        A a;
+        BOOST_TEST(!d.Find("blah", a));
+      }
+
+      /*
+      Construct basic dict.
+      */
+      for(i=0; i<dictsize; i++){
+        A a;
+        keystr[7] = '0' + i;
+        a.m_i = i;
+        d.Add(cString(keystr), a);
+      }
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      /*
+      Verify basic dict contents.
+      */
+      for(i=0; i<dictsize; i++){
+        A a;
+        keystr[7] = '0' + i;
+        BOOST_TEST(d.Find(cString(keystr), a));
+        BOOST_TEST(i == a.m_i);
+      }
+      BOOST_TEST(d.OK());
+
+      /*
+      Save basic table.
+      */
+      save_stuff<>(d, filename.c_str());
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      /*
+      Reload basic table.
+      */
+      {
+        tHashTable<cString, A> d2;
+        restore_stuff<>(d2, filename.c_str());
+        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
+        BOOST_TEST(d2.OK());
+
+        /*
+        Verify contents of reloaded basic dict.
+        */
+        for(i=0; i<dictsize; i++){
+          A a;
+          keystr[7] = '0' + i;
+          BOOST_TEST(d2.Find(cString(keystr), a));
+          BOOST_TEST(i == a.m_i);
+        }
+        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
+      }
+
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utHashTable_basic_serialization
+
+  namespace utDictionary_basic_serialization {
+    void test(){
+      std::string filename("./tDictionary_basic_serialization.xml");
+
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tDictionary<A> d;
+      char keystr[9] = "number 0";
+      int i, dictsize = 10;
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      // Sanity checks.
+      BOOST_TEST(d.OK());
+      BOOST_TEST(0 == d.GetSize());
+      BOOST_TEST(!d.HasEntry("blah"));
+      {
+        A a;
+        BOOST_TEST(!d.Find("blah", a));
+      }
+      BOOST_TEST(cString("") == d.NearMatch("blah"));
+
+      /*
+      Construct basic dict.
+      */
+      for(i=0; i<dictsize; i++){
+        A a;
+        keystr[7] = '0' + i;
+        a.m_i = i;
+        d.Add(cString(keystr), a);
+      }
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      /*
+      Verify basic dict contents.
+      */
+      for(i=0; i<dictsize; i++){
+        A a;
+        keystr[7] = '0' + i;
+        BOOST_TEST(d.Find(cString(keystr), a));
+        BOOST_TEST(i == a.m_i);
+      }
+      BOOST_TEST(d.OK());
+
+      /*
+      Save basic list.
+      */
+      save_stuff<>(d, filename.c_str());
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      /*
+      Reload basic list.
+      */
+      {
+        tDictionary<A> d2;
+        restore_stuff<>(d2, filename.c_str());
+        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
+        BOOST_TEST(d2.OK());
+
+        /*
+        Verify contents of reloaded basic dict.
+        */
+        for(i=0; i<dictsize; i++){
+          A a;
+          keystr[7] = '0' + i;
+          BOOST_TEST(d2.Find(cString(keystr), a));
+          BOOST_TEST(i == a.m_i);
+        }
+        BOOST_TEST(2 * dictsize == tMemTrack<A>::Instances());
+      }
+
+      BOOST_TEST(dictsize == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utDictionary_basic_serialization
+
+  namespace utBuffer_basic_serialization {
+    void test(){
+      std::string filename("./tBuffer_basic_serialization.xml");
+      A a;
+      int i, buffer_size = 10;
+
+      BOOST_TEST(1 == tMemTrack<A>::Instances());
+      tBuffer<A> b(buffer_size);
+      BOOST_TEST(1 + buffer_size == tMemTrack<A>::Instances());
+       
+      /*
+      Construct basic buffer.
+      */
+      for(i=0; i < buffer_size - 1; i++){
+        a.m_i = i;
+        b.Add(a);
+      }
+  
+      /*
+      Verify basic buffer contents.
+      */ 
+      for(i=0; i < buffer_size - 1; i++){
+        BOOST_TEST(buffer_size - 2 - i == b[i].m_i);
+      }
+      BOOST_TEST(b.GetCapacity() == buffer_size);
+      BOOST_TEST(b.GetTotal() == buffer_size - 1);
+      BOOST_TEST(b.GetNumStored() == buffer_size - 1);
+      BOOST_TEST(b.GetNum() == buffer_size - 1);
+      
+      /* 
+      Save and clear basic buffer.
+      */
+      save_stuff<>(b, filename.c_str());
+      b.Clear();
+      for(i=0; i < buffer_size - 1; i++){
+        a.m_i = 0;
+        b.Add(a);
+      }
+      for(i=0; i < buffer_size - 1; i++){
+        BOOST_TEST(0 == b[i].m_i);
+      }
+      b.Clear();
+      BOOST_TEST(b.GetCapacity() == buffer_size);
+      BOOST_TEST(b.GetTotal() == 0);
+      BOOST_TEST(b.GetNumStored() == 0);
+      BOOST_TEST(b.GetNum() == 0);
+
+      /*
+      Reload basic buffer.
+      */
+      restore_stuff<>(b, filename.c_str());
+      BOOST_TEST(1 + buffer_size == tMemTrack<A>::Instances());
+
+      /*
+      Verify contents of reloaded basic buffer.
+      */
+      for(i=0; i < buffer_size - 1; i++){
+        BOOST_TEST(buffer_size - 2 - i == b[i].m_i);
+      }
+      BOOST_TEST(b.GetCapacity() == buffer_size);
+      BOOST_TEST(b.GetTotal() == buffer_size - 1);
+      BOOST_TEST(b.GetNumStored() == buffer_size - 1);
+      BOOST_TEST(b.GetNum() == buffer_size - 1);
+
+      std::remove(filename.c_str());
+    }
+  } // utBuffer_basic_serialization
+
+  namespace utManagedPointerArray_basic_serialization {
+    void test(){
+      std::string filename("./tManagedPointerArray_basic_serialization.xml");
+      int i, arraysize = 10;
+
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tManagedPointerArray<A> l(arraysize);
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+       
+      /*
+      Construct basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        l[i].m_i = i;
+      }
+  
+      /*
+      Verify basic array contents.
+      */ 
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+      
+      /* 
+      Save basic array.
+      */
+      save_stuff<>(l, filename.c_str());
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      /*
+      Reload basic array.
+      */
+      restore_stuff<>(l, filename.c_str());
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+
+      /*
+      Verify contents of reloaded basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utManagedPointerArray_basic_serialization
+
+  namespace utSmartArray_basic_serialization {
+    void test(){
+      std::string filename("./tSmartArray_basic_serialization.xml");
+      int i, arraysize = 10;
+
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tSmartArray<A> l(arraysize);
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+       
+      /*
+      Construct basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        l[i].m_i = i;
+      }
+  
+      /*
+      Verify basic array contents.
+      */ 
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+      
+      /* 
+      Save basic array.
+      */
+      save_stuff<>(l, filename.c_str());
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      /*
+      Reload basic array.
+      */
+      restore_stuff<>(l, filename.c_str());
+      BOOST_TEST(arraysize == tMemTrack<A>::Instances());
+
+      /*
+      Verify contents of reloaded basic array.
+      */
+      for(i=0; i<arraysize; i++){
+        BOOST_TEST(i == l[i].m_i);
+      }
+
+      l.ResizeClear(0);
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utSmartArray_basic_serialization
+
+  namespace utMatrix_basic_serialization {
+    void test(){
+      std::string filename("./tMatrix_basic_serialization.xml");
+      int i, j, rows = 3, cols = 5;
+      
+      BOOST_TEST(0 == tMemTrack<A>::Instances());
+      tMatrix<A> m(rows, cols);
+      BOOST_TEST(rows * cols == tMemTrack<A>::Instances());
+      
+      /*
+      Construct basic matrix.
+      */
+      for(i=0; i<rows; i++){
+        for(j=0; j<cols; j++){
+          m[i][j].m_i = i;
+          m[i][j].m_j = j;
+        }
+      }
+  
+      /*
+      Verify basic matrix contents.
+      */
+      for(i=0; i<rows; i++){ 
+        for(j=0; j<cols; j++){
+          BOOST_TEST(i == m[i][j].m_i); 
+          BOOST_TEST(j == m[i][j].m_j);
+        }
+      } 
+        
+      /*
+      Save basic matrix. 
+      */
+      save_stuff<>(m, filename.c_str());
+      m.ResizeClear(1,1);
+      BOOST_TEST(1 == tMemTrack<A>::Instances());
+  
+      /*
+      Reload basic matrix.
+      */
+      restore_stuff<>(m, filename.c_str());
+      BOOST_TEST(rows * cols == tMemTrack<A>::Instances());
+
+      /*
+      Verify contents of reloaded basic matrix.
+      */
+      for(i=0; i<rows; i++){
+        for(j=0; j<cols; j++){
+          BOOST_TEST(i == m[i][j].m_i);
+          BOOST_TEST(j == m[i][j].m_j);
+        }
+      }
+
+      m.ResizeClear(1,1);
+      BOOST_TEST(1 == tMemTrack<A>::Instances());
+
+      std::remove(filename.c_str());
+    }
+  } // utMatrix_basic_serialization
+
+
+
+
+  void UnitTests(bool full)
+  {
+    //if(full) {
+    //  std::cout << "utTemplateTests_hello_world" << std::endl;
+    //  utTemplateTests_hello_world::test();
+    //}
+    if(full) {
+      std::cout << "utMemTrack" << std::endl;
+      utMemTrack::test();
+    }
+    if(full) {
+      std::cout << "utList_basic_serialization" << std::endl;
+      utList_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utList_archive_structure" << std::endl;
+      utList_archive_structure::test();
+    }
+    if(full) {
+      std::cout << "utArray_basic_serialization" << std::endl;
+      utArray_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utHashTable_basic_serialization" << std::endl;
+      utHashTable_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utDictionary_basic_serialization" << std::endl;
+      utDictionary_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utBuffer_basic_serialization" << std::endl;
+      utBuffer_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utManagedPointerArray_basic_serialization" << std::endl;
+      utManagedPointerArray_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utSmartArray_basic_serialization" << std::endl;
+      utSmartArray_basic_serialization::test();
+    }
+    if(full) {
+      std::cout << "utMatrix_basic_serialization" << std::endl;
+      utMatrix_basic_serialization::test();
+    }
+  }
+} // nTemplateTests

Copied: development/source/tools/nTemplateTests.h (from rev 652, development/source/tools/cTemplateTests.h)
===================================================================
--- development/source/tools/cTemplateTests.h	2006-05-08 18:58:20 UTC (rev 652)
+++ development/source/tools/nTemplateTests.h	2006-05-08 20:57:41 UTC (rev 660)
@@ -0,0 +1,22 @@
+/*
+ *  nTemplateTests.h
+ *  Avida
+ *
+ *  Copyright 2005-2006 Michigan State University. All rights reserved.
+ *  Copyright 1993-2003 California Institute of Technology
+ *
+ */
+
+#ifndef nTemplateTests_h
+#define nTemplateTests_h
+
+namespace nTemplateTests {
+  /**
+   * Run unit tests
+   *
+   * @param full Run full test suite; if false, just the fast tests.
+   **/
+  void UnitTests(bool full = false);
+}
+
+#endif




More information about the Avida-cvs mailing list