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

kaben@myxo.css.msu.edu kaben at myxo.css.msu.edu
Tue May 2 20:53:45 PDT 2006


Author: kaben
Date: 2006-05-02 23:53:45 -0400 (Tue, 02 May 2006)
New Revision: 636

Modified:
   development/source/testsuites/CMakeLists.txt
   development/source/testsuites/SConscript
   development/source/tools/cInitFile.cc
Log:

Added cInitFile unit test "utInitFile_ReadString_after_open_and_close".



Modified: development/source/testsuites/CMakeLists.txt
===================================================================
--- development/source/testsuites/CMakeLists.txt	2006-05-03 03:05:25 UTC (rev 635)
+++ development/source/testsuites/CMakeLists.txt	2006-05-03 03:53:45 UTC (rev 636)
@@ -1,14 +1,25 @@
-#SUBDIRS(unit_testsuites)
 
 INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-ADD_EXECUTABLE(full-unit-tests full-unit-tests.cc)
-IF(MSVC)
-  TARGET_LINK_LIBRARIES(full-unit-tests main classification cpu event analyze drivers analyze cpu tools actions main archive boost_serialization)
-ELSE(MSVC)
-  TARGET_LINK_LIBRARIES(full-unit-tests main classification cpu event analyze drivers analyze cpu tools actions pthread main archive boost_serialization)
-ENDIF(MSVC)
 LINK_DIRECTORIES(${ALL_LIB_DIRS})
-INSTALL_TARGETS(/work full-unit-tests)
 
-ADD_TEST("full-unit-tests" "${EXECUTABLE_OUTPUT_PATH}/full-unit-tests")
+#
+# This setup assumes that unit test suite source code has the same name as the
+# unit test, e.g.:
+# blah-unit-tests.cc and blah-unit-tests
+#
+
+SET(UNITTEST_SUITES
+  full-unit-tests
+  cInitFile-unit-tests
+)   
+FOREACH(TEST_SUITE ${UNITTEST_SUITES})
+  ADD_EXECUTABLE(${TEST_SUITE} ${TEST_SUITE}.cc)
+  IF(MSVC)
+    TARGET_LINK_LIBRARIES(${TEST_SUITE} main classification cpu event analyze drivers analyze cpu tools actions main archive boost_serialization)
+  ELSE(MSVC)
+    TARGET_LINK_LIBRARIES(${TEST_SUITE} main classification cpu event analyze drivers analyze cpu tools actions pthread main archive boost_serialization)
+  ENDIF(MSVC)
+  INSTALL_TARGETS(/work ${TEST_SUITE})
+  
+  ADD_TEST("${TEST_SUITE}" "${EXECUTABLE_OUTPUT_PATH}/${TEST_SUITE}")
+ENDFOREACH(TEST_SUITE)

Modified: development/source/testsuites/SConscript
===================================================================
--- development/source/testsuites/SConscript	2006-05-03 03:05:25 UTC (rev 635)
+++ development/source/testsuites/SConscript	2006-05-03 03:53:45 UTC (rev 636)
@@ -35,25 +35,14 @@
 
 Import('environment')
 
-full_unit_tests = environment.Program('full-unit-tests',
-  'full-unit-tests.cc',
-  LIBS = [
-    'main',
-    'classification',
-    'cpu',
-    'event',
-    'analyze',
-    'drivers',
-    'analyze',
-    'cpu',
-    'tools',
-    'actions',
-    'main',
-    'archive',
-    'boost_serialization',
-  ],
+full_unit_tests = environment.Program('full-unit-tests', 'full-unit-tests.cc',
+  LIBS = [ 'main', 'classification', 'cpu', 'event', 'analyze', 'drivers', 'analyze', 'cpu', 'tools', 'actions', 'main', 'archive', 'boost_serialization', ],
 )
-
 Test(environment, full_unit_tests)
 
+cInitFile_unit_tests = environment.Program('cInitFile-unit-tests', 'cInitFile-unit-tests.cc',
+  LIBS = [ 'main', 'classification', 'cpu', 'event', 'analyze', 'drivers', 'analyze', 'cpu', 'tools', 'actions', 'main', 'archive', 'boost_serialization', ],
+)
+Test(environment, cInitFile_unit_tests)
+
 # vim: set ft=python:

Modified: development/source/tools/cInitFile.cc
===================================================================
--- development/source/tools/cInitFile.cc	2006-05-03 03:05:25 UTC (rev 635)
+++ development/source/tools/cInitFile.cc	2006-05-03 03:53:45 UTC (rev 636)
@@ -366,7 +366,8 @@
 
       // Open cInitFile_data.txt for reading.
       cInitFile f(data_file_name.c_str());
-      // Close file.
+      f.Load();
+      f.Compress();
       f.Close();
       BOOST_TEST(!f.IsOpen());
 
@@ -385,6 +386,44 @@
       std::remove(data_file_name.c_str());
     }
   } // utInitFile_archiving_closed_file
+
+  /*
+  Bugfix: cInitFile was returning default value instead of value read
+  from a closed init file, even though file had been open and read.
+  @kgn
+  */
+  namespace utInitFile_ReadString_after_open_and_close {
+    void test(){
+      std::string data_file_name("./utInitFile_ReadString_after_open_and_close.cfg");
+      {
+        std::ofstream data_file(data_file_name.c_str());
+        data_file << "TEST_VALUE BLAH" << std::endl;
+        data_file << std::endl;
+      }
+
+      std::string filename("./cInitFile_serialize_closed_file.xml");
+
+      // Open cInitFile_data.txt for reading.
+      cInitFile f(data_file_name.c_str());
+      f.Load();
+      f.Compress();
+      f.Close();
+
+      const cString keyword("TEST_VALUE");
+      const cString expected_val("BLAH");
+      const cString default_val("ICK");
+      const cString loaded_val(f.ReadString(keyword, default_val));
+      BOOST_TEST(!f.IsOpen());
+      BOOST_TEST(loaded_val == expected_val);
+      std::cout << "utInitFile_ReadString_after_open_and_close:" << std::endl;
+      std::cout << "  keyword: " << keyword << std::endl;
+      std::cout << "  expected_val: " << expected_val << std::endl;
+      std::cout << "  default_val: " << default_val << std::endl;
+      std::cout << "  loaded_val: " << loaded_val << std::endl;
+
+      std::remove(data_file_name.c_str());
+    }
+  } // utInitFile_ReadString_after_open_and_close
 } // nInitFileTests
 
 void cInitFile::UnitTests(bool full)
@@ -401,6 +440,10 @@
     std::cout << "nInitFileTests::utInitFile_archiving_closed_file" << std::endl;
     nInitFileTests::utInitFile_archiving_closed_file::test();
   }
+  if(1) {
+    std::cout << "nInitFileTests::utInitFile_ReadString_after_open_and_close" << std::endl;
+    nInitFileTests::utInitFile_ReadString_after_open_and_close::test();
+  }
 }
 
 #endif // ENABLE_UNIT_TESTS




More information about the Avida-cvs mailing list