Implement base DictionaryBase with tests.
This commit is contained in:
parent
9e0f8a85ae
commit
24c58a5867
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user