Browse Source

XML editor uses folds from previous parse if current xml being parsed is not well formed.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5287 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Matt Ward 16 years ago
parent
commit
077dd31d2f
  1. 21
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/DefaultParserService.cs
  2. 17
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/IParserService.cs
  3. 95
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlFoldParser.cs
  4. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  5. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/AttributeTextInFoldIsXmlEncodedTestFixture.cs
  6. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/EmptyCommentDoesNotCreateFoldTestFixture.cs
  7. 37
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/FoldParserParsesInvalidXmlTestFixture.cs
  8. 6
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/MultiLineCommentFoldTestFixture.cs
  9. 71
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/OldParseInfoFoldRegionUsedForInvalidXmlTestFixture.cs
  10. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/QualifiedElementFoldTestFixture.cs
  11. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/QualifiedElementWithNoDefinedNamespaceFoldTestFixture.cs
  12. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/ShowElementAttributesForElementWithNoAttributesTestFixture.cs
  13. 4
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/ShowElementAttributesInFoldTestFixture.cs
  14. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleEmptyElementFoldTestFixture.cs
  15. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleLineCommentDoesNotCreateFoldTestFixture.cs
  16. 4
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleLineElementDoesNotCreateFoldTestFixture.cs
  17. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleRootElementFoldTestFixture.cs
  18. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/Folding/TwoElementFoldsTestFixture.cs
  19. 44
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockParserService.cs
  20. 53
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/Tests/MockParserServiceTests.cs
  21. 3
      src/AddIns/DisplayBindings/XmlEditor/Test/XmlEditor.Tests.csproj

21
src/AddIns/DisplayBindings/XmlEditor/Project/Src/DefaultParserService.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.XmlEditor
{
public class DefaultParserService : IParserService
{
public ParseInformation GetExistingParseInformation(IProjectContent content, string fileName)
{
return ParserService.GetExistingParseInformation(content, fileName);
}
}
}

17
src/AddIns/DisplayBindings/XmlEditor/Project/Src/IParserService.cs

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.XmlEditor
{
public interface IParserService
{
ParseInformation GetExistingParseInformation(IProjectContent content, string fileName);
}
}

95
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlFoldParser.cs

@ -19,21 +19,29 @@ namespace ICSharpCode.XmlEditor @@ -19,21 +19,29 @@ namespace ICSharpCode.XmlEditor
{
public class XmlFoldParser : IParser
{
string[] lexerTags = new string[0];
DefaultXmlFileExtensions extensions;
XmlEditorOptions options;
IParserService parserService;
string[] lexerTags = new string[0];
XmlTextReader reader;
List<FoldingRegion> folds;
Stack<XmlElementFold> elementFoldStack;
XmlEditorOptions options;
DefaultCompilationUnit unit;
public XmlFoldParser(DefaultXmlFileExtensions extensions, XmlEditorOptions options)
public XmlFoldParser(DefaultXmlFileExtensions extensions,
XmlEditorOptions options,
IParserService parserService)
{
this.extensions = extensions;
this.options = options;
this.parserService = parserService;
}
public XmlFoldParser()
: this(new DefaultXmlFileExtensions(), XmlEditorService.XmlEditorOptions)
: this(new DefaultXmlFileExtensions(),
XmlEditorService.XmlEditorOptions,
new DefaultParserService())
{
}
@ -64,51 +72,74 @@ namespace ICSharpCode.XmlEditor @@ -64,51 +72,74 @@ namespace ICSharpCode.XmlEditor
public IResolver CreateResolver()
{
return null;
}
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, ITextBuffer fileContent)
{
DefaultCompilationUnit unit = new DefaultCompilationUnit(projectContent);
unit.FileName = fileName;
GetFolds(fileContent.CreateReader());
unit.FoldingRegions.AddRange(folds);
try {
CreateCompilationUnit(projectContent, fileName);
GetFolds(fileContent.CreateReader());
AddFoldsToCompilationUnit(unit, folds);
} catch (Exception) {
ICompilationUnit existingUnit = FindPreviouslyParsedCompilationUnit(projectContent, fileName);
if (existingUnit != null) {
return existingUnit;
}
}
return unit;
}
void CreateCompilationUnit(IProjectContent projectContent, string fileName)
{
unit = new DefaultCompilationUnit(projectContent);
unit.FileName = fileName;
}
void GetFolds(TextReader textReader)
{
folds = new List<FoldingRegion>();
elementFoldStack = new Stack<XmlElementFold>();
try {
reader = new XmlTextReader(textReader);
reader.Namespaces = false;
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
AddElementFoldToStackIfNotEmptyElement();
break;
CreateXmlTextReaderWithNoNamespaceSupport(textReader);
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
AddElementFoldToStackIfNotEmptyElement();
break;
case XmlNodeType.EndElement:
CreateElementFoldingRegionIfNotSingleLine();
break;
case XmlNodeType.EndElement:
CreateElementFoldingRegionIfNotSingleLine();
break;
case XmlNodeType.Comment:
CreateCommentFoldingRegionIfNotSingleLine();
break;
}
case XmlNodeType.Comment:
CreateCommentFoldingRegionIfNotSingleLine();
break;
}
} catch (Exception ex) {
// // If the xml is not well formed keep the foldings
// // that already exist in the document.
// //return new List<FoldMarker>(document.FoldingManager.FoldMarker);
// return new List<FoldingRegion>();
Console.WriteLine(ex.ToString());
}
folds.Sort(CompareFoldingRegion);
}
ICompilationUnit FindPreviouslyParsedCompilationUnit(IProjectContent projectContent, string fileName)
{
ParseInformation parseInfo = parserService.GetExistingParseInformation(projectContent, fileName);
if (parseInfo != null) {
return parseInfo.CompilationUnit;
}
return null;
}
void CreateXmlTextReaderWithNoNamespaceSupport(TextReader textReader)
{
reader = new XmlTextReader(textReader);
reader.Namespaces = false;
}
void AddFoldsToCompilationUnit(DefaultCompilationUnit unit, List<FoldingRegion> folds)
{
unit.FoldingRegions.AddRange(folds);
}
void AddElementFoldToStackIfNotEmptyElement()
{
if (!reader.IsEmptyElement) {

2
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -82,6 +82,7 @@ @@ -82,6 +82,7 @@
</Compile>
<Compile Include="Src\AssignStylesheetCommand.cs" />
<Compile Include="Src\CreateSchemaCommand.cs" />
<Compile Include="Src\DefaultParserService.cs" />
<Compile Include="Src\DefaultXmlFileExtensions.cs" />
<Compile Include="Src\DefaultXmlSchemaFileAssociations.cs" />
<Compile Include="Src\EncodedStringWriter.cs" />
@ -97,6 +98,7 @@ @@ -97,6 +98,7 @@
<Compile Include="Src\InsertElementBeforeCommand.cs" />
<Compile Include="Src\InsertTextNodeAfterCommand.cs" />
<Compile Include="Src\InsertTextNodeBeforeCommand.cs" />
<Compile Include="Src\IParserService.cs" />
<Compile Include="Src\ISelectXmlSchemaWindow.cs" />
<Compile Include="Src\IXmlSchemaCompletionDataFactory.cs" />
<Compile Include="Src\IXmlSchemasPanel.cs" />

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/AttributeTextInFoldIsXmlEncodedTestFixture.cs

@ -34,7 +34,8 @@ namespace XmlEditor.Tests.Folding @@ -34,7 +34,8 @@ namespace XmlEditor.Tests.Folding
projectContent = new DefaultProjectContent();
extensions = new DefaultXmlFileExtensions(null);
options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
}
void ParseWithShowAttributesSetToTrue(string xml)

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/EmptyCommentDoesNotCreateFoldTestFixture.cs

@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding @@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding
extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

37
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/FoldParserParsesInvalidXmlTestFixture.cs

@ -24,9 +24,10 @@ namespace XmlEditor.Tests.Folding @@ -24,9 +24,10 @@ namespace XmlEditor.Tests.Folding
XmlFoldParser parser;
ICompilationUnit unit;
DefaultProjectContent projectContent;
MockTextBuffer textBuffer;
[Test]
public void ParseMethodDoesNotThrowExceptionWhenParsingBadXml()
[SetUp]
public void Init()
{
string xml =
"<root\r\n" +
@ -34,13 +35,37 @@ namespace XmlEditor.Tests.Folding @@ -34,13 +35,37 @@ namespace XmlEditor.Tests.Folding
"</root>";
projectContent = new DefaultProjectContent();
MockTextBuffer textBuffer = new MockTextBuffer(xml);
textBuffer = new MockTextBuffer(xml);
DefaultXmlFileExtensions extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
Assert.DoesNotThrow(delegate { unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer); });
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
}
[Test]
public void ParseMethodDoesNotThrowExceptionWhenParsingInvalidXml()
{
Assert.DoesNotThrow(delegate { ParseXml(); });
}
void ParseXml()
{
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}
[Test]
public void CompilationUnitFileNameSetByXmlParserParseMethod()
{
ParseXml();
Assert.AreEqual(@"d:\projects\a.xml", unit.FileName);
}
[Test]
public void CompilationUnitProjectContentSetByXmlParserParseMethod()
{
ParseXml();
Assert.AreEqual(projectContent, unit.ProjectContent);
}
}
}

6
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/MultiLineCommentFoldTestFixture.cs

@ -31,14 +31,16 @@ namespace XmlEditor.Tests.Folding @@ -31,14 +31,16 @@ namespace XmlEditor.Tests.Folding
{
string xml =
"<!-- first line\r\n" +
"second line -->";
"second line -->\r\n" +
"<a />";
projectContent = new DefaultProjectContent();
MockTextBuffer textBuffer = new MockTextBuffer(xml);
extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

71
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/OldParseInfoFoldRegionUsedForInvalidXmlTestFixture.cs

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.XmlEditor;
using NUnit.Framework;
using XmlEditor.Tests.Utils;
namespace XmlEditor.Tests.Folding
{
[TestFixture]
public class OldParseInfoFoldRegionsUsedForInvalidXmlTestFixture
{
XmlFoldParser parser;
ICompilationUnit unit;
DefaultProjectContent projectContent;
DomRegion previousCompilationUnitFoldRegion;
MockParserService parserService;
[SetUp]
public void Init()
{
string xml =
"<root\r\n" +
" <child>\r\n" +
"</root>";
int line = 1;
int column = 1;
int endLine = 3;
int endColumn = 8;
previousCompilationUnitFoldRegion = new DomRegion(line, column, endLine, endColumn);
projectContent = new DefaultProjectContent();
DefaultCompilationUnit existingUnit = new DefaultCompilationUnit(projectContent);
existingUnit.FoldingRegions.Add(new FoldingRegion("<root>", previousCompilationUnitFoldRegion));
ParseInformation parseInfo = new ParseInformation(existingUnit);
parserService = new MockParserService();
parserService.SetExistingParseInformation(@"d:\projects\test\a.xml", parseInfo);
MockTextBuffer textBuffer = new MockTextBuffer(xml);
DefaultXmlFileExtensions extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\test\a.xml", textBuffer);
}
[Test]
public void PreviouslyParsedFoldRegionUsedWhenXmlIsInvalid()
{
Assert.AreEqual(previousCompilationUnitFoldRegion, unit.FoldingRegions[0].Region);
}
[Test]
public void ProjectContentPassedToParserServiceGetExistingParseInfoMethod()
{
Assert.AreSame(projectContent, parserService.ProjectContentPassedToGetExistingParseInforMethod);
}
}
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/QualifiedElementFoldTestFixture.cs

@ -39,8 +39,9 @@ namespace XmlEditor.Tests.Folding @@ -39,8 +39,9 @@ namespace XmlEditor.Tests.Folding
textBuffer = new MockTextBuffer(xml);
extensions = new DefaultXmlFileExtensions(null);
options = new XmlEditorOptions(new Properties());
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options);
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/QualifiedElementWithNoDefinedNamespaceFoldTestFixture.cs

@ -41,8 +41,9 @@ namespace XmlEditor.Tests.Folding @@ -41,8 +41,9 @@ namespace XmlEditor.Tests.Folding
textBuffer = new MockTextBuffer(xml);
extensions = new DefaultXmlFileExtensions(null);
options = new XmlEditorOptions(new Properties());
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options);
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/ShowElementAttributesForElementWithNoAttributesTestFixture.cs

@ -40,8 +40,9 @@ namespace XmlEditor.Tests.Folding @@ -40,8 +40,9 @@ namespace XmlEditor.Tests.Folding
extensions = new DefaultXmlFileExtensions(null);
options = new XmlEditorOptions(new Properties());
options.ShowAttributesWhenFolded = true;
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options);
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

4
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/ShowElementAttributesInFoldTestFixture.cs

@ -27,6 +27,7 @@ namespace XmlEditor.Tests.Folding @@ -27,6 +27,7 @@ namespace XmlEditor.Tests.Folding
DefaultProjectContent projectContent;
MockTextBuffer textBuffer;
XmlEditorOptions options;
MockParserService parserService;
[SetUp]
public void Init()
@ -39,6 +40,7 @@ namespace XmlEditor.Tests.Folding @@ -39,6 +40,7 @@ namespace XmlEditor.Tests.Folding
textBuffer = new MockTextBuffer(xml);
extensions = new DefaultXmlFileExtensions(null);
options = new XmlEditorOptions(new Properties());
parserService = new MockParserService();
}
void ParseWithShowAttributesSetToTrue()
@ -49,7 +51,7 @@ namespace XmlEditor.Tests.Folding @@ -49,7 +51,7 @@ namespace XmlEditor.Tests.Folding
void ParseXml()
{
parser = new XmlFoldParser(extensions, options);
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleEmptyElementFoldTestFixture.cs

@ -38,7 +38,8 @@ namespace XmlEditor.Tests.Folding @@ -38,7 +38,8 @@ namespace XmlEditor.Tests.Folding
DefaultXmlFileExtensions extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleLineCommentDoesNotCreateFoldTestFixture.cs

@ -36,7 +36,8 @@ namespace XmlEditor.Tests.Folding @@ -36,7 +36,8 @@ namespace XmlEditor.Tests.Folding
extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

4
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleLineElementDoesNotCreateFoldTestFixture.cs

@ -38,7 +38,9 @@ namespace XmlEditor.Tests.Folding @@ -38,7 +38,9 @@ namespace XmlEditor.Tests.Folding
DefaultXmlFileExtensions extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/SingleRootElementFoldTestFixture.cs

@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding @@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding
extensions = new DefaultXmlFileExtensions(null);
extensions.Add(".wxs");
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/Folding/TwoElementFoldsTestFixture.cs

@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding @@ -39,7 +39,8 @@ namespace XmlEditor.Tests.Folding
DefaultXmlFileExtensions extensions = new DefaultXmlFileExtensions(null);
XmlEditorOptions options = new XmlEditorOptions(new Properties());
parser = new XmlFoldParser(extensions, options);
MockParserService parserService = new MockParserService();
parser = new XmlFoldParser(extensions, options, parserService);
unit = parser.Parse(projectContent, @"d:\projects\a.xml", textBuffer);
}

44
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockParserService.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.XmlEditor;
namespace XmlEditor.Tests.Utils
{
public class MockParserService : IParserService
{
IProjectContent projectContentPassedToGetExistingParseInfoMethod;
Dictionary<string, ParseInformation> parseInfoDictionary = new Dictionary<string, ParseInformation>();
public MockParserService()
{
}
public ParseInformation GetExistingParseInformation(IProjectContent content, string fileName)
{
projectContentPassedToGetExistingParseInfoMethod = content;
ParseInformation parseInfo;
if (parseInfoDictionary.TryGetValue(fileName, out parseInfo)) {
return parseInfo;
}
return null;
}
public void SetExistingParseInformation(string fileName, ParseInformation parseInfo)
{
parseInfoDictionary.Add(fileName, parseInfo);
}
public IProjectContent ProjectContentPassedToGetExistingParseInforMethod {
get { return projectContentPassedToGetExistingParseInfoMethod; }
}
}
}

53
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/Tests/MockParserServiceTests.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.XmlEditor;
using NUnit.Framework;
namespace XmlEditor.Tests.Utils.Tests
{
[TestFixture]
public class MockParserServiceTests
{
MockParserService parserService;
ParseInformation existingParseInfo;
[SetUp]
public void Init()
{
DefaultProjectContent projectContent = new DefaultProjectContent();
DefaultCompilationUnit unit = new DefaultCompilationUnit(projectContent);
existingParseInfo = new ParseInformation(unit);
parserService = new MockParserService();
parserService.SetExistingParseInformation(@"d:\projects\test.xml", existingParseInfo);
}
[Test]
public void CanGetProjectContentPassedToGetExistingParseInfoMethod()
{
DefaultProjectContent projectContent = new DefaultProjectContent();
parserService.GetExistingParseInformation(projectContent, "file.xml");
Assert.AreSame(projectContent, parserService.ProjectContentPassedToGetExistingParseInforMethod);
}
[Test]
public void GetExistingParseInfoReturnsParseInfoObjectForKnownFileName()
{
Assert.AreSame(existingParseInfo, parserService.GetExistingParseInformation(null, @"d:\projects\test.xml"));
}
[Test]
public void GetExistingParseInfoReturnsNullForKnownFileName()
{
Assert.IsNull(parserService.GetExistingParseInformation(null, @"d:\projects\unknown.xml"));
}
}
}

3
src/AddIns/DisplayBindings/XmlEditor/Test/XmlEditor.Tests.csproj

@ -124,6 +124,7 @@ @@ -124,6 +124,7 @@
<Compile Include="Folding\EmptyCommentDoesNotCreateFoldTestFixture.cs" />
<Compile Include="Folding\FoldParserParsesInvalidXmlTestFixture.cs" />
<Compile Include="Folding\MultiLineCommentFoldTestFixture.cs" />
<Compile Include="Folding\OldParseInfoFoldRegionUsedForInvalidXmlTestFixture.cs" />
<Compile Include="Folding\QualifiedElementFoldTestFixture.cs" />
<Compile Include="Folding\QualifiedElementWithNoDefinedNamespaceFoldTestFixture.cs" />
<Compile Include="Folding\ShowElementAttributesForElementWithNoAttributesTestFixture.cs" />
@ -218,6 +219,7 @@ @@ -218,6 +219,7 @@
<Compile Include="Utils\MockCompletionListWindow.cs" />
<Compile Include="Utils\MockDocument.cs" />
<Compile Include="Utils\MockFileSystem.cs" />
<Compile Include="Utils\MockParserService.cs" />
<Compile Include="Utils\MockSelectXmlSchemaWindow.cs" />
<Compile Include="Utils\MockTextBuffer.cs" />
<Compile Include="Utils\MockTextEditor.cs" />
@ -231,6 +233,7 @@ @@ -231,6 +233,7 @@
<Compile Include="Utils\Tests\FormattedErrorMessageAreEqualTests.cs" />
<Compile Include="Utils\Tests\MockDocumentTests.cs" />
<Compile Include="Utils\Tests\MockFileSystemTests.cs" />
<Compile Include="Utils\Tests\MockParserServiceTests.cs" />
<Compile Include="Utils\Tests\MockSelectXmlSchemaWindowTests.cs" />
<Compile Include="Utils\Tests\MockTextBufferTests.cs" />
<Compile Include="Utils\Tests\MockTextEditorTests.cs" />

Loading…
Cancel
Save