Implement base DictionaryBase with tests.
This commit is contained in:
		@@ -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 <see cref="UnitDictionary"/>; implements methods
 | 
			
		||||
    /// to read configuration files.
 | 
			
		||||
    /// </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.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Text;
 | 
			
		||||
 | 
			
		||||
namespace zaaReloaded2.Dictionaries
 | 
			
		||||
@@ -29,5 +30,9 @@ namespace zaaReloaded2.Dictionaries
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    class ParameterDictionary : DictionaryBase
 | 
			
		||||
    {
 | 
			
		||||
        protected override System.IO.Stream GetDefaultStream()
 | 
			
		||||
        {
 | 
			
		||||
            return Assembly.GetExecutingAssembly().GetManifestResourceStream("");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,5 +28,9 @@ namespace zaaReloaded2.Dictionaries
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    class UnitDictionary : DictionaryBase
 | 
			
		||||
    {
 | 
			
		||||
        protected override System.IO.Stream GetDefaultStream()
 | 
			
		||||
        {
 | 
			
		||||
            throw new NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user