[Avida-SVN] r1222 - in extras: . source/testsuites source/tools

avidaedward at myxo.css.msu.edu avidaedward at myxo.css.msu.edu
Sat Jan 27 22:16:51 PST 2007


Author: avidaedward
Date: 2007-01-28 01:16:51 -0500 (Sun, 28 Jan 2007)
New Revision: 1222

Modified:
   extras/
   extras/source/testsuites/nTestSettings.cpp
   extras/source/tools/cTestSettings.cpp
   extras/source/tools/cTestSettings.h
Log:
 r1205 at clearly:  kaben | 2007-01-06 20:42:10 -0500
 Completed implementation and testing of cTestSettings class.



Property changes on: extras
___________________________________________________________________
Name: svk:merge
   - 079b078a-dbed-46b9-b3da-37668d4295ca:/avida/local/extras:1187
   + 079b078a-dbed-46b9-b3da-37668d4295ca:/avida/local/extras:1205

Modified: extras/source/testsuites/nTestSettings.cpp
===================================================================
--- extras/source/testsuites/nTestSettings.cpp	2007-01-28 06:16:47 UTC (rev 1221)
+++ extras/source/testsuites/nTestSettings.cpp	2007-01-28 06:16:51 UTC (rev 1222)
@@ -25,7 +25,173 @@
   namespace Brainstorm_ClassDesign {
     void test(){
       cout << "XXX This is a test stub. It needs filling-in. @kgn" << endl;
-      TEST(true);
+
+      /* Verify basic functionality : shadowing tDictionary. */
+      {
+        cTestSettings ts;
+        cString value("ick");
+
+        /* Verify initial number of settings is zero. */
+        TEST(0 == ts.Size());
+
+        /* Verify behavior on checking a setting that hasn't been set. */
+        TEST(!ts.HasSetting("blah"));
+        TEST(ts.Setting("blah") == "");
+
+        /* Set "blah" to "hum". */
+        ts.Set("blah", "hum");
+        TEST(1 == ts.Size());
+
+        /* Verify behavior on checking a valid setting. */
+        TEST(ts.HasSetting("blah"));
+        TEST(ts.Setting("blah") == "hum");
+
+        /* Reset "blah" to "ho". */
+        ts.Set("blah", "ho");
+        TEST(1 == ts.Size());
+
+        /* Verify behavior on reset of a valid setting. */
+        TEST(ts.HasSetting("blah"));
+        TEST(ts.Setting("blah") != "hum");
+        TEST(ts.Setting("blah") == "ho");
+
+        /* Verify unsetting an invalid setting. */
+        TEST(!ts.HasSetting("urk"));
+        TEST(ts.Setting("urk") == "");
+
+        /* Verify unsetting a valid setting. */
+        TEST(ts.HasSetting("blah"));
+        value = ts.Unset("blah");
+        TEST(value == "ho");
+        TEST(0 == ts.Size());
+        TEST(ts.Setting("blah") == "");
+
+        /* Verify unsetting a formerly valid setting. */
+        TEST(!ts.HasSetting("blah"));
+        value = ts.Unset("blah");
+        TEST(value == "");
+        TEST(0 == ts.Size());
+        TEST(ts.Setting("blah") == "");
+
+        /* Verify parsing various "setting" strings. */
+        /* - This shouldn't parse. */
+        TEST(!ts.ParseSettingString("nope"));
+        TEST(0 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(!ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /* - This should parse, but sets "" to "". */
+        TEST(ts.ParseSettingString("Set"));
+        TEST(1 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /* - This should parse, but sets "" to "". */
+        TEST(ts.ParseSettingString("Set_"));
+        TEST(1 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /* - This should parse, but sets "" to "". */
+        TEST(ts.ParseSettingString("Set__"));
+        TEST(1 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /* - This should parse, but sets "" to "hmf". */
+        TEST(ts.ParseSettingString("Set__hmf"));
+        TEST(1 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "hmf");
+        /* - This should parse, but sets "" to "hmf". */
+        TEST(ts.ParseSettingString("Set__good_grief"));
+        TEST(1 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "good_grief");
+        /*   This should parse, and should set "x" to "". */
+        TEST(ts.ParseSettingString("Set_x"));
+        TEST(2 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "good_grief");
+        /*   This should parse, and should set "y" to "fubar. */
+        TEST(ts.ParseSettingString("Set_y_fubar"));
+        TEST(3 == ts.Size());
+        TEST(ts.HasSetting("y"));
+        TEST(ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "fubar");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "good_grief");
+        /*   This should parse, and should set "y" to "z_z. */
+        TEST(ts.ParseSettingString("Set_y_z_z"));
+        TEST(3 == ts.Size());
+        TEST(ts.HasSetting("y"));
+        TEST(ts.HasSetting("x"));
+        TEST(ts.HasSetting(""));
+        TEST(ts.Setting("y") == "z_z");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "good_grief");
+        /*   This should parse, but unset "" . */
+        TEST(ts.ParseSettingString("Unset"));
+        TEST(2 == ts.Size());
+        TEST(ts.HasSetting("y"));
+        TEST(ts.HasSetting("x"));
+        TEST(!ts.HasSetting(""));
+        TEST(ts.Setting("y") == "z_z");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /*   This should parse, but unset "". */
+        TEST(ts.ParseSettingString("Unset_"));
+        TEST(2 == ts.Size());
+        TEST(ts.HasSetting("y"));
+        TEST(ts.HasSetting("x"));
+        TEST(!ts.HasSetting(""));
+        TEST(ts.Setting("y") == "z_z");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /*   This should parse, and should unset "x". */
+        TEST(ts.ParseSettingString("Unset_x"));
+        TEST(1 == ts.Size());
+        TEST(ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(!ts.HasSetting(""));
+        TEST(ts.Setting("y") == "z_z");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+        /*   This should parse, and should unset "y". */
+        TEST(ts.ParseSettingString("Unset_y_z_z"));
+        TEST(0 == ts.Size());
+        TEST(!ts.HasSetting("y"));
+        TEST(!ts.HasSetting("x"));
+        TEST(!ts.HasSetting(""));
+        TEST(ts.Setting("y") == "");
+        TEST(ts.Setting("x") == "");
+        TEST(ts.Setting("") == "");
+      }
     }
     cAddTestSuite t("cTestSettings_Brainstorm_ClassDesign", test);
   }
@@ -55,5 +221,3 @@
   */
   void PhysicalLink(){}
 }
-
-

Modified: extras/source/tools/cTestSettings.cpp
===================================================================
--- extras/source/tools/cTestSettings.cpp	2007-01-28 06:16:47 UTC (rev 1221)
+++ extras/source/tools/cTestSettings.cpp	2007-01-28 06:16:51 UTC (rev 1222)
@@ -1 +1,56 @@
 #include "cTestSettings.h"
+
+#include "cStringList.h"
+
+#include <iostream>
+
+using namespace std;
+
+
+void cTestSettings::Set(const cString& name, const cString &data){
+  m_settings_dict.SetValue(name, data);
+}
+cString cTestSettings::Unset(const cString& name){
+  if(HasSetting(name)) {
+    return m_settings_dict.Remove(name);
+  } else {
+    return "";
+  }
+}
+
+int cTestSettings::Size(){
+  return m_settings_dict.GetSize();
+}
+bool cTestSettings::HasSetting(const cString& name) const {
+  cString ignored_out_data;
+  return m_settings_dict.Find(name, ignored_out_data);
+}
+
+cString cTestSettings::Setting(const cString& name){
+  cString out_data;
+  if(m_settings_dict.Find(name, out_data)){
+    return out_data;
+  } else {
+    return "";
+  }
+}
+
+bool cTestSettings::ParseSettingString(const cString& arg) {
+  cString command(""), name(""), value("");
+  cStringList l(arg, '_');
+
+  if(0 < l.GetSize()){ command = l.Pop(); }
+  if(0 < l.GetSize()){ name = l.Pop(); }
+  if(0 < l.GetSize()){ value = l.Pop(); }
+  while(0 < l.GetSize()){ value = value + "_" + l.Pop(); }
+
+  if((command == "Set")){
+    Set(name, value);
+    return true;
+  } else if ((command == "Unset")){
+    Unset(name);
+    return true;
+  } else {
+    return false;
+  }
+}

Modified: extras/source/tools/cTestSettings.h
===================================================================
--- extras/source/tools/cTestSettings.h	2007-01-28 06:16:47 UTC (rev 1221)
+++ extras/source/tools/cTestSettings.h	2007-01-28 06:16:51 UTC (rev 1222)
@@ -8,7 +8,19 @@
 #include "tDictionary.h"
 #endif
 
-struct cTestSettings {
+class cTestSettings {
+protected:
+  tDictionary<cString> m_settings_dict;
+public:
+  void Set(const cString& name, const cString &data);
+  cString Unset(const cString& name);
+
+  int Size();
+  bool HasSetting(const cString& name) const;
+
+  cString Setting(const cString& name);
+
+  bool ParseSettingString(const cString& name);
 };
 
 #endif




More information about the Avida-cvs mailing list