From 5b72594fad3194a3492e10c6139a430b8244c9e1 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 25 May 2006 15:30:21 +0000 Subject: [PATCH] Fixed unit tests. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1422 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Implementations/ConstructedReturnType.cs | 17 ++++++++--------- .../Dom/Implementations/GenericReturnType.cs | 13 ++++++++++--- .../Src/Dom/Implementations/SystemTypes.cs | 6 +++--- .../Base/Project/Src/Dom/MemberLookupHelper.cs | 4 ++-- .../Src/Dom/ReflectionLayer/DomPersistence.cs | 2 +- src/Main/Base/Test/GenericResolverTests.cs | 2 +- src/Main/Base/Test/MemberLookupHelperTests.cs | 12 +++++++----- src/Main/Base/Test/NRefactoryResolverTests.cs | 2 +- src/Main/Base/Test/ReflectionLayerTests.cs | 7 ++++--- 9 files changed, 37 insertions(+), 28 deletions(-) diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ConstructedReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ConstructedReturnType.cs index ae6f8e489d..3c0a024c65 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/ConstructedReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/ConstructedReturnType.cs @@ -75,9 +75,8 @@ namespace ICSharpCode.SharpDevelop.Dom bool CheckReturnType(IReturnType t) { - if (t is GenericReturnType) { - GenericReturnType rt = (GenericReturnType)t; - return rt.TypeParameter.Method == null; + if (t.IsGenericReturnType) { + return t.CastToGenericReturnType().TypeParameter.Method == null; } else if (t.IsArrayReturnType) { return CheckReturnType(t.CastToArrayReturnType().ArrayElementType); } else if (t.IsConstructedReturnType) { @@ -212,12 +211,6 @@ namespace ICSharpCode.SharpDevelop.Dom return l; } - public override bool IsDefaultReturnType { - get { - return false; - } - } - public override string ToString() { string r = "[ConstructedReturnType: "; @@ -232,6 +225,12 @@ namespace ICSharpCode.SharpDevelop.Dom return r + ">]"; } + public override bool IsDefaultReturnType { + get { + return false; + } + } + public override bool IsArrayReturnType { get { return false; diff --git a/src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs index 049ef7719d..afe4c31456 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs @@ -26,9 +26,10 @@ namespace ICSharpCode.SharpDevelop.Dom public override bool Equals(object o) { - GenericReturnType rt = o as GenericReturnType; - if (rt == null) return false; - return typeParameter.Equals(rt.typeParameter); + IReturnType rt = o as IReturnType; + if (rt == null || !rt.IsGenericReturnType) + return false; + return typeParameter.Equals(rt.CastToGenericReturnType().typeParameter); } public override int GetHashCode() @@ -111,6 +112,12 @@ namespace ICSharpCode.SharpDevelop.Dom return String.Format("[GenericReturnType: {0}]", typeParameter); } + public override bool IsDefaultReturnType { + get { + return false; + } + } + public override bool IsArrayReturnType { get { return false; diff --git a/src/Main/Base/Project/Src/Dom/Implementations/SystemTypes.cs b/src/Main/Base/Project/Src/Dom/Implementations/SystemTypes.cs index b9471b09f0..262d539ec8 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/SystemTypes.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/SystemTypes.cs @@ -77,11 +77,11 @@ namespace ICSharpCode.SharpDevelop.Dom public class VoidClass : DefaultClass { - public static readonly VoidClass Instance = new VoidClass(); - internal static readonly string VoidName = typeof(void).FullName; + public static readonly VoidClass Instance = new VoidClass(); - public VoidClass() : base(DefaultCompilationUnit.DummyCompilationUnit, VoidName) + public VoidClass() + : base(DefaultCompilationUnit.DummyCompilationUnit, VoidName) { } diff --git a/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs b/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs index d980be8628..d5e35534fa 100644 --- a/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs +++ b/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs @@ -508,8 +508,8 @@ namespace ICSharpCode.SharpDevelop.Dom { if (argument == null) // TODO: Use NullReturnType instead of no return type return true; // "null" can be passed for any argument - if (expected is GenericReturnType) { - foreach (IReturnType constraint in ((GenericReturnType)expected).TypeParameter.Constraints) { + if (expected.IsGenericReturnType) { + foreach (IReturnType constraint in expected.CastToGenericReturnType().TypeParameter.Constraints) { if (!ConversionExists(argument, constraint)) { return false; } diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/DomPersistence.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/DomPersistence.cs index f87c066b60..e58f724bfd 100644 --- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/DomPersistence.cs +++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/DomPersistence.cs @@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Dom classIndices.Add(pair, externalTypes.Count + classCount); externalTypes.Add(pair); } - } else if (rt is GenericReturnType) { + } else if (rt.IsGenericReturnType) { // ignore } else if (rt.IsArrayReturnType) { AddExternalType(rt.CastToArrayReturnType().ArrayElementType, externalTypes, classCount); diff --git a/src/Main/Base/Test/GenericResolverTests.cs b/src/Main/Base/Test/GenericResolverTests.cs index b42add86cf..244353d9c4 100644 --- a/src/Main/Base/Test/GenericResolverTests.cs +++ b/src/Main/Base/Test/GenericResolverTests.cs @@ -77,7 +77,7 @@ class TestClass { Assert.IsTrue(result is MemberResolveResult); IMethod m = (IMethod)((MemberResolveResult)result).ResolvedMember; Assert.AreEqual("TestClass", m.ReturnType.FullyQualifiedName); - Assert.AreEqual(1, m.ReturnType.ArrayDimensions); + Assert.AreEqual(1, m.ReturnType.CastToArrayReturnType().ArrayDimensions); } [Test] diff --git a/src/Main/Base/Test/MemberLookupHelperTests.cs b/src/Main/Base/Test/MemberLookupHelperTests.cs index f49cdb6255..90fb34b2b3 100644 --- a/src/Main/Base/Test/MemberLookupHelperTests.cs +++ b/src/Main/Base/Test/MemberLookupHelperTests.cs @@ -33,18 +33,19 @@ namespace ICSharpCode.SharpDevelop.Tests [Test] public void TypeParameterPassedToBaseClassTest() { - IReturnType[] stringInt = { ReflectionReturnType.String, ReflectionReturnType.Int }; + IReturnType[] stringInt = { msc.SystemTypes.String, msc.SystemTypes.Int32 }; IReturnType rrt = new ConstructedReturnType(DictionaryRT, stringInt); IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0); Assert.AreEqual("System.Collections.Generic.KeyValuePair", res.FullyQualifiedName); - Assert.AreEqual("System.String", res.TypeArguments[0].FullyQualifiedName); - Assert.AreEqual("System.Int32", res.TypeArguments[1].FullyQualifiedName); + ConstructedReturnType resc = res.CastToConstructedReturnType(); + Assert.AreEqual("System.String", resc.TypeArguments[0].FullyQualifiedName); + Assert.AreEqual("System.Int32", resc.TypeArguments[1].FullyQualifiedName); } [Test] public void TypeParameterPassedToBaseClassSameClass() { - IReturnType[] stringArr = { ReflectionReturnType.String }; + IReturnType[] stringArr = { msc.SystemTypes.String }; IReturnType rrt = new ConstructedReturnType(EnumerableClass.DefaultReturnType, stringArr); IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0); Assert.AreEqual("System.String", res.FullyQualifiedName); @@ -53,7 +54,8 @@ namespace ICSharpCode.SharpDevelop.Tests [Test] public void GetCommonType() { - IReturnType res = MemberLookupHelper.GetCommonType(swf.GetClass("System.Windows.Forms.ToolStripButton").DefaultReturnType, + IReturnType res = MemberLookupHelper.GetCommonType(msc, + swf.GetClass("System.Windows.Forms.ToolStripButton").DefaultReturnType, swf.GetClass("System.Windows.Forms.ToolStripSeparator").DefaultReturnType); Assert.AreEqual("System.Windows.Forms.ToolStripItem", res.FullyQualifiedName); } diff --git a/src/Main/Base/Test/NRefactoryResolverTests.cs b/src/Main/Base/Test/NRefactoryResolverTests.cs index 600e117ac6..c4052cedeb 100644 --- a/src/Main/Base/Test/NRefactoryResolverTests.cs +++ b/src/Main/Base/Test/NRefactoryResolverTests.cs @@ -365,7 +365,7 @@ class A { "; ResolveResult result = Resolve(program, "TestMethod()", 4); Assert.IsNotNull(result); - Assert.AreSame(ReflectionReturnType.Void, result.ResolvedType, result.ResolvedType.ToString()); + Assert.AreSame(VoidReturnType.Instance, result.ResolvedType, result.ResolvedType.ToString()); Assert.AreEqual(0, result.GetCompletionData(lastPC).Count); } diff --git a/src/Main/Base/Test/ReflectionLayerTests.cs b/src/Main/Base/Test/ReflectionLayerTests.cs index 763b2f19f8..ad852f50dd 100644 --- a/src/Main/Base/Test/ReflectionLayerTests.cs +++ b/src/Main/Base/Test/ReflectionLayerTests.cs @@ -12,6 +12,7 @@ using System.Reflection; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.SharpDevelop.Dom.ReflectionLayer; using NUnit.Framework; namespace ICSharpCode.SharpDevelop.Tests @@ -102,7 +103,7 @@ namespace ICSharpCode.SharpDevelop.Tests { IClass c = pc.GetClass("System.Void"); Assert.IsNotNull(c, "System.Void not found"); - Assert.AreSame(c.DefaultReturnType, ReflectionReturnType.Void, "ReflectionReturnType.Void is c.DefaultReturnType"); + Assert.AreSame(c.DefaultReturnType, VoidReturnType.Instance, "VoidReturnType.Instance is c.DefaultReturnType"); } class TestClass where A : B { @@ -154,8 +155,8 @@ namespace ICSharpCode.SharpDevelop.Tests Assert.AreEqual("IEquatable", m.TypeParameters[0].Constraints[0].Name); Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].TypeParameterCount); - Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].TypeArguments.Count); - GenericReturnType grt = (GenericReturnType)m.TypeParameters[0].Constraints[0].TypeArguments[0]; + Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].CastToConstructedReturnType().TypeArguments.Count); + GenericReturnType grt = (GenericReturnType)m.TypeParameters[0].Constraints[0].CastToConstructedReturnType().TypeArguments[0]; Assert.AreSame(m.TypeParameters[0], grt.TypeParameter); } }