Browse Source
Refactored the ResourceToolkit so that unit testing is possible without properly initializing all the SharpDevelop core services. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3282 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
21 changed files with 1965 additions and 53 deletions
@ -0,0 +1,85 @@
@@ -0,0 +1,85 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using ICSharpCode.SharpDevelop; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.TextEditor.Document; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests |
||||
{ |
||||
public abstract class AbstractResourceResolverTestFixture : AbstractTestProjectTestFixture |
||||
{ |
||||
protected abstract string DefaultFileName { |
||||
get; |
||||
} |
||||
|
||||
protected override void DoSetUp() |
||||
{ |
||||
base.DoSetUp(); |
||||
TestHelper.InitializeResolvers(); |
||||
} |
||||
|
||||
protected void EnlistTestFile(string fileName, string code, bool parseFile) |
||||
{ |
||||
ResourceResolverService.SetFileContentUnitTestOnly(fileName, code); |
||||
ProjectFileDictionaryService.AddFile(fileName, this.Project); |
||||
|
||||
if (parseFile) { |
||||
IParser parser = ResourceResolverService.GetParser(fileName); |
||||
Assert.IsNotNull(parser, "Could not get parser for " + fileName+ "."); |
||||
ICompilationUnit cu = parser.Parse(this.DefaultProjectContent, fileName, code); |
||||
cu.Freeze(); |
||||
Assert.IsFalse(cu.ErrorsDuringCompile, "Errors while parsing test program."); |
||||
ParserService.RegisterParseInformation(fileName, cu); |
||||
this.DefaultProjectContent.UpdateCompilationUnit(null, cu, fileName); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Resolves a resource reference.
|
||||
/// Line and column are 0-based.
|
||||
/// </summary>
|
||||
protected ResourceResolveResult Resolve(string fileName, string code, int caretLine, int caretColumn, char? charTyped, bool parseFile) |
||||
{ |
||||
this.EnlistTestFile(fileName, code, parseFile); |
||||
IDocument doc = new DocumentFactory().CreateDocument(); |
||||
doc.TextContent = code; |
||||
return ResourceResolverService.Resolve(fileName, doc, caretLine, caretColumn, charTyped); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Resolves a resource reference.
|
||||
/// Line and column are 0-based.
|
||||
/// </summary>
|
||||
protected ResourceResolveResult Resolve(string code, int caretLine, int caretColumn, char? charTyped) |
||||
{ |
||||
return this.Resolve(this.DefaultFileName, code, caretLine, caretColumn, charTyped, true); |
||||
} |
||||
|
||||
protected override void DoTearDown() |
||||
{ |
||||
base.DoTearDown(); |
||||
NRefactoryAstCacheService.DisableCache(); |
||||
} |
||||
|
||||
protected override void Dispose(bool disposing) |
||||
{ |
||||
try { |
||||
if (disposing) { |
||||
NRefactoryAstCacheService.DisableCache(); |
||||
} |
||||
} finally { |
||||
base.Dispose(disposing); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,110 @@
@@ -0,0 +1,110 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using ICSharpCode.SharpDevelop; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests |
||||
{ |
||||
public abstract class AbstractTestProjectTestFixture : IDisposable |
||||
{ |
||||
Solution solution; |
||||
IProject project; |
||||
DefaultProjectContent defaultPC; |
||||
|
||||
[SetUp] |
||||
public void SetUp() |
||||
{ |
||||
this.DoSetUp(); |
||||
} |
||||
|
||||
[TearDown] |
||||
public void TearDown() |
||||
{ |
||||
this.DoTearDown(); |
||||
} |
||||
|
||||
public void Dispose() |
||||
{ |
||||
this.Dispose(true); |
||||
} |
||||
|
||||
protected virtual void Dispose(bool disposing) |
||||
{ |
||||
if (disposing) { |
||||
this.DoTearDown(); |
||||
} |
||||
} |
||||
|
||||
protected virtual void DoSetUp() |
||||
{ |
||||
TestHelper.InitializeParsers(); |
||||
|
||||
this.solution = new Solution(); |
||||
this.project = this.CreateTestProject(); |
||||
ProjectService.CurrentProject = this.project; |
||||
|
||||
DefaultProjectContent pc = this.CreateNewProjectContent(this.project); |
||||
HostCallback.GetCurrentProjectContent = delegate { |
||||
return pc; |
||||
}; |
||||
ResourceResolverService.SetProjectContentUnitTestOnly(this.project, pc); |
||||
this.defaultPC = pc; |
||||
} |
||||
|
||||
protected virtual void DoTearDown() |
||||
{ |
||||
if (this.defaultPC != null) { |
||||
this.defaultPC.Dispose(); |
||||
this.defaultPC = null; |
||||
} |
||||
if (this.project != null) { |
||||
this.project.Dispose(); |
||||
this.project = null; |
||||
} |
||||
if (this.solution != null) { |
||||
this.solution.Dispose(); |
||||
this.solution = null; |
||||
} |
||||
} |
||||
|
||||
protected abstract IProject CreateTestProject(); |
||||
|
||||
protected IProject Project { |
||||
get { return this.project; } |
||||
} |
||||
|
||||
protected DefaultProjectContent DefaultProjectContent { |
||||
get { return this.defaultPC; } |
||||
} |
||||
|
||||
protected Solution Solution { |
||||
get { return this.solution; } |
||||
} |
||||
|
||||
protected virtual DefaultProjectContent CreateNewProjectContent(IProject project) |
||||
{ |
||||
DefaultProjectContent pc = new DefaultProjectContent(); |
||||
|
||||
pc.ReferencedContents.Add(ParserService.DefaultProjectContentRegistry.Mscorlib); |
||||
pc.ReferencedContents.Add(ParserService.DefaultProjectContentRegistry.GetProjectContentForReference("System", "System")); |
||||
|
||||
if (project != null) { |
||||
if (project.LanguageProperties != null) { |
||||
pc.Language = project.LanguageProperties; |
||||
} |
||||
} |
||||
|
||||
return pc; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.IO; |
||||
|
||||
using CSharpBinding; |
||||
using ICSharpCode.SharpDevelop; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Internal.Templates; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
public abstract class AbstractCSharpResourceResolverTestFixture : AbstractResourceResolverTestFixture |
||||
{ |
||||
protected override string DefaultFileName { |
||||
get { return "a.cs"; } |
||||
} |
||||
|
||||
protected override IProject CreateTestProject() |
||||
{ |
||||
ProjectCreateInformation info = new ProjectCreateInformation(); |
||||
info.ProjectName = "Test"; |
||||
info.RootNamespace = "Test"; |
||||
info.OutputProjectFileName = Path.Combine(Path.GetTempPath(), "Test.csproj"); |
||||
info.Solution = this.Solution; |
||||
|
||||
CSharpProject p = new CSharpProject(info); |
||||
return p; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,104 @@
@@ -0,0 +1,104 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
using Hornung.ResourceToolkit.Refactoring; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the AnyResourceReferenceFinder in C#.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public sealed class AnyResourceReferenceFinderTests |
||||
{ |
||||
[TestFixtureSetUp] |
||||
public void FixtureSetUp() |
||||
{ |
||||
TestHelper.InitializeParsers(); |
||||
TestHelper.InitializeResolvers(); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
static AnyResourceReferenceFinder CreateFinder() |
||||
{ |
||||
return new AnyResourceReferenceFinder(); |
||||
} |
||||
|
||||
[Test] |
||||
public void NoReference() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
DoSomething(); |
||||
} |
||||
}";
|
||||
AnyResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
} |
||||
|
||||
[Test] |
||||
public void OneReference() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
resMgr.GetString(""TestKey""); |
||||
} |
||||
}";
|
||||
AnyResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(33, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, 33), "Incorrect offset."); |
||||
} |
||||
|
||||
[Test] |
||||
public void TwoReferences() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
resMgr.GetString(""TestKey""); |
||||
resMgr[""TestKey""]; |
||||
} |
||||
}";
|
||||
AnyResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(33, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
Assert.AreEqual(64, finder.GetNextPossibleOffset("a.cs", Code, 33), "Incorrect offset."); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, 64), "Incorrect offset."); |
||||
} |
||||
|
||||
[Test] |
||||
public void FourReferencesMixed() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
resMgr.GetString(""TestKey""); |
||||
X(""${res:TestKey2}""); |
||||
resMgr[""TestKey""]; |
||||
X(""${res:TestKey3}""); |
||||
} |
||||
}";
|
||||
AnyResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(33, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
Assert.AreEqual(61, finder.GetNextPossibleOffset("a.cs", Code, 33), "Incorrect offset."); |
||||
Assert.AreEqual(89, finder.GetNextPossibleOffset("a.cs", Code, 61), "Incorrect offset."); |
||||
Assert.AreEqual(108, finder.GetNextPossibleOffset("a.cs", Code, 89), "Incorrect offset."); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, 108), "Incorrect offset."); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
[Test] |
||||
public void ResultMatch() |
||||
{ |
||||
AnyResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.IsTrue(finder.IsReferenceToResource(new ResourceResolveResult(null, null, null, new ResourceSetReference("SomeResources", "C:\\SomeResources.resx"), "SomeKey"))); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,815 @@
@@ -0,0 +1,815 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
[TestFixture] |
||||
public sealed class BclNRefactoryResourceResolverTests : AbstractCSharpResourceResolverTestFixture |
||||
{ |
||||
readonly IResourceResolver resolver = new NRefactoryResourceResolver(); |
||||
|
||||
IResourceResolver Resolver { |
||||
get { return this.resolver; } |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests with local variables ===
|
||||
|
||||
const string CodeLocalSRMDirectInitFullName = @"class A
|
||||
{ |
||||
void B() |
||||
{ |
||||
System.Resources.ResourceManager mgr = new System.Resources.ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""TestKey""); |
||||
mgr[""TestKey2""]; |
||||
} |
||||
|
||||
void C() |
||||
{ |
||||
mgr.GetString(""TestKey""); |
||||
mgr[""TestKey2""]; |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullName, 5, 18, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameNoIndexer() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullName, 6, 7, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameOutOfScope() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullName, 11, 18, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
|
||||
rrr = Resolve(CodeLocalSRMDirectInitFullName, 12, 7, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeLocalSRMDirectInitFullNameGetStringCompletion = @"class A
|
||||
{ |
||||
void B() |
||||
{ |
||||
System.Resources.ResourceManager mgr = new System.Resources.ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameGetStringIncomplete() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullNameGetStringCompletion, 5, 15, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameGetStringCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullNameGetStringCompletion, 5, 15, '('); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", null, "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameGetStringNoCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullNameGetStringCompletion, 5, 15, '['); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
const string CodeLocalSRMDirectInitFullNameGetStringCompletionBug1 = @"class A
|
||||
{ |
||||
void B() |
||||
{ |
||||
System.Resources.ResourceManager mgr = new System.Resources.ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""TestKey"").Replace |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitFullNameGetStringCompletionBug1() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitFullNameGetStringCompletionBug1, 5, 34, '('); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeLocalIndexerRMDirectInit = @"class IndexerRM : System.Resources.ResourceManager
|
||||
{ |
||||
public IndexerRM(string name, System.Reflection.Assembly assembly) : base(name, assembly) |
||||
{ |
||||
} |
||||
public string this[string key] { |
||||
get { return this.GetString(key); } |
||||
} |
||||
} |
||||
|
||||
class A |
||||
{ |
||||
void B() |
||||
{ |
||||
IndexerRM mgr = new IndexerRM(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr[""TestKey""]; |
||||
mgr |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalIndexerRMDirectInit() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMDirectInit, 15, 7, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalIndexerRMDirectInitCompletionBug1() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMDirectInit, 15, 16, '['); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalIndexerRMDirectInitCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMDirectInit, 16, 5, '['); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", null, "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalIndexerRMDirectInitNoCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMDirectInit, 16, 5, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalIndexerRMDirectInitNoCompletionWrongChar() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMDirectInit, 16, 5, '('); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeLocalIndexerRMBug1 = @"class IndexerRM : System.Resources.ResourceManager
|
||||
{ |
||||
public IndexerRM(string name, System.Reflection.Assembly assembly) : base(name, assembly) |
||||
{ |
||||
} |
||||
public string this[string key] { |
||||
get { return this.GetString(key); } |
||||
} |
||||
} |
||||
|
||||
class A |
||||
{ |
||||
void B() |
||||
{ |
||||
IndexerRM mgr = new IndexerRM(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
DoSomething(mgr[""TestKey""], ""[""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalIndexerRMBug1FirstRef() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalIndexerRMBug1, 15, 19, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeLocalSRMDirectInitAlias = @"using SRM = System.Resources.ResourceManager;
|
||||
class A |
||||
{ |
||||
void B() |
||||
{ |
||||
SRM mgr = new SRM(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""TestKey""); |
||||
mgr[""TestKey2""]; |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitAliasGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitAlias, 6, 18, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void LocalSRMDirectInitAliasNoIndexer() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDirectInitAlias, 7, 7, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeLocalSRMDeferredInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
void B() |
||||
{ |
||||
ResourceManager mgr; |
||||
|
||||
mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void LocalSRMDeferredInitUsingGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeLocalSRMDeferredInitUsing, 8, 18, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests with instance fields ===
|
||||
|
||||
const string CodeInstanceFieldSRMDirectInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
|
||||
void B() |
||||
{ |
||||
this.mgr.GetString(""TestKey""); |
||||
mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstanceFieldSRMDirectInitUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDirectInitUsing, 7, 22, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void InstanceFieldSRMDirectInitUsingGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDirectInitUsing, 8, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeInstanceFieldSRMDeferredInitThisUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
public A() |
||||
{ |
||||
this.mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
this.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstanceFieldSRMDeferredInitThisUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDeferredInitThisUsing, 10, 22, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
const string CodeInstanceFieldSRMDeferredInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
public A() |
||||
{ |
||||
mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
this.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstanceFieldSRMDeferredInitUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDeferredInitUsing, 10, 22, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests with static fields ===
|
||||
|
||||
const string CodeStaticFieldSRMDirectInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
|
||||
void B() |
||||
{ |
||||
A.mgr.GetString(""TestKey""); |
||||
mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticFieldSRMDirectInitUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticFieldSRMDirectInitUsing, 7, 19, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void StaticFieldSRMDirectInitUsingGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDirectInitUsing, 8, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeStaticFieldSRMDeferredInitClassUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr; |
||||
static A() |
||||
{ |
||||
A.mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
A.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticFieldSRMDeferredInitClassUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticFieldSRMDeferredInitClassUsing, 10, 19, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
const string CodeStaticFieldSRMDeferredInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr; |
||||
static A() |
||||
{ |
||||
mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
A.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticFieldSRMDeferredInitUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticFieldSRMDeferredInitUsing, 10, 19, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests with instance properties ===
|
||||
|
||||
const string CodeInstancePropertySRMFieldDirectInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
public ResourceManager Resources { |
||||
get { return mgr; } |
||||
} |
||||
|
||||
ResourceManager mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
|
||||
void B() |
||||
{ |
||||
this.Resources.GetString(""TestKey""); |
||||
Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstancePropertySRMFieldDirectInitUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstancePropertySRMFieldDirectInitUsing, 11, 28, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void InstancePropertySRMFieldDirectInitUsingGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstancePropertySRMFieldDirectInitUsing, 12, 23, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeInstancePropertySRMDeferredFieldInitThisUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
|
||||
public ResourceManager Resources { |
||||
get { return mgr; } |
||||
} |
||||
|
||||
public A() |
||||
{ |
||||
this.mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
this.Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstancePropertySRMDeferredFieldInitThisUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstancePropertySRMDeferredFieldInitThisUsing, 15, 28, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeInstancePropertySRMDeferredPropertyInitThisUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
|
||||
public ResourceManager Resources { |
||||
get { return mgr; } |
||||
private set { mgr = value; } |
||||
} |
||||
|
||||
public A() |
||||
{ |
||||
this.Resources = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
this.Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstancePropertySRMDeferredPropertyInitThisUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstancePropertySRMDeferredPropertyInitThisUsing, 16, 28, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
const string CodeInstanceFieldSRMDeferredWriteOnlyPropertyInitThisUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
|
||||
private ResourceManager Resources { |
||||
set { mgr = value; } |
||||
} |
||||
|
||||
public A() |
||||
{ |
||||
this.Resources = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
this.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstanceFieldSRMDeferredWriteOnlyPropertyInitThisUsingThisGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstanceFieldSRMDeferredWriteOnlyPropertyInitThisUsing, 15, 22, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeInstancePropertySRMInvalidReturnTypeBug = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
ResourceManager mgr; |
||||
|
||||
public ResourceManager Resources { |
||||
get { return mgr; } |
||||
private set { mgr = value; } |
||||
} |
||||
|
||||
public A() |
||||
{ |
||||
foo bar; |
||||
bar = 1; |
||||
this.Resources = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
this.Resources.GetString |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void InstancePropertySRMInvalidReturnTypeBug() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeInstancePropertySRMInvalidReturnTypeBug, 15, 26, '('); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", null, "A", "A.#ctor"); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests with static properties ===
|
||||
|
||||
const string CodeStaticPropertySRMFieldDirectInitUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
public static ResourceManager Resources { |
||||
get { return mgr; } |
||||
} |
||||
|
||||
static ResourceManager mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
|
||||
void B() |
||||
{ |
||||
A.Resources.GetString(""TestKey""); |
||||
Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticPropertySRMFieldDirectInitUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticPropertySRMFieldDirectInitUsing, 11, 25, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void StaticPropertySRMFieldDirectInitUsingGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticPropertySRMFieldDirectInitUsing, 12, 23, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeStaticPropertySRMDeferredFieldInitClassUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr; |
||||
|
||||
public static ResourceManager Resources { |
||||
get { return mgr; } |
||||
} |
||||
|
||||
static A() |
||||
{ |
||||
A.mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
A.Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticPropertySRMDeferredFieldInitClassUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticPropertySRMDeferredFieldInitClassUsing, 15, 25, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeStaticPropertySRMDeferredPropertyInitClassUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr; |
||||
|
||||
public static ResourceManager Resources { |
||||
get { return mgr; } |
||||
private set { mgr = value; } |
||||
} |
||||
|
||||
static A() |
||||
{ |
||||
A.Resources = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
A.Resources.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticPropertySRMDeferredPropertyInitClassUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticPropertySRMDeferredPropertyInitClassUsing, 16, 25, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
const string CodeStaticFieldSRMDeferredWriteOnlyPropertyInitClassUsing = @"using System.Resources;
|
||||
class A |
||||
{ |
||||
static ResourceManager mgr; |
||||
|
||||
private static ResourceManager Resources { |
||||
set { mgr = value; } |
||||
} |
||||
|
||||
static A() |
||||
{ |
||||
A.Resources = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
} |
||||
void B() |
||||
{ |
||||
A.mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void StaticFieldSRMDeferredWriteOnlyPropertyInitClassUsingClassGetString() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeStaticFieldSRMDeferredWriteOnlyPropertyInitClassUsing, 15, 19, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region === Tests for specific behavior ===
|
||||
|
||||
const string CodeUnescapeResourceKey = @"using System.Resources;
|
||||
class A { |
||||
void B() |
||||
{ |
||||
ResourceManager mgr = new ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""Some\""strange\""key""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void UnescapeResourceKey() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeUnescapeResourceKey, 5, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "Some\"strange\"key", "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeSRMTypeOfInit = @"using System.Resources;
|
||||
namespace Test { |
||||
class A { |
||||
void B() |
||||
{ |
||||
ResourceManager mgr = new ResourceManager(typeof(A)); |
||||
mgr.GetString(""TestKey""); |
||||
} |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void SRMTypeOfInit() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeSRMTypeOfInit, 6, 18, null); |
||||
TestHelper.CheckReference(rrr, "Test.A", "TestKey", "Test.A", "Test.A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
[Test] |
||||
public void ResolverSupportsCSharpFiles() |
||||
{ |
||||
Assert.IsTrue(this.Resolver.SupportsFile("a.cs")); |
||||
} |
||||
|
||||
[Test] |
||||
public void CSharpFilePatterns() |
||||
{ |
||||
List<string> patterns = new List<string>(this.Resolver.GetPossiblePatternsForFile("a.cs")); |
||||
Assert.Contains("GetString", patterns); |
||||
Assert.Contains("GetStream", patterns); |
||||
Assert.Contains("GetObject", patterns); |
||||
Assert.Contains("[", patterns); |
||||
Assert.AreEqual(4, patterns.Count, "Incorrect number of resource access patterns for C# files."); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResolverDoesNotSupportBooFiles() |
||||
{ |
||||
Assert.IsFalse(this.Resolver.SupportsFile("a.boo")); |
||||
} |
||||
|
||||
[Test] |
||||
public void UnsupportedFilePatterns() |
||||
{ |
||||
IEnumerable<string> list = this.Resolver.GetPossiblePatternsForFile("a.boo"); |
||||
Assert.IsNotNull(list, "IResourceResolver.GetPossiblePatternsForFile must not return null."); |
||||
|
||||
List<string> patterns = new List<string>(list); |
||||
Assert.AreEqual(0, patterns.Count); |
||||
} |
||||
|
||||
#endregion
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
#region Cache tests
|
||||
|
||||
const string CodeCacheTest = @"class A
|
||||
{ |
||||
void B() |
||||
{ |
||||
System.Resources.ResourceManager mgr = new System.Resources.ResourceManager(""Test.TestResources"", System.Reflection.Assembly.GetExecutingAssembly()); |
||||
mgr.GetString(""TestKey""); |
||||
mgr.GetString(""TestKey2""); |
||||
} |
||||
} |
||||
";
|
||||
|
||||
[Test] |
||||
public void UseAstCache() |
||||
{ |
||||
NRefactoryAstCacheService.EnableCache(); |
||||
|
||||
ResourceResolveResult rrr = Resolve(CodeCacheTest, 5, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
|
||||
rrr = Resolve(CodeCacheTest, 5, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey", "A", "A.B"); |
||||
|
||||
rrr = Resolve(CodeCacheTest, 6, 17, null); |
||||
TestHelper.CheckReference(rrr, "Test.TestResources", "TestKey2", "A", "A.B"); |
||||
|
||||
NRefactoryAstCacheService.DisableCache(); |
||||
} |
||||
|
||||
[Test] |
||||
[ExpectedException(typeof(InvalidOperationException), ExpectedMessage="The AST cache is already enabled.")] |
||||
public void AstCacheEnableTwice() |
||||
{ |
||||
NRefactoryAstCacheService.EnableCache(); |
||||
NRefactoryAstCacheService.EnableCache(); |
||||
} |
||||
|
||||
#endregion
|
||||
} |
||||
} |
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
[TestFixture] |
||||
public sealed class ICSharpCodeCoreNRefactoryResourceResolverTests : AbstractCSharpResourceResolverTestFixture |
||||
{ |
||||
protected override void DoSetUp() |
||||
{ |
||||
base.DoSetUp(); |
||||
|
||||
const string ICSharpCodeCoreCode = @"namespace ICSharpCode.Core
|
||||
{ |
||||
public class ResourceService |
||||
{ |
||||
public static string GetString(string key) |
||||
{ |
||||
return """"; |
||||
} |
||||
} |
||||
} |
||||
";
|
||||
this.EnlistTestFile("ICSharpCodeCore.cs", ICSharpCodeCoreCode, true); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeClass = @"class A {
|
||||
void B() { |
||||
ICSharpCode.Core.ResourceService.GetString(""TestKey""); |
||||
ICSharpCode.Core.ResourceService.GetString |
||||
} |
||||
}";
|
||||
|
||||
[Test] |
||||
public void GetStringClass() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeClass, 2, 46, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetStringClassCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeClass, 3, 44, '('); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", null, "A", "A.B"); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeUsing = @"using ICSharpCode.Core;
|
||||
class A { |
||||
void B() { |
||||
ResourceService.GetString(""TestKey""); |
||||
ResourceService.GetString |
||||
} |
||||
}";
|
||||
|
||||
[Test] |
||||
public void GetStringUsing() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeUsing, 3, 29, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", "A", "A.B"); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetStringUsingCompletion() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeUsing, 4, 27, '('); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", null, "A", "A.B"); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,195 @@
@@ -0,0 +1,195 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
[TestFixture] |
||||
public sealed class ICSharpCodeCoreResourceResolverTests : AbstractCSharpResourceResolverTestFixture |
||||
{ |
||||
readonly IResourceResolver resolver = new ICSharpCodeCoreResourceResolver(); |
||||
|
||||
IResourceResolver Resolver { |
||||
get { return this.resolver; } |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeResourceAccess = @"class A {
|
||||
string B() { |
||||
return ""${res:TestKey}""; |
||||
} |
||||
}";
|
||||
|
||||
[Test] |
||||
public void ResourceAccessStart() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeResourceAccess, 2, 10, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResourceAccessAtKey() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeResourceAccess, 2, 17, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResourceAccessAtEndOfKey() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeResourceAccess, 2, 23, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void NoCompletionWrongChar() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeResourceAccess, 2, 15, 'x'); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResourceAccessAtKeyWithCache() |
||||
{ |
||||
NRefactoryAstCacheService.EnableCache(); |
||||
|
||||
ResourceResolveResult rrr = Resolve(CodeResourceAccess, 2, 17, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
|
||||
rrr = Resolve(CodeResourceAccess, 2, 17, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
|
||||
NRefactoryAstCacheService.DisableCache(); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeBoundaryTests = @"//${res
|
||||
class A { |
||||
string B() { |
||||
return ""${res:TestKey}""; |
||||
return ""${res:""; |
||||
} |
||||
} |
||||
//${res";
|
||||
|
||||
[Test] |
||||
public void StartOfDocument() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 0, 0, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void StartOfDocumentTag() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 0, 3, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void MiddleOfDocument() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 3, 10, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void MiddleOfDocumentIncompleteTag() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 4, 10, null); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", null, null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void EndOfDocumentTag() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 7, 3, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void EndOfDocument() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 7, 6, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
[Test] |
||||
public void AfterEndOfDocument() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve(CodeBoundaryTests, 8, 0, null); |
||||
TestHelper.CheckNoReference(rrr); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
const string CodeAddinFile = @"<AddIn name=""Test"">
|
||||
<Path name=""/TestPath""> |
||||
<String id=""TestId"" text=""${res:TestKey}""/> |
||||
</Path> |
||||
</AddIn>";
|
||||
|
||||
[Test] |
||||
public void ResourceAccessInAddinFile() |
||||
{ |
||||
ResourceResolveResult rrr = Resolve("test.addin", CodeAddinFile, 2, 34, null, false); |
||||
TestHelper.CheckReference(rrr, "[ICSharpCodeCoreHostResourceSet]", "TestKey", null, null); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
[Test] |
||||
public void ResolverSupportsCSharpFiles() |
||||
{ |
||||
Assert.IsTrue(this.Resolver.SupportsFile("a.cs")); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResolverSupportsAddInFiles() |
||||
{ |
||||
Assert.IsTrue(this.Resolver.SupportsFile("Test.AddIn")); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResolverSupportsXfrmFiles() |
||||
{ |
||||
Assert.IsTrue(this.Resolver.SupportsFile("Test.XFrm")); |
||||
} |
||||
|
||||
[Test] |
||||
public void CSharpFilePatterns() |
||||
{ |
||||
List<string> patterns = new List<string>(this.Resolver.GetPossiblePatternsForFile("a.cs")); |
||||
Assert.Contains("${res:", patterns); |
||||
Assert.AreEqual(1, patterns.Count, "Incorrect number of resource access patterns for C# files."); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResolverUnsupportedExtension() |
||||
{ |
||||
Assert.IsFalse(this.Resolver.SupportsFile("Test.resx")); |
||||
} |
||||
|
||||
[Test] |
||||
public void UnsupportedFilePatterns() |
||||
{ |
||||
IEnumerable<string> list = this.Resolver.GetPossiblePatternsForFile("a.resx"); |
||||
Assert.IsNotNull(list, "IResourceResolver.GetPossiblePatternsForFile must not return null."); |
||||
|
||||
List<string> patterns = new List<string>(list); |
||||
Assert.AreEqual(0, patterns.Count); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,118 @@
@@ -0,0 +1,118 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
using Hornung.ResourceToolkit.Refactoring; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests.CSharp |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the SpecificResourceReferenceFinder in C#.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public sealed class SpecificResourceReferenceFinderTests |
||||
{ |
||||
[TestFixtureSetUpAttribute] |
||||
public void FixtureSetUp() |
||||
{ |
||||
TestHelper.InitializeParsers(); |
||||
TestHelper.InitializeResolvers(); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
[Test] |
||||
[ExpectedException(typeof(ArgumentNullException))] |
||||
public void NullResourceFileName() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = new SpecificResourceReferenceFinder(null, "TestKey"); |
||||
} |
||||
|
||||
[Test] |
||||
[ExpectedException(typeof(ArgumentNullException))] |
||||
public void NullKey() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = new SpecificResourceReferenceFinder("C:\\TestResources.resx", null); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
static SpecificResourceReferenceFinder CreateFinder() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = new SpecificResourceReferenceFinder("C:\\TestResources.resx", "TestKey"); |
||||
Assert.AreEqual(finder.ResourceFileName, "C:\\TestResources.resx"); |
||||
Assert.AreEqual(finder.Key, "TestKey"); |
||||
return finder; |
||||
} |
||||
|
||||
[Test] |
||||
public void NoReference() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
DoSomething(); |
||||
} |
||||
}";
|
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
} |
||||
|
||||
[Test] |
||||
public void OneReference() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
resMgr.GetString(""TestKey""); |
||||
} |
||||
}";
|
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(44, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, 44), "Incorrect offset."); |
||||
} |
||||
|
||||
[Test] |
||||
public void TwoReferences() |
||||
{ |
||||
const string Code = @"class A {
|
||||
void B() { |
||||
resMgr.GetString(""TestKey""); |
||||
resMgr[""TestKey""]; |
||||
} |
||||
}";
|
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.AreEqual(44, finder.GetNextPossibleOffset("a.cs", Code, -1), "Incorrect offset."); |
||||
Assert.AreEqual(66, finder.GetNextPossibleOffset("a.cs", Code, 44), "Incorrect offset."); |
||||
Assert.AreEqual(-1, finder.GetNextPossibleOffset("a.cs", Code, 66), "Incorrect offset."); |
||||
} |
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
[Test] |
||||
public void ResultNoMatchWrongFile() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.IsFalse(finder.IsReferenceToResource(new ResourceResolveResult(null, null, null, new ResourceSetReference("SomeResources", "C:\\SomeResources.resx"), "TestKey"))); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResultNoMatchWrongKey() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.IsFalse(finder.IsReferenceToResource(new ResourceResolveResult(null, null, null, new ResourceSetReference("TestResources", "C:\\TestResources.resx"), "SomeKey"))); |
||||
} |
||||
|
||||
[Test] |
||||
public void ResultMatch() |
||||
{ |
||||
SpecificResourceReferenceFinder finder = CreateFinder(); |
||||
Assert.IsTrue(finder.IsReferenceToResource(new ResourceResolveResult(null, null, null, new ResourceSetReference("TestResources", "C:\\TestResources.resx"), "TestKey"))); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
#region Using directives
|
||||
|
||||
using System; |
||||
using System.Reflection; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
#endregion
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ResourceToolkit Tests")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("SharpDevelop")] |
||||
[assembly: AssemblyCopyright("")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// This sets the default COM visibility of types in the assembly to invisible.
|
||||
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||
[assembly: ComVisible(false)] |
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("3.0.0.0")] |
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<ProjectGuid>{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}</ProjectGuid> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||
<OutputType>Library</OutputType> |
||||
<RootNamespace>ResourceToolkit.Tests</RootNamespace> |
||||
<AssemblyName>ResourceToolkit.Tests</AssemblyName> |
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> |
||||
<AppDesignerFolder>Properties</AppDesignerFolder> |
||||
<OutputPath>..\..\..\..\..\bin\UnitTests\</OutputPath> |
||||
<Optimize>False</Optimize> |
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
<NoStdLib>False</NoStdLib> |
||||
<WarningLevel>4</WarningLevel> |
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<DebugSymbols>true</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> |
||||
<RegisterForComInterop>False</RegisterForComInterop> |
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> |
||||
<BaseAddress>4194304</BaseAddress> |
||||
<PlatformTarget>AnyCPU</PlatformTarget> |
||||
<FileAlignment>4096</FileAlignment> |
||||
</PropertyGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
<ItemGroup> |
||||
<Reference Include="nunit.framework"> |
||||
<HintPath>..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath> |
||||
</Reference> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Core"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
<Reference Include="System.Xml" /> |
||||
<Reference Include="System.Xml.Linq"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Compile Include="AbstractResourceResolverTestFixture.cs" /> |
||||
<Compile Include="AbstractTestProjectTestFixture.cs" /> |
||||
<Compile Include="CSharp\AbstractCSharpResourceResolverTestFixture.cs" /> |
||||
<Compile Include="CSharp\AnyResourceReferenceFinderTests.cs" /> |
||||
<Compile Include="CSharp\BclNRefactoryResourceResolverTests.cs" /> |
||||
<Compile Include="CSharp\ICSharpCodeCoreNRefactoryResourceResolverTests.cs" /> |
||||
<Compile Include="CSharp\ICSharpCodeCoreResourceResolverTests.cs" /> |
||||
<Compile Include="CSharp\SpecificResourceReferenceFinderTests.cs" /> |
||||
<Compile Include="Properties\AssemblyInfo.cs" /> |
||||
<Compile Include="TestHelper.cs" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj"> |
||||
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project> |
||||
<Name>ICSharpCode.TextEditor</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||
<Name>ICSharpCode.SharpDevelop</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||
<Name>ICSharpCode.Core</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj"> |
||||
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project> |
||||
<Name>ICSharpCode.SharpDevelop.Dom</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj"> |
||||
<Project>{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}</Project> |
||||
<Name>CSharpBinding</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj"> |
||||
<Project>{BF38FB72-B380-4196-AF8C-95749D726C61}</Project> |
||||
<Name>VBNetBinding</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\Project\ResourceToolkit.csproj"> |
||||
<Project>{461606BD-E824-4D0A-8CBA-01810B1F5E02}</Project> |
||||
<Name>ResourceToolkit</Name> |
||||
</ProjectReference> |
||||
<Folder Include="CSharp" /> |
||||
</ItemGroup> |
||||
</Project> |
@ -0,0 +1,97 @@
@@ -0,0 +1,97 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Christian Hornung" email="chhornung@googlemail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
using Hornung.ResourceToolkit; |
||||
using Hornung.ResourceToolkit.Resolver; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ResourceToolkit.Tests |
||||
{ |
||||
static class TestHelper |
||||
{ |
||||
public static void InitializeResolvers() |
||||
{ |
||||
NRefactoryResourceResolver.SetResourceResolversListUnitTestOnly( |
||||
new INRefactoryResourceResolver[] { |
||||
new BclNRefactoryResourceResolver(), |
||||
new ICSharpCodeCoreNRefactoryResourceResolver() |
||||
}); |
||||
ResourceResolverService.SetResourceResolversListUnitTestOnly( |
||||
new IResourceResolver[] { |
||||
new NRefactoryResourceResolver(), |
||||
new ICSharpCodeCoreResourceResolver() |
||||
}); |
||||
} |
||||
|
||||
public static void InitializeParsers() |
||||
{ |
||||
Dictionary<string, IParser> parsers = new Dictionary<string, IParser>(); |
||||
parsers.Add(".cs", new CSharpBinding.Parser.TParser()); |
||||
parsers.Add(".vb", new VBNetBinding.Parser.TParser()); |
||||
ResourceResolverService.SetParsersUnitTestOnly(parsers); |
||||
} |
||||
|
||||
public static void CheckReference(ResourceResolveResult result, string expectedResourceSetName, string expectedKey, string expectedCallingClassFullName, string expectedCallingMemberFullName) |
||||
{ |
||||
Assert.IsNotNull(result, "Resource reference should be detected."); |
||||
|
||||
if (expectedResourceSetName == null) { |
||||
|
||||
Assert.IsNull(result.ResourceSetReference, "Resource set reference should not be detected."); |
||||
|
||||
} else { |
||||
|
||||
Assert.IsNotNull(result.ResourceSetReference, "Resource set reference should be detected."); |
||||
Assert.IsNotNull(result.ResourceSetReference.ResourceSetName, "Resource set name must not be null."); |
||||
Assert.AreEqual(expectedResourceSetName, result.ResourceSetReference.ResourceSetName, "Incorrect resource set name."); |
||||
|
||||
} |
||||
|
||||
if (expectedKey == null) { |
||||
|
||||
Assert.IsNull(result.Key, "Resource key should not be detected."); |
||||
|
||||
} else { |
||||
|
||||
Assert.IsNotNull(result.Key, "Resource key should be detected."); |
||||
Assert.AreEqual(expectedKey, result.Key, "Incorrect resource key."); |
||||
|
||||
} |
||||
|
||||
if (expectedCallingClassFullName == null) { |
||||
|
||||
Assert.IsNull(result.CallingClass, "Calling class should not be detected."); |
||||
|
||||
} else { |
||||
|
||||
Assert.IsNotNull(result.CallingClass, "Calling class should be detected."); |
||||
Assert.AreEqual(expectedCallingClassFullName, result.CallingClass.FullyQualifiedName, "Incorrect calling class."); |
||||
|
||||
} |
||||
|
||||
if (expectedCallingMemberFullName == null) { |
||||
|
||||
Assert.IsNull(result.CallingMember, "Calling member should not be detected."); |
||||
|
||||
} else { |
||||
|
||||
Assert.IsNotNull(result.CallingMember, "Calling member should be detected."); |
||||
Assert.AreEqual(expectedCallingMemberFullName, result.CallingMember.FullyQualifiedName, "Incorrect calling member."); |
||||
|
||||
} |
||||
} |
||||
|
||||
public static void CheckNoReference(ResourceResolveResult result) |
||||
{ |
||||
Assert.IsNull(result, "Resource reference should not be detected."); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue