diff --git a/Tests/Dictionaries/DictionaryTest.cs b/Tests/Dictionaries/DictionaryTest.cs
new file mode 100755
index 0000000..5421666
--- /dev/null
+++ b/Tests/Dictionaries/DictionaryTest.cs
@@ -0,0 +1,37 @@
+/* Class1.cs
+ * part of zaaReloaded2
+ *
+ * Copyright 2015 Daniel Kraus
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace Tests.Dictionaries
+{
+ [TestFixture]
+ class DictionaryTest
+ {
+ [Test]
+ public void DictionaryFromContentStream()
+ {
+ TestDictionary td = new TestDictionary();
+ Assert.IsTrue(td.Records.ContainsKey("Field 1"));
+ Assert.AreEqual("Field 2", td.Records["Field 1"][1]);
+ }
+ }
+}
diff --git a/Tests/Dictionaries/TestDictionary.cs b/Tests/Dictionaries/TestDictionary.cs
new file mode 100755
index 0000000..3bd7735
--- /dev/null
+++ b/Tests/Dictionaries/TestDictionary.cs
@@ -0,0 +1,34 @@
+/* TestDictionary.cs
+ * {{
+ * part of zaaReloaded2
+ *
+ * Copyright 2015 Daniel Kraus
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+
+namespace Tests.Dictionaries
+{
+ class TestDictionary : zaaReloaded2.Dictionaries.DictionaryBase
+ {
+ protected override System.IO.Stream GetDefaultStream()
+ {
+ return Assembly.GetExecutingAssembly().GetManifestResourceStream("Tests.Dictionaries.test_dictionary.txt");
+ }
+ }
+}
diff --git a/Tests/Dictionaries/test_dictionary.txt b/Tests/Dictionaries/test_dictionary.txt
new file mode 100755
index 0000000..4d28483
--- /dev/null
+++ b/Tests/Dictionaries/test_dictionary.txt
@@ -0,0 +1,2 @@
+# This is a test file to test dictionaries
+"Field 1" "Field 2"
\ No newline at end of file
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index 497a060..4f90ff6 100755
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -57,9 +57,11 @@
+
+
@@ -71,6 +73,9 @@
zaaReloaded2
+
+
+
diff --git a/zaaReloaded2/Dictionaries/DictionaryBase.cs b/zaaReloaded2/Dictionaries/DictionaryBase.cs
index 88aeabd..40a3643 100755
--- a/zaaReloaded2/Dictionaries/DictionaryBase.cs
+++ b/zaaReloaded2/Dictionaries/DictionaryBase.cs
@@ -17,6 +17,7 @@
*/
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text;
@@ -27,7 +28,87 @@ namespace zaaReloaded2.Dictionaries
/// and the ; implements methods
/// to read configuration files.
///
- abstract class DictionaryBase
+ public abstract class DictionaryBase
{
+ #region Public properties
+
+ public SortedDictionary Records { get; protected set; }
+
+ #endregion
+
+ #region Constructor
+
+ public DictionaryBase()
+ {
+ Records = new SortedDictionary();
+ LoadDefaultValues();
+ }
+
+ #endregion
+
+ #region Abstract methods
+
+ ///
+ /// Returns a content stream with a default configuration file.
+ ///
+ abstract protected Stream GetDefaultStream();
+
+ #endregion
+
+ #region Protected methods
+
+ ///
+ /// Reads a text file from a TextReader and fills the dictionary
+ /// with the data.
+ ///
+ /// TextReader that provides a text file.
+ protected void ReadFile(TextReader text)
+ {
+ LineParser lp = new LineParser();
+ string line;
+ string key;
+ while ((line = text.ReadLine()) != null)
+ {
+ lp.Line = line;
+ if (lp.HasFields)
+ {
+ key = lp.Fields[0];
+ if (Records.ContainsKey(key))
+ {
+ Records[key] = lp.Fields;
+ }
+ else
+ {
+ Records.Add(key, lp.Fields);
+ }
+ }
+ }
+ }
+
+ ///
+ /// Reads a text file from a stream and fills the dictionary
+ /// with the data.
+ ///
+ /// TextReader that provides a text file.
+ protected void ReadFile(Stream stream)
+ {
+ StreamReader sr = new StreamReader(stream);
+ ReadFile(sr);
+ }
+
+ #endregion
+
+ #region Private methods
+
+ ///
+ /// Loads default dictionary values from a text file that is built
+ /// into the assembly as an embbedded resource.
+ ///
+ private void LoadDefaultValues()
+ {
+ ReadFile(GetDefaultStream());
+ }
+
+ #endregion
}
}
diff --git a/zaaReloaded2/Dictionaries/ParameterDictionary.cs b/zaaReloaded2/Dictionaries/ParameterDictionary.cs
index 4a13252..6c0c3d2 100755
--- a/zaaReloaded2/Dictionaries/ParameterDictionary.cs
+++ b/zaaReloaded2/Dictionaries/ParameterDictionary.cs
@@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
namespace zaaReloaded2.Dictionaries
@@ -29,5 +30,9 @@ namespace zaaReloaded2.Dictionaries
///
class ParameterDictionary : DictionaryBase
{
+ protected override System.IO.Stream GetDefaultStream()
+ {
+ return Assembly.GetExecutingAssembly().GetManifestResourceStream("");
+ }
}
}
diff --git a/zaaReloaded2/Dictionaries/UnitDictionary.cs b/zaaReloaded2/Dictionaries/UnitDictionary.cs
index 2257eee..e0225e9 100755
--- a/zaaReloaded2/Dictionaries/UnitDictionary.cs
+++ b/zaaReloaded2/Dictionaries/UnitDictionary.cs
@@ -28,5 +28,9 @@ namespace zaaReloaded2.Dictionaries
///
class UnitDictionary : DictionaryBase
{
+ protected override System.IO.Stream GetDefaultStream()
+ {
+ throw new NotImplementedException();
+ }
}
}