[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