Implement base DictionaryBase with tests.
This commit is contained in:
		
							
								
								
									
										37
									
								
								Tests/Dictionaries/DictionaryTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										37
									
								
								Tests/Dictionaries/DictionaryTest.cs
									
									
									
									
									
										Executable file
									
								
							@@ -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]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										34
									
								
								Tests/Dictionaries/TestDictionary.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								Tests/Dictionaries/TestDictionary.cs
									
									
									
									
									
										Executable file
									
								
							@@ -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");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								Tests/Dictionaries/test_dictionary.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								Tests/Dictionaries/test_dictionary.txt
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					# This is a test file to test dictionaries
 | 
				
			||||||
 | 
					"Field 1"   "Field 2"
 | 
				
			||||||
@@ -57,9 +57,11 @@
 | 
				
			|||||||
    </Otherwise>
 | 
					    </Otherwise>
 | 
				
			||||||
  </Choose>
 | 
					  </Choose>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="Dictionaries\DictionaryTest.cs" />
 | 
				
			||||||
    <Compile Include="LabItemTest.cs" />
 | 
					    <Compile Include="LabItemTest.cs" />
 | 
				
			||||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
    <Compile Include="LineParserTest.cs" />
 | 
					    <Compile Include="LineParserTest.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Dictionaries\TestDictionary.cs" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Include="packages.config" />
 | 
					    <None Include="packages.config" />
 | 
				
			||||||
@@ -71,6 +73,9 @@
 | 
				
			|||||||
      <Name>zaaReloaded2</Name>
 | 
					      <Name>zaaReloaded2</Name>
 | 
				
			||||||
    </ProjectReference>
 | 
					    </ProjectReference>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <EmbeddedResource Include="Dictionaries\test_dictionary.txt" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
  <Choose>
 | 
					  <Choose>
 | 
				
			||||||
    <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
 | 
					    <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
 | 
				
			||||||
      <ItemGroup>
 | 
					      <ItemGroup>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,7 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -27,7 +28,87 @@ namespace zaaReloaded2.Dictionaries
 | 
				
			|||||||
    /// and the <see cref="UnitDictionary"/>; implements methods
 | 
					    /// and the <see cref="UnitDictionary"/>; implements methods
 | 
				
			||||||
    /// to read configuration files.
 | 
					    /// to read configuration files.
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    abstract class DictionaryBase
 | 
					    public abstract class DictionaryBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        #region Public properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public SortedDictionary<string, string[]> Records { get; protected set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DictionaryBase()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Records = new SortedDictionary<string, string[]>();
 | 
				
			||||||
 | 
					            LoadDefaultValues();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Abstract methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Returns a content stream with a default configuration file.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        abstract protected Stream GetDefaultStream();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Protected methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Reads a text file from a TextReader and fills the dictionary
 | 
				
			||||||
 | 
					        /// with the data.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="s">TextReader that provides a text file.</param>
 | 
				
			||||||
 | 
					        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);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Reads a text file from a stream and fills the dictionary
 | 
				
			||||||
 | 
					        /// with the data.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="s">TextReader that provides a text file.</param>
 | 
				
			||||||
 | 
					        protected void ReadFile(Stream stream)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            StreamReader sr = new StreamReader(stream);
 | 
				
			||||||
 | 
					            ReadFile(sr);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Loads default dictionary values from a text file that is built
 | 
				
			||||||
 | 
					        /// into the assembly as an embbedded resource.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private void LoadDefaultValues()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ReadFile(GetDefaultStream());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.Dictionaries
 | 
					namespace zaaReloaded2.Dictionaries
 | 
				
			||||||
@@ -29,5 +30,9 @@ namespace zaaReloaded2.Dictionaries
 | 
				
			|||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    class ParameterDictionary : DictionaryBase
 | 
					    class ParameterDictionary : DictionaryBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        protected override System.IO.Stream GetDefaultStream()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return Assembly.GetExecutingAssembly().GetManifestResourceStream("");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,5 +28,9 @@ namespace zaaReloaded2.Dictionaries
 | 
				
			|||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    class UnitDictionary : DictionaryBase
 | 
					    class UnitDictionary : DictionaryBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        protected override System.IO.Stream GetDefaultStream()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new NotImplementedException();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user