Unit test - check if xml files are well-formed

This commit is contained in:
niksedk 2015-08-15 19:36:57 +02:00
parent e64471fa36
commit 896711d493
4 changed files with 111 additions and 16 deletions

View File

@ -4,10 +4,21 @@
<Deployment>
<DeploymentItem filename="packages\NHunspell.1.2.5554.16953\content\Hunspellx64.dll" />
<DeploymentItem filename="packages\NHunspell.1.2.5554.16953\content\Hunspellx86.dll" />
<DeploymentItem filename="..\Dictionaries\hrv_OCRFixReplaceList.xml" />
<DeploymentItem filename="..\Dictionaries\eng_OCRFixReplaceList.xml" />
<DeploymentItem filename="..\Dictionaries\names_etc.xml" />
<DeploymentItem filename="..\Dictionaries\en_US_user.xml" />
</Deployment>
<Execution>
<TestTypeSpecific />
<AgentRule name="Execution Agents">
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
<AssemblyResolution>
<TestDirectory useLoadContext="true" />
</AssemblyResolution>
</UnitTestRunConfig>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
</AgentRule>
</Execution>
<Properties />
</TestSettings>

View File

@ -14,8 +14,8 @@ namespace Test.Logic.Dictionaries
var namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
// Act
namesList.Add("Jones");
var exists = namesList.GetNames().Contains("Jones");
namesList.Add("Jones123");
var exists = namesList.GetNames().Contains("Jones123");
// Assert
Assert.IsTrue(exists);
@ -28,8 +28,8 @@ namespace Test.Logic.Dictionaries
var namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
// Act
namesList.Add("Charlie Parker");
var exists = namesList.GetMultiNames().Contains("Charlie Parker");
namesList.Add("Charlie Parker123");
var exists = namesList.GetMultiNames().Contains("Charlie Parker123");
// Assert
Assert.IsTrue(exists);
@ -42,8 +42,8 @@ namespace Test.Logic.Dictionaries
var namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
// Act
namesList.Add("Charlie Parker");
var exists = namesList.IsInNamesEtcMultiWordList("This is Charlie Parker!", "Charlie Parker");
namesList.Add("Charlie Parker123");
var exists = namesList.IsInNamesEtcMultiWordList("This is Charlie Parker123!", "Charlie Parker123");
// Assert
Assert.IsTrue(exists);
@ -66,13 +66,13 @@ namespace Test.Logic.Dictionaries
{
// Arrange
var namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
namesList.Add("Jones");
namesList.Add("Jones123");
// Act
namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
// Assert
Assert.IsTrue(namesList.GetNames().Contains("Jones"));
Assert.IsTrue(namesList.GetNames().Contains("Jones123"));
}
[TestMethod]
@ -80,13 +80,13 @@ namespace Test.Logic.Dictionaries
{
// Arrange
var namesList = new NamesList(Directory.GetCurrentDirectory(), "en", false, null);
namesList.Add("Jones");
namesList.Add("Jones123");
// Act
namesList.Remove("Jones");
namesList.Remove("Jones123");
// Assert
Assert.IsFalse(namesList.GetNames().Contains("Jones"));
Assert.IsFalse(namesList.GetNames().Contains("Jones123"));
}
[TestMethod]
@ -94,14 +94,14 @@ namespace Test.Logic.Dictionaries
{
// Arrange
var namesList = new NamesList(Directory.GetCurrentDirectory(), "da", false, null);
namesList.Add("Jones");
namesList.Add("Jones123");
// Act
namesList.Remove("Jones");
namesList.Remove("Jones123");
namesList = new NamesList(Directory.GetCurrentDirectory(), "da", false, null);
// Assert
Assert.IsFalse(namesList.GetNames().Contains("Jones"));
Assert.IsFalse(namesList.GetNames().Contains("Jones123"));
}
}

View File

@ -40,6 +40,7 @@
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Core\StringExtensionsTest.cs" />
@ -64,6 +65,7 @@
<Compile Include="Logic\Forms\RemoveTextForHearImpairedTest.cs" />
<Compile Include="Logic\SubtitleFormats\SubtitleFormatsTest.cs" />
<Compile Include="Logic\UtilitiesTest.cs" />
<Compile Include="XmlDictionariesTest.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SubtitleEdit.csproj">
@ -108,6 +110,10 @@
</Content>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -0,0 +1,78 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
namespace Test
{
[TestClass]
public class XmlDictionariesTest
{
[TestMethod]
[DeploymentItem("hrv_OCRFixReplaceList.xml")]
public void DictionaryValidXmlHrvOcrFixReplaceList()
{
const string fileName = "hrv_OCRFixReplaceList.xml";
TestXmlWellFormedness(fileName);
}
[TestMethod]
[DeploymentItem("eng_OCRFixReplaceList.xml")]
public void DictionaryValidXmlEngOcrFixReplaceList()
{
const string fileName = "eng_OCRFixReplaceList.xml";
TestXmlWellFormedness(fileName);
}
[TestMethod]
[DeploymentItem("names_etc.xml")]
public void DictionaryValidXmlNamesEtc()
{
const string fileName = "names_etc.xml";
TestXmlWellFormedness(fileName);
}
[TestMethod]
[DeploymentItem("en_US_user.xml")]
public void DictionaryValidXmlEnUsUser()
{
const string fileName = "en_US_user.xml";
TestXmlWellFormedness(fileName);
}
private static void TestXmlWellFormedness(string fileName)
{
try
{
XDocument.Load(fileName);
}
catch (XmlException exception)
{
var msg = BuildXmlErrorMessage(fileName, exception);
Assert.Fail(msg);
}
}
private static string BuildXmlErrorMessage(string fileName, XmlException exception)
{
string msg = Path.GetFileName(fileName) + " is not wel-formed." + Environment.NewLine +
"Line " + exception.LineNumber + " at position " + exception.LinePosition + Environment.NewLine +
exception.Message;
var lines = File.ReadAllLines(fileName);
if (exception.LineNumber >= 0 && exception.LineNumber < lines.Count())
{
msg += Environment.NewLine + Environment.NewLine;
if (exception.LineNumber > 1)
msg += (exception.LineNumber - 1) + ": " + lines[exception.LineNumber - 2] + Environment.NewLine;
if (exception.LineNumber > 0)
msg += (exception.LineNumber) + ": " + lines[exception.LineNumber - 1] + Environment.NewLine;
msg += (exception.LineNumber + 1) + ": " + lines[exception.LineNumber];
}
return msg;
}
}
}