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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
<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 @@ |
|||||||
|
// <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