Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/addins/AspNet/Tests')
-rw-r--r--main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj1
-rw-r--r--main/src/addins/AspNet/Tests/Razor/Dom/RazorDocumentTrackerTests.cs79
-rw-r--r--main/src/addins/AspNet/Tests/Razor/RazorCompletionTesting.cs169
-rw-r--r--main/src/addins/AspNet/Tests/Razor/RazorCompletionTests.cs162
-rw-r--r--main/src/addins/AspNet/Tests/WebForms/WebFormsTesting.cs27
5 files changed, 264 insertions, 174 deletions
diff --git a/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj b/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
index cdde498cdf..ab4a23ff4f 100644
--- a/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
+++ b/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
@@ -55,6 +55,7 @@
<Compile Include="Razor\RazorCompletionTests.cs" />
<Compile Include="Html\HtmlParsingTests.cs" />
<Compile Include="Html\HtmlImplicitClosingTests.cs" />
+ <Compile Include="Razor\Dom\RazorDocumentTrackerTests.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
diff --git a/main/src/addins/AspNet/Tests/Razor/Dom/RazorDocumentTrackerTests.cs b/main/src/addins/AspNet/Tests/Razor/Dom/RazorDocumentTrackerTests.cs
new file mode 100644
index 0000000000..f16fe1deb1
--- /dev/null
+++ b/main/src/addins/AspNet/Tests/Razor/Dom/RazorDocumentTrackerTests.cs
@@ -0,0 +1,79 @@
+//
+// RazorDocumentTrackerTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using MonoDevelop.AspNet.Razor.Dom;
+using MonoDevelop.AspNet.Razor.Parser;
+using MonoDevelop.Ide.Editor;
+using MonoDevelop.Ide.Gui.Content;
+using MonoDevelop.Xml.Parser;
+using NUnit.Framework;
+using UnitTests;
+
+namespace MonoDevelop.AspNet.Tests.Razor.Dom
+{
+ [TestFixture]
+ public class RazorDocumentTrackerTests : TestBase
+ {
+ Func<ITextDocument> originalGetActiveDocument;
+ TextEditor editor;
+
+ [SetUp]
+ public void SetUp ()
+ {
+ originalGetActiveDocument = RazorWorkbenchService.GetActiveDocument;
+ editor = TextEditorFactory.CreateNewEditor ();
+ editor.MimeType = "text/x-cshtml";
+ RazorWorkbenchService.GetActiveDocument = () => {
+ return editor;
+ };
+ }
+
+ [TearDown]
+ public override void TearDown ()
+ {
+ RazorWorkbenchService.GetActiveDocument = originalGetActiveDocument;
+ base.TearDown ();
+ }
+
+ [Test]
+ public void StateShouldBeRazorRootStateAfterCodeBlock ()
+ {
+ editor.Text =
+@"@{
+}
+
+";
+ var parser = new XmlParser (new RazorRootState (), false);
+ var tracker = new DocumentStateTracker<XmlParser> (parser, editor);
+ editor.CaretLine = 3;
+ tracker.UpdateEngine ();
+
+ Assert.IsInstanceOf<RazorRootState> (tracker.Engine.CurrentState);
+ }
+ }
+}
+
diff --git a/main/src/addins/AspNet/Tests/Razor/RazorCompletionTesting.cs b/main/src/addins/AspNet/Tests/Razor/RazorCompletionTesting.cs
index d35f5f9ca5..77740421c0 100644
--- a/main/src/addins/AspNet/Tests/Razor/RazorCompletionTesting.cs
+++ b/main/src/addins/AspNet/Tests/Razor/RazorCompletionTesting.cs
@@ -41,95 +41,96 @@ namespace MonoDevelop.AspNet.Tests.Razor
//largely copied from MonoDevelop.AspNet.Tests.AspNetTesting
static class RazorCompletionTesting
- {
- static readonly string extension = ".cshtml";
-
- public static CompletionDataList CreateRazorCtrlSpaceProvider (string text, bool isInCSharpContext)
- {
- return CreateProvider (text, isInCSharpContext, true);
- }
-
- public static CompletionDataList CreateProvider (string text, bool isInCSharpContext = false, bool isCtrlSpace = false)
- {
- string editorText;
- TestViewContent sev;
-
- var textEditorCompletion = CreateEditor (text, isInCSharpContext, out editorText, out sev);
- int cursorPosition = text.IndexOf ('$');
-
- int triggerWordLength = 1;
- var ctx = textEditorCompletion.GetCodeCompletionContext (isInCSharpContext, sev);
-
- if (isCtrlSpace)
- return textEditorCompletion.CodeCompletionCommand (ctx) as CompletionDataList;
- else
- return textEditorCompletion.HandleCodeCompletion (ctx, editorText[cursorPosition - 1], ref triggerWordLength) as CompletionDataList;
- }
-
- public static IParameterDataProvider CreateProvider (string text)
- {
- string editorText;
- TestViewContent sev;
-
- var textEditorCompletion = CreateEditor (text, true, out editorText, out sev);
- int cursorPosition = text.IndexOf ('$');
-
- var ctx = textEditorCompletion.GetCodeCompletionContext (true, sev);
- return textEditorCompletion.HandleParameterCompletion (ctx, editorText[cursorPosition - 1]);
- }
-
- static RazorTestingEditorExtension CreateEditor (string text, bool isInCSharpContext, out string editorText,
- out TestViewContent sev)
- {
- string parsedText;
- int cursorPosition = text.IndexOf ('$');
- int endPos = text.IndexOf ('$', cursorPosition + 1);
- if (endPos == -1)
- parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1);
- else {
- parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1);
- editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1);
- cursorPosition = endPos - 1;
- }
-
- var project = Services.ProjectService.CreateDotNetProject ("C#");
-
- project.FileName = UnitTests.TestBase.GetTempFile (".csproj");
- string file = UnitTests.TestBase.GetTempFile (extension);
- project.AddFile (file);
-
- var pcw = TypeSystemService.LoadProject (project);
- TypeSystemService.ForceUpdate (pcw);
- pcw.ReconnectAssemblyReferences ();
-
- sev = new TestViewContent ();
- sev.Project = project;
- sev.ContentName = file;
- sev.Text = editorText;
- sev.CursorPosition = cursorPosition;
-
- var tww = new TestWorkbenchWindow ();
- tww.ViewContent = sev;
-
- var doc = new Document (tww);
- var parser = new RazorTestingParser {
- Doc = doc
- };
- var parsedDoc = parser.Parse (false, sev.ContentName, new StringReader (parsedText), project);
-
- return new RazorTestingEditorExtension (doc, parsedDoc as RazorCSharpParsedDocument, isInCSharpContext);
- }
+ {
+// TODO: Roslyn port
+// static readonly string extension = ".cshtml";
+//
+// public static CompletionDataList CreateRazorCtrlSpaceProvider (string text, bool isInCSharpContext)
+// {
+// return CreateProvider (text, isInCSharpContext, true);
+// }
+//
+// public static CompletionDataList CreateProvider (string text, bool isInCSharpContext = false, bool isCtrlSpace = false)
+// {
+// string editorText;
+// TestViewContent sev;
+//
+// var textEditorCompletion = CreateEditor (text, isInCSharpContext, out editorText, out sev);
+// int cursorPosition = text.IndexOf ('$');
+//
+// int triggerWordLength = 1;
+// var ctx = textEditorCompletion.GetCodeCompletionContext (isInCSharpContext, sev);
+//
+// if (isCtrlSpace)
+// return textEditorCompletion.CodeCompletionCommand (ctx) as CompletionDataList;
+// else
+// return textEditorCompletion.HandleCodeCompletionAsync (ctx, editorText[cursorPosition - 1], ref triggerWordLength) as CompletionDataList;
+// }
+//
+// public static ParameterHintingResult CreateProvider (string text)
+// {
+// string editorText;
+// TestViewContent sev;
+//
+// var textEditorCompletion = CreateEditor (text, true, out editorText, out sev);
+// int cursorPosition = text.IndexOf ('$');
+//
+// var ctx = textEditorCompletion.GetCodeCompletionContext (true, sev);
+// return textEditorCompletion.HandleParameterCompletionAsync (ctx, editorText[cursorPosition - 1]);
+// }
+//
+// static RazorTestingEditorExtension CreateEditor (string text, bool isInCSharpContext, out string editorText,
+// out TestViewContent sev)
+// {
+// string parsedText;
+// int cursorPosition = text.IndexOf ('$');
+// int endPos = text.IndexOf ('$', cursorPosition + 1);
+// if (endPos == -1)
+// parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1);
+// else {
+// parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1);
+// editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1);
+// cursorPosition = endPos - 1;
+// }
+//
+// var project = new AspNetAppProject ("C#");
+//
+// project.FileName = UnitTests.TestBase.GetTempFile (".csproj");
+// string file = UnitTests.TestBase.GetTempFile (extension);
+// project.AddFile (file);
+//
+// var pcw = TypeSystemService.LoadProject (project);
+// TypeSystemService.ForceUpdate (pcw);
+// pcw.ReconnectAssemblyReferences ();
+//
+// sev = new TestViewContent ();
+// sev.Project = project;
+// sev.ContentName = file;
+// sev.Text = editorText;
+// sev.CursorPosition = cursorPosition;
+//
+// var tww = new TestWorkbenchWindow ();
+// tww.ViewContent = sev;
+//
+// var doc = new Document (tww);
+// var parser = new RazorTestingParser {
+// Doc = doc
+// };
+// var parsedDoc = parser.Parse (false, sev.ContentName, new StringReader (parsedText), project);
+//
+// return new RazorTestingEditorExtension (doc, parsedDoc as RazorCSharpParsedDocument, isInCSharpContext);
+// }
}
public class RazorTestingParser : RazorCSharpParser
{
public Document Doc { get; set; }
- public override ParsedDocument Parse (bool storeAst, string fileName, System.IO.TextReader content, Project project = null)
+ public override System.Threading.Tasks.Task<ParsedDocument> Parse (ParseOptions parseOptions, System.Threading.CancellationToken cancellationToken)
{
- Doc.Editor.Document.FileName = fileName;
- OpenDocuments.Add (Doc.Editor.Document);
- return base.Parse (storeAst, fileName, content, project);
+ Doc.Editor.FileName = parseOptions.FileName;
+ OpenDocuments.Add (Doc.Editor);
+ return base.Parse (parseOptions, cancellationToken);
}
}
@@ -138,7 +139,7 @@ namespace MonoDevelop.AspNet.Tests.Razor
public RazorTestingEditorExtension (Document doc, RazorCSharpParsedDocument parsedDoc, bool cSharpContext)
{
razorDocument = parsedDoc;
- Initialize (doc);
+ Initialize (doc.Editor, doc);
if (cSharpContext) {
InitializeCodeCompletion ();
SwitchToHidden ();
@@ -151,7 +152,7 @@ namespace MonoDevelop.AspNet.Tests.Razor
if (!cSharpContext)
ctx.TriggerOffset = sev.CursorPosition;
else
- ctx.TriggerOffset = hiddenInfo.UnderlyingDocument.Editor.Caret.Offset;
+ ctx.TriggerOffset = hiddenInfo.UnderlyingDocument.Editor.CaretOffset;
int line, column;
sev.GetLineColumnFromPosition (ctx.TriggerOffset, out line, out column);
diff --git a/main/src/addins/AspNet/Tests/Razor/RazorCompletionTests.cs b/main/src/addins/AspNet/Tests/Razor/RazorCompletionTests.cs
index 98b36239c4..d32f818422 100644
--- a/main/src/addins/AspNet/Tests/Razor/RazorCompletionTests.cs
+++ b/main/src/addins/AspNet/Tests/Razor/RazorCompletionTests.cs
@@ -33,86 +33,88 @@ namespace MonoDevelop.AspNet.Tests.Razor
[TestFixture]
class RazorCompletionTests : TestBase
{
- [Test]
- public void HtmlTagsCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("<$", false);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("p"));
- Assert.IsNotNull (provider.Find ("div"));
- }
+ // TODO: Roslyn port
- [Test]
- public void NestedHtmlTagsCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("<div><ul><$ </ul></div>", false);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("li"));
- }
-
- [Test]
- public void RazorDirectivesAndStatementsCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("@m$", true);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("model"));
- Assert.IsNotNull (provider.Find ("sessionstate"));
- Assert.IsNotNull (provider.Find ("using"));
- Assert.IsNotNull (provider.Find ("layout"));
- Assert.IsNotNull (provider.Find ("section"));
- Assert.IsNotNull (provider.Find ("functions"));
- Assert.IsNotNull (provider.Find ("helper"));
- Assert.IsNotNull (provider.Find ("inherits"));
- Assert.IsNotNull (provider.Find ("for"));
- Assert.IsNotNull (provider.Find ("foreach"));
- Assert.IsNotNull (provider.Find ("while"));
- Assert.IsNotNull (provider.Find ("do"));
- Assert.IsNotNull (provider.Find ("lock"));
- Assert.IsNotNull (provider.Find ("switch"));
- Assert.IsNotNull (provider.Find ("if"));
- Assert.IsNotNull (provider.Find ("try"));
- }
-
- [Test]
- public void CSharpIdentifiersCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("@{ i$ }", true);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("int"));
- Assert.IsNotNull (provider.Find ("var"));
- }
-
- [Test]
- public void CSharpIdentifiersCtrlSpaceCompletion ()
- {
- var provider = RazorCompletionTesting.CreateRazorCtrlSpaceProvider ("@{ $ }", true);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("int"));
- Assert.IsNotNull (provider.Find ("var"));
- }
-
- [Test]
- public void CSharpMembersCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("@{ Char.$ }", true);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("IsLetter"));
- }
-
- [Test]
- public void CSharpMembersCtrlSpaceCompletion ()
- {
- var provider = RazorCompletionTesting.CreateRazorCtrlSpaceProvider ("@{ Char.Is$ }", true);
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("IsLetter"));
- }
-
- [Test]
- public void CSharpParametersCompletion ()
- {
- var provider = RazorCompletionTesting.CreateProvider ("@{ Char.IsLetter($ }");
- Assert.IsNotNull (provider);
- Assert.AreEqual (2, provider.Count);
- }
+// [Test]
+// public void HtmlTagsCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("<$", false);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("p"));
+// Assert.IsNotNull (provider.Find ("div"));
+// }
+//
+// [Test]
+// public void NestedHtmlTagsCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("<div><ul><$ </ul></div>", false);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("li"));
+// }
+//
+// [Test]
+// public void RazorDirectivesAndStatementsCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("@m$", true);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("model"));
+// Assert.IsNotNull (provider.Find ("sessionstate"));
+// Assert.IsNotNull (provider.Find ("using"));
+// Assert.IsNotNull (provider.Find ("layout"));
+// Assert.IsNotNull (provider.Find ("section"));
+// Assert.IsNotNull (provider.Find ("functions"));
+// Assert.IsNotNull (provider.Find ("helper"));
+// Assert.IsNotNull (provider.Find ("inherits"));
+// Assert.IsNotNull (provider.Find ("for"));
+// Assert.IsNotNull (provider.Find ("foreach"));
+// Assert.IsNotNull (provider.Find ("while"));
+// Assert.IsNotNull (provider.Find ("do"));
+// Assert.IsNotNull (provider.Find ("lock"));
+// Assert.IsNotNull (provider.Find ("switch"));
+// Assert.IsNotNull (provider.Find ("if"));
+// Assert.IsNotNull (provider.Find ("try"));
+// }
+//
+// [Test]
+// public void CSharpIdentifiersCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("@{ i$ }", true);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("int"));
+// Assert.IsNotNull (provider.Find ("var"));
+// }
+//
+// [Test]
+// public void CSharpIdentifiersCtrlSpaceCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateRazorCtrlSpaceProvider ("@{ $ }", true);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("int"));
+// Assert.IsNotNull (provider.Find ("var"));
+// }
+//
+// [Test]
+// public void CSharpMembersCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("@{ Char.$ }", true);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("IsLetter"));
+// }
+//
+// [Test]
+// public void CSharpMembersCtrlSpaceCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateRazorCtrlSpaceProvider ("@{ Char.Is$ }", true);
+// Assert.IsNotNull (provider);
+// Assert.IsNotNull (provider.Find ("IsLetter"));
+// }
+//
+// [Test]
+// public void CSharpParametersCompletion ()
+// {
+// var provider = RazorCompletionTesting.CreateProvider ("@{ Char.IsLetter($ }");
+// Assert.IsNotNull (provider);
+// Assert.AreEqual (2, provider.Count);
+// }
}
}
diff --git a/main/src/addins/AspNet/Tests/WebForms/WebFormsTesting.cs b/main/src/addins/AspNet/Tests/WebForms/WebFormsTesting.cs
index 74f486803c..393106bfbe 100644
--- a/main/src/addins/AspNet/Tests/WebForms/WebFormsTesting.cs
+++ b/main/src/addins/AspNet/Tests/WebForms/WebFormsTesting.cs
@@ -25,8 +25,10 @@
// THE SOFTWARE.
using System.IO;
+using System.Threading;
using MonoDevelop.AspNet.Projects;
using MonoDevelop.AspNet.WebForms;
+using MonoDevelop.Core.Text;
using MonoDevelop.CSharpBinding;
using MonoDevelop.CSharpBinding.Tests;
using MonoDevelop.Ide.CodeCompletion;
@@ -47,13 +49,17 @@ namespace MonoDevelop.AspNet.Tests.WebForms
var textEditorCompletion = CreateEditor (text, extension, out editorText, out sev);
int cursorPosition = text.IndexOf ('$');
- int triggerWordLength = 1;
var ctx = textEditorCompletion.GetCodeCompletionContext (sev);
if (isCtrlSpace)
return textEditorCompletion.CodeCompletionCommand (ctx) as CompletionDataList;
- else
- return textEditorCompletion.HandleCodeCompletion (ctx, editorText[cursorPosition - 1], ref triggerWordLength) as CompletionDataList;
+ else {
+ var task = textEditorCompletion.HandleCodeCompletionAsync (ctx, editorText [cursorPosition - 1]);
+ if (task != null) {
+ return task.Result as CompletionDataList;
+ }
+ return null;
+ }
}
static WebFormsTestingEditorExtension CreateEditor (string text, string extension, out string editorText, out TestViewContent sev)
@@ -76,10 +82,6 @@ namespace MonoDevelop.AspNet.Tests.WebForms
string file = UnitTests.TestBase.GetTempFile (extension);
project.AddFile (file);
- var pcw = TypeSystemService.LoadProject (project);
- TypeSystemService.ForceUpdate (pcw);
- pcw.ReconnectAssemblyReferences ();
-
sev = new TestViewContent ();
sev.Project = project;
sev.ContentName = file;
@@ -90,9 +92,14 @@ namespace MonoDevelop.AspNet.Tests.WebForms
tww.ViewContent = sev;
var doc = new TestDocument (tww);
- doc.Editor.Document.FileName = sev.ContentName;
+ doc.Editor.FileName = sev.ContentName;
var parser = new WebFormsParser ();
- var parsedDoc = (WebFormsParsedDocument) parser.Parse (false, sev.ContentName, new StringReader (parsedText), project);
+ var options = new ParseOptions {
+ Project = project,
+ FileName = sev.ContentName,
+ Content = new StringTextSource (parsedText)
+ };
+ var parsedDoc = (WebFormsParsedDocument)parser.Parse (options, default(CancellationToken)).Result;
doc.HiddenParsedDocument = parsedDoc;
return new WebFormsTestingEditorExtension (doc);
@@ -102,7 +109,7 @@ namespace MonoDevelop.AspNet.Tests.WebForms
{
public WebFormsTestingEditorExtension (Document doc)
{
- Initialize (doc);
+ Initialize (doc.Editor, doc);
}
public CodeCompletionContext GetCodeCompletionContext (TestViewContent sev)