Browse Source

Fixed unit tests (implemented missing members in MockProjectContent).

Make mscorlib.GetClass("System.Void").ProjectContent == mscorlib (previously it was DummyProjectContent)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3527 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
e3e1e91b92
  1. 4
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/InferredReturnType.cs
  2. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/NamespaceContentsAddedToCtrlSpaceTestFixture.cs
  3. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveConsoleTestFixture.cs
  4. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveConsoleWriteLineTestFixture.cs
  5. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalClassInstanceTestFixture.cs
  6. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveSystemConsoleTestFixture.cs
  7. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockClass.cs
  8. 12
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs
  9. 3
      src/Main/Base/Test/NRefactoryResolverTests.cs
  10. 2
      src/Main/Base/Test/ReflectionLayerTests.cs
  11. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
  12. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs
  13. 24
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs
  14. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ReflectionProjectContent.cs
  15. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

4
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/InferredReturnType.cs

@ -51,7 +51,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -51,7 +51,7 @@ namespace Grunwald.BooBinding.CodeCompletion
if (useLastStatementIfNoReturnStatement && v.lastExpressionStatement != null) {
cachedType = new BooResolver().GetTypeOfExpression(v.lastExpressionStatement.Expression, context);
} else {
cachedType = VoidReturnType.Instance;
cachedType = ParserService.CurrentProjectContent.SystemTypes.Void;
}
} else if (v.result is NullReturnType) {
cachedType = ConvertVisitor.GetDefaultReturnType(ParserService.CurrentProjectContent);
@ -85,7 +85,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -85,7 +85,7 @@ namespace Grunwald.BooBinding.CodeCompletion
{
noReturnStatement = false;
if (node.Expression == null) {
result = VoidReturnType.Instance;
result = ParserService.CurrentProjectContent.SystemTypes.Void;
} else {
result = new BooResolver().GetTypeOfExpression(node.Expression, context);
}

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/NamespaceContentsAddedToCtrlSpaceTestFixture.cs

@ -35,7 +35,7 @@ namespace PythonBinding.Tests.Resolver @@ -35,7 +35,7 @@ namespace PythonBinding.Tests.Resolver
ParseInformation parseInfo = new ParseInformation();
mockProjectContent = new MockProjectContent();
mockProjectContent.NamespacesToAdd.Add("Test");
myTestClass = new MockClass("MyTestClass");
myTestClass = new MockClass(mockProjectContent, "MyTestClass");
mockProjectContent.NamespaceContentsToReturn.Add(myTestClass);
DefaultCompilationUnit cu = new DefaultCompilationUnit(mockProjectContent) { ErrorsDuringCompile = true };

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveConsoleTestFixture.cs

@ -41,7 +41,7 @@ namespace PythonBinding.Tests.Resolver @@ -41,7 +41,7 @@ namespace PythonBinding.Tests.Resolver
// type is not fully qualified with its namespace.
mockProjectContent.ClassToReturnFromGetClass = null;
systemConsoleClass = new MockClass("System.Console");
systemConsoleClass = new MockClass(mockProjectContent, "System.Console");
mockProjectContent.ClassesInProjectContent.Add(systemConsoleClass);
compilationUnit = new DefaultCompilationUnit(mockProjectContent) { ErrorsDuringCompile = true };
@ -56,7 +56,7 @@ namespace PythonBinding.Tests.Resolver @@ -56,7 +56,7 @@ namespace PythonBinding.Tests.Resolver
ExpressionResult expressionResult = new ExpressionResult("Console", new DomRegion(3, 7), null, null);
resolveResult = resolver.Resolve(expressionResult, parseInfo, python);
}
[Test]
public void IsTypeResolveResult()
{

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveConsoleWriteLineTestFixture.cs

@ -36,7 +36,7 @@ namespace PythonBinding.Tests.Resolver @@ -36,7 +36,7 @@ namespace PythonBinding.Tests.Resolver
ParseInformation parseInfo = new ParseInformation();
mockProjectContent = new MockProjectContent();
systemConsoleClass = new MockClass("System.Console");
systemConsoleClass = new MockClass(mockProjectContent, "System.Console");
mockProjectContent.ClassToReturnFromGetClass = systemConsoleClass;
mockProjectContent.ClassNameForGetClass = "Console";

3
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalClassInstanceTestFixture.cs

@ -36,10 +36,9 @@ namespace PythonBinding.Tests.Resolver @@ -36,10 +36,9 @@ namespace PythonBinding.Tests.Resolver
{
resolver = new PythonResolver();
testClass = new MockClass("Test.Test1");
ParseInformation parseInfo = new ParseInformation();
mockProjectContent = new MockProjectContent();
testClass = new MockClass(mockProjectContent, "Test.Test1");
mockProjectContent.ClassesInProjectContent.Add(testClass);
mockProjectContent.ClassToReturnFromGetClass = testClass;
mockProjectContent.ClassNameForGetClass = "Test.Test1";

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveSystemConsoleTestFixture.cs

@ -37,7 +37,7 @@ namespace PythonBinding.Tests.Resolver @@ -37,7 +37,7 @@ namespace PythonBinding.Tests.Resolver
ParseInformation parseInfo = new ParseInformation();
mockProjectContent = new MockProjectContent();
systemConsoleClass = new MockClass("System.Console");
systemConsoleClass = new MockClass(mockProjectContent, "System.Console");
mockProjectContent.ClassToReturnFromGetClass = systemConsoleClass;
compilationUnit = CreateCompilationUnit(mockProjectContent);

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockClass.cs

@ -23,8 +23,8 @@ namespace PythonBinding.Tests.Utils @@ -23,8 +23,8 @@ namespace PythonBinding.Tests.Utils
{
}
public MockClass(string name)
: base(DefaultCompilationUnit.DummyCompilationUnit, name)
public MockClass(IProjectContent pc, string name)
: base(new DefaultCompilationUnit(pc), name)
{
}
}

12
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs

@ -176,13 +176,13 @@ namespace PythonBinding.Tests.Utils @@ -176,13 +176,13 @@ namespace PythonBinding.Tests.Utils
public XmlDoc XmlDoc {
get {
throw new NotImplementedException();
return null;
}
}
public bool IsUpToDate {
get {
throw new NotImplementedException();
return true;
}
}
@ -214,19 +214,19 @@ namespace PythonBinding.Tests.Utils @@ -214,19 +214,19 @@ namespace PythonBinding.Tests.Utils
public object Project {
get {
throw new NotImplementedException();
return null;
}
}
public SystemTypes SystemTypes {
get {
throw new NotImplementedException();
return new SystemTypes(this);
}
}
public string GetXmlDocumentation(string memberTag)
{
throw new NotImplementedException();
return null;
}
public void AddClassToNamespaceList(IClass addClass)
@ -274,7 +274,7 @@ namespace PythonBinding.Tests.Utils @@ -274,7 +274,7 @@ namespace PythonBinding.Tests.Utils
public IClass GetClass(string typeName, int typeParameterCount, LanguageProperties language, bool lookInReferences)
{
throw new NotImplementedException();
return GetClass(typeName, typeParameterCount);
}
public bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences)

3
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -457,7 +457,8 @@ class A { @@ -457,7 +457,8 @@ class A {
";
ResolveResult result = Resolve(program, "TestMethod()", 4);
Assert.IsNotNull(result);
Assert.AreSame(VoidReturnType.Instance, result.ResolvedType, result.ResolvedType.ToString());
Assert.AreEqual(result.CallingClass.ProjectContent.SystemTypes.Void,
result.ResolvedType, result.ResolvedType.ToString());
Assert.AreEqual(0, result.GetCompletionData(lastPC).Count);
}

2
src/Main/Base/Test/ReflectionLayerTests.cs

@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
IClass c = pc.GetClass("System.Void", 0);
Assert.IsNotNull(c, "System.Void not found");
Assert.AreSame(c.DefaultReturnType, VoidReturnType.Instance, "VoidReturnType.Instance is c.DefaultReturnType");
Assert.AreSame(c.DefaultReturnType, pc.SystemTypes.Void, "pc.SystemTypes.Void is c.DefaultReturnType");
}
public class TestClass<A, B> where A : B {

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs

@ -69,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -69,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
if (type == null) {
LoggingService.Warn("CecilReader: Null type for: " + member);
return VoidReturnType.Instance;
return new VoidReturnType(pc);
}
if (type is ReferenceType) {
// TODO: Use ByRefRefReturnType

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs

@ -191,7 +191,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -191,7 +191,8 @@ namespace ICSharpCode.SharpDevelop.Dom
bool supportsExtensionProperties = language.SupportsExtensionProperties;
if (supportsExtensionMethods || supportsExtensionProperties) {
ArrayList list = new ArrayList();
IMethod dummyMethod = new DefaultMethod("dummy", VoidReturnType.Instance, ModifierEnum.Static, DomRegion.Empty, DomRegion.Empty, callingClass);
IMethod dummyMethod = new DefaultMethod("dummy", callingClass.ProjectContent.SystemTypes.Void,
ModifierEnum.Static, DomRegion.Empty, DomRegion.Empty, callingClass);
CtrlSpaceResolveHelper.AddContentsFromCalling(list, callingClass, dummyMethod);
CtrlSpaceResolveHelper.AddImportedNamespaceContents(list, callingClass.CompilationUnit, callingClass);

24
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs

@ -12,7 +12,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -12,7 +12,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{
public class SystemTypes
{
public readonly IReturnType Void = VoidReturnType.Instance;
public readonly IReturnType Void;
public readonly IReturnType Object;
public readonly IReturnType Delegate;
public readonly IReturnType ValueType;
@ -36,6 +36,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -36,6 +36,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public SystemTypes(IProjectContent pc)
{
this.pc = pc;
Void = new VoidReturnType(pc);
Object = CreateFromName("System.Object");
Delegate = CreateFromName("System.Delegate");
ValueType = CreateFromName("System.ValueType");
@ -62,7 +63,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -62,7 +63,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return c.DefaultReturnType;
} else {
LoggingService.Warn("SystemTypes.CreateFromName could not find " + name);
return VoidReturnType.Instance;
return Void;
}
}
@ -78,36 +79,39 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -78,36 +79,39 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
internal sealed class VoidClass : DefaultClass
public sealed class VoidClass : DefaultClass
{
internal static readonly string VoidName = typeof(void).FullName;
public static readonly VoidClass Instance = new VoidClass();
private VoidClass()
: base(DefaultCompilationUnit.DummyCompilationUnit, VoidName)
public VoidClass(IProjectContent pc)
: base(new DefaultCompilationUnit(pc), VoidName)
{
this.ClassType = ClassType.Struct;
this.Modifiers = ModifierEnum.Public | ModifierEnum.Sealed;
Freeze();
}
protected override IReturnType CreateDefaultReturnType()
{
return VoidReturnType.Instance;
return ProjectContent.SystemTypes.Void;
}
}
public sealed class VoidReturnType : AbstractReturnType
{
public static readonly VoidReturnType Instance = new VoidReturnType();
IProjectContent pc;
private VoidReturnType()
public VoidReturnType(IProjectContent pc)
{
if (pc == null)
throw new ArgumentNullException("pc");
this.pc = pc;
FullyQualifiedName = VoidClass.VoidName;
}
public override IClass GetUnderlyingClass()
{
return VoidClass.Instance;
return pc.GetClass("System.Void", 0, LanguageProperties.CSharp, true);
}
public override List<IMethod> GetMethods()

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ReflectionProjectContent.cs

@ -134,7 +134,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -134,7 +134,7 @@ namespace ICSharpCode.SharpDevelop.Dom
IClass voidClass = GetClassInternal(VoidClass.VoidName, 0, Language);
if (voidClass != null) {
RemoveClass(voidClass);
AddClassToNamespaceList(VoidClass.Instance);
AddClassToNamespaceList(new VoidClass(this));
}
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

@ -653,7 +653,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -653,7 +653,7 @@ namespace ICSharpCode.SharpDevelop.Dom
case NullRTReferenceCode:
return null;
case VoidRTCode:
return VoidReturnType.Instance;
return new VoidReturnType(pc);
case PointerRTCode:
return new PointerReturnType(ReadType());
default:

Loading…
Cancel
Save