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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/tests/UnitTests/MonoDevelop.Projects/CompletionDatabaseTests.cs')
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/CompletionDatabaseTests.cs889
1 files changed, 0 insertions, 889 deletions
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/CompletionDatabaseTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/CompletionDatabaseTests.cs
deleted file mode 100644
index 228a8b8a23..0000000000
--- a/main/tests/UnitTests/MonoDevelop.Projects/CompletionDatabaseTests.cs
+++ /dev/null
@@ -1,889 +0,0 @@
-// CompletionDatabaseTests.cs
-//
-// Author:
-// Lluis Sanchez Gual <lluis@novell.com>
-//
-// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.IO;
-using System.Collections.Generic;
-using MonoDevelop.Projects;
-using MonoDevelop.Projects.Dom;
-using MonoDevelop.Projects.Dom.Parser;
-using NUnit.Framework;
-using UnitTests;
-using Mono.CSharp;
-using System.Linq;
-
-namespace MonoDevelop.Projects
-{
- [TestFixture]
- public class CompletionDatabaseTests: TestBase
- {
- Solution solution;
- ProjectDom mainProject;
- ProjectDom lib1;
- ProjectDom lib2;
-
- public override void Setup ()
- {
- base.Setup ();
- string solFile = Util.GetSampleProject ("completion-db-test", "CompletionDbTest.sln");
- solution = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- ProjectDomService.Load (solution);
-
- Project prj;
- prj = solution.FindProjectByName ("Library2");
- lib2 = ProjectDomService.GetProjectDom (prj);
- lib2.ForceUpdate (true);
- prj = solution.FindProjectByName ("Library1");
- lib1 = ProjectDomService.GetProjectDom (prj);
- lib1.ForceUpdate (true);
- prj = solution.FindProjectByName ("CompletionDbTest");
- mainProject = ProjectDomService.GetProjectDom (prj);
- mainProject.ForceUpdate (true);
- }
-
- public override void TearDown ()
- {
- ProjectDomService.Unload (solution);
- base.TearDown ();
- }
-
- void ReplaceFile (string targetRelativePath, string sourceRelativePath)
- {
- string tfile = mainProject.Project.GetAbsoluteChildPath (targetRelativePath);
- string sfile = mainProject.Project.GetAbsoluteChildPath (sourceRelativePath);
- File.Copy (sfile, tfile, true);
- ProjectDomService.Parse (tfile, null);
- }
-
- [Test]
- public void References ()
- {
- Assert.AreEqual (4, mainProject.References.Count);
- Assert.AreEqual (3, lib1.References.Count);
- Assert.AreEqual (3, lib2.References.Count);
- }
-
- [Test]
- public void SimpleGetType ()
- {
- // Simple get
- IType type = mainProject.GetType ("CompletionDbTest.MainClass");
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.MainClass", type.FullName);
-
- // Deep search in local project
- type = mainProject.GetType ("CompletionDbTest.MainClass", true);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.MainClass", type.FullName);
-
- // Non deep search
- // FIXME: deep search is currently the same as non-deep-search
-// type = mainProject.GetType ("Library2.CWidget", false);
-// Assert.IsNull (type);
-
- // Deep search by default
- type = mainProject.GetType ("Library2.CWidget");
- Assert.IsNotNull (type);
- Assert.AreEqual ("Library2.CWidget", type.FullName);
-
- //check that references are accessible, but not references of references
- type = mainProject.GetType ("Library3.Lib3Class");
- Assert.IsNull (type);
- type = lib2.GetType ("Library3.Lib3Class");
- Assert.IsNotNull (type);
-
- // Deep insensitive
- type = mainProject.GetType ("library2.cwidget", true, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("Library2.CWidget", type.FullName);
-
- // Case sensitive
- type = mainProject.GetType ("library2.cwidget", true, true);
- Assert.IsNull (type);
-
- // Not generic
- type = mainProject.GetType ("CompletionDbTest.MainClass", 1, true);
- Assert.IsNull (type);
-
- // System.Object
- type = mainProject.GetType ("System.Object", true, true);
- Assert.IsNotNull (type);
- Assert.AreEqual ("System.Object", type.FullName);
- }
-
- [Test]
- public void GetGenericType ()
- {
- List<IReturnType> args = new List<IReturnType> ();
- DomReturnType rt = new DomReturnType ("System.String");
- args.Add (rt);
- IType type = mainProject.GetType ("CompletionDbTest.SomeGeneric", args);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.SomeGeneric[System.String]", type.FullName);
- Assert.AreEqual (0, type.TypeParameters.Count);
-
- IMethod met = FindMember (type, "Run") as IMethod;
- Assert.IsNotNull (met);
- Assert.AreEqual (1, met.Parameters.Count);
- Assert.AreEqual ("System.String", met.Parameters[0].ReturnType.FullName);
- Assert.IsNotNull (met.ReturnType);
- Assert.AreEqual ("System.String", met.ReturnType.FullName);
-
- type = mainProject.GetType ("Library2.GenericWidget");
- Assert.IsNotNull (type);
- Assert.AreEqual ("Library2.GenericWidget", type.FullName);
- Assert.AreEqual (0, type.TypeParameters.Count);
-
- type = mainProject.GetType ("Library2.GenericWidget", 1, true);
- Assert.IsNotNull (type);
- Assert.AreEqual ("Library2.GenericWidget", type.FullName);
- Assert.AreEqual (1, type.TypeParameters.Count);
-
- type = mainProject.GetType ("Library2.GenericWidget", 2, true);
- Assert.IsNotNull (type);
- Assert.AreEqual ("Library2.GenericWidget", type.FullName);
- Assert.AreEqual (2, type.TypeParameters.Count);
-
- type = mainProject.GetType ("Library2.GenericWidget", 3, true);
- Assert.IsNull (type);
-
- // Inner generic type
-
- type = mainProject.GetType ("Library2.Container.InnerClass1", 1, true);
- Assert.IsNotNull (type);
- }
-
- IMember FindMember (IType type, string name)
- {
- foreach (IMember mem in type.Members)
- if (mem.Name == name)
- return mem;
- return null;
- }
-
- [Test]
- public void GetSubclasses ()
- {
- IType type = mainProject.GetType ("Library2.CWidget", true);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("Library2.CContainer"));
- Assert.IsTrue (types.Contains ("Library2.SomeContainer.CInnerWidget"));
- Assert.IsTrue (types.Contains ("Library2.CExtraContainer"));
- Assert.IsTrue (types.Contains ("Library2.SomeContainer.CExtraInnerWidget"));
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library1.CList"));
- Assert.IsTrue (types.Contains ("Library1.SomeContainer.CInnerWidget"));
- Assert.IsTrue (types.Contains ("Library1.SomeContainer.SomeInnerContainer.CSubInnerWidget"));
- Assert.IsTrue (types.Contains ("Library1.CExtraBin"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerSub"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub.CInnerWidget1"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub.CInnerWidget2"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub.CInnerWidget3"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget1"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget2"));
- Assert.AreEqual (16, types.Count);
-
- // No deep search
-
- type = mainProject.GetType ("Library2.CWidget", true);
- Assert.IsNotNull (type);
-
- types.Clear ();
- foreach (IType t in mainProject.GetSubclasses (type, false))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget1"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget2"));
- Assert.AreEqual (2, types.Count);
-
- // Interface subclassing
-
- type = mainProject.GetType ("Library2.IObject", true);
- Assert.IsNotNull (type);
-
- types.Clear ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("Library2.CExtraContainer"));
- Assert.IsTrue (types.Contains ("Library2.SomeContainer.CExtraInnerWidget"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub.CInnerWidget1"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub.CInnerWidget2"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerSub"));
- Assert.IsTrue (types.Contains ("Library1.ISimple"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget1"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget2"));
- Assert.AreEqual (9, types.Count);
- }
-
- [Test]
- public void GetFileTypes ()
- {
- string file = lib1.Project.GetAbsoluteChildPath ("MyClass.cs");
-
- List<string> types = new List<string> ();
- foreach (IType t in lib1.GetTypes (file))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library1.CList"));
- Assert.IsTrue (types.Contains ("Library1.SomeContainer"));
- Assert.IsTrue (types.Contains ("Library1.CExtraBin"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerSub"));
- Assert.IsTrue (types.Contains ("Library1.CExtraContainerInnerSub"));
- Assert.IsTrue (types.Contains ("Library1.ISimple"));
- Assert.IsTrue (types.Contains ("Library1.TestAttribute"));
-
- Assert.AreEqual (8, types.Count);
- }
-
- [Test]
- public void GetInheritanceTree ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.CustomWidget1", false);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (type))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget1"));
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library1.ISimple"));
- Assert.IsTrue (types.Contains ("Library2.CWidget"));
- Assert.IsTrue (types.Contains ("Library2.IObject"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (6, types.Count);
-
- type = mainProject.GetType ("CompletionDbTest.CustomWidget2", false);
-
- types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (type))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.CustomWidget2"));
- Assert.IsTrue (types.Contains ("Library1.SomeContainer.CInnerWidget"));
- Assert.IsTrue (types.Contains ("Library2.IObject"));
- Assert.IsTrue (types.Contains ("Library2.CWidget"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (5, types.Count);
- }
-
-
- [Test]
- public void GetInheritanceTreeForEnumsAndStructs ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.TestEnum", false);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (type)) {
- Console.WriteLine (t.FullName);
- types.Add (t.FullName);
- }
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.TestEnum"));
- Assert.IsTrue (types.Contains ("System.Enum"));
- Assert.IsTrue (types.Contains ("System.Object"));
-
- type = mainProject.GetType ("CompletionDbTest.TestStruct", false);
-
- types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (type))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.TestStruct"));
- Assert.IsTrue (types.Contains ("System.ValueType"));
- Assert.IsTrue (types.Contains ("System.Object"));
- }
- [Test]
- public void GetNamespaceContents ()
- {
- var types = new List<string> ();
- foreach (IMember mem in mainProject.GetNamespaceContents ("SharedNamespace1", true, true))
- types.Add (mem.FullName);
- Assert.IsTrue (types.Contains ("SharedNamespace1.A"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.B"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.E"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.F"));
- Assert.AreEqual (4, types.Count);
-
- types = new List<string> ();
- foreach (IMember mem in mainProject.GetNamespaceContents ("SharedNamespace1", false, true))
- types.Add (mem.FullName);
- Assert.IsTrue (types.Contains ("SharedNamespace1.A"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.B"));
- Assert.AreEqual (2, types.Count);
-
- types = new List<string> ();
- foreach (IMember mem in mainProject.GetNamespaceContents ("sharednamespace1", true, false))
- types.Add (mem.FullName);
- Assert.IsTrue (types.Contains ("SharedNamespace1.A"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.B"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.E"));
- Assert.IsTrue (types.Contains ("SharedNamespace1.F"));
- Assert.AreEqual (4, types.Count);
-
- types = new List<string> ();
- foreach (IMember mem in mainProject.GetNamespaceContents ("SharedNamespace2", true, true))
- types.Add (mem.FullName);
- Assert.IsTrue (types.Contains ("SharedNamespace2.C"));
- Assert.IsTrue (types.Contains ("SharedNamespace2.D"));
- Assert.IsTrue (types.Contains ("SharedNamespace2.G"));
- Assert.IsTrue (types.Contains ("SharedNamespace2.H"));
- Assert.AreEqual (4, types.Count);
-
- types = new List<string> ();
- foreach (IMember mem in mainProject.GetNamespaceContents ("SharedNamespace2", false, true))
- types.Add (mem.FullName);
- Assert.AreEqual (0, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesNoParams ()
- {
- IType type = mainProject.GetType ("Library2.GenericWidget", true);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName(t));
-
- Assert.IsTrue (types.Contains ("Library2.GenericBin"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBin"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidget"));
- Assert.AreEqual (3, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesTemplate ()
- {
- // Uninstantiated generic type with one parameter
-
- IType type = mainProject.GetType ("Library2.GenericWidget", 1, true);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName (t));
-
- // We don't support getting the subclasses of a parametrized type.
- // It is not clear what should be considered a subclass in this case.
- Assert.AreEqual (0, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesParamsInt ()
- {
- // Generic type with one parameter
-
- List<IReturnType> args = new List<IReturnType> ();
- args.Add (new DomReturnType ("System.Int32"));
-
- IType type = mainProject.GetType ("Library2.GenericWidget", args);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName(t));
-
- Assert.IsTrue (types.Contains ("Library2.GenericBin[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library2.GenericBinInt"));
- Assert.IsTrue (types.Contains ("Library2.Container.InnerClass1[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library2.Container.InnerClass2"));
- Assert.IsTrue (types.Contains ("Library2.Container.InnerClass3"));
- Assert.IsTrue (types.Contains ("Library2.Container.InnerClass4"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidget[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBin[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBinInt1"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBinInt2"));
- Assert.IsTrue (types.Contains ("Library1.SubInnerClass[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubContainer.InnerClass1[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubContainer.InnerClass2"));
- Assert.IsTrue (types.Contains ("Library1.SubContainer.InnerClass3"));
- Assert.IsTrue (types.Contains ("Library1.SubContainer.InnerClass4"));
- Assert.AreEqual (15, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesParamsString ()
- {
- // Generic type with one string parameter
-
- List<IReturnType> args = new List<IReturnType> ();
- args.Add (new DomReturnType ("System.String"));
-
- IType type = mainProject.GetType ("Library2.GenericWidget", args);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName(t));
-
- Assert.IsTrue (types.Contains ("Library2.GenericBin[System.String]"));
- Assert.IsTrue (types.Contains ("Library2.GenericBinString"));
- Assert.IsTrue (types.Contains ("Library2.Container.InnerClass1[System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidget[System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBin[System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubInnerClass[System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubContainer.InnerClass1[System.String]"));
- Assert.AreEqual (7, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesParamsStringInt ()
- {
- // Generic type with one string and one int
-
- List<IReturnType> args = new List<IReturnType> ();
- args.Add (new DomReturnType ("System.String"));
- args.Add (new DomReturnType ("System.Int32"));
-
- IType type = mainProject.GetType ("Library2.GenericWidget", args);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName(t));
-
- Assert.IsTrue (types.Contains ("Library2.GenericBin[System.String,System.Int32]"));
- Assert.IsTrue (types.Contains ("Library2.SpecialGenericBin[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library2.GenericBinStringInt"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBin[System.String,System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidget[System.String,System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBinStringInt1"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBinStringInt2"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidgetStringNull[System.Int32]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidgetNullInt[System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidgetSwapped[System.Int32,System.String]"));
- Assert.AreEqual (10, types.Count);
- }
-
- [Test]
- public void GetGenericSubclassesParamsIntString ()
- {
- // Generic type with one int and one string
-
- List<IReturnType> args = new List<IReturnType> ();
- args.Add (new DomReturnType ("System.Int32"));
- args.Add (new DomReturnType ("System.String"));
-
- IType type = mainProject.GetType ("Library2.GenericWidget", args);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (GetName(t));
-
- Assert.IsTrue (types.Contains ("Library2.GenericBin[System.Int32,System.String]"));
- Assert.IsTrue (types.Contains ("Library2.GenericBinIntString"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericBin[System.Int32,System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidget[System.Int32,System.String]"));
- Assert.IsTrue (types.Contains ("Library1.SubGenericWidgetSwapped[System.String,System.Int32]"));
- Assert.AreEqual (5, types.Count);
- }
-
- string GetName (IType t)
- {
- if (t.TypeParameters.Count == 0)
- return t.FullName;
- else
- return t.FullName + "`" + t.TypeParameters.Count;
- }
-
-/* [Test]
- public void GetObjectSubclasses ()
- {
- IType type = mainProject.GetType ("System.Object", true);
- Assert.IsNotNull (type);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetSubclasses (type, true))
- types.Add (t.FullName);
- }
-*/
-
- [Test]
- public void RewriteGenericType ()
- {
- // Check that the instantiated type cache is properly invalidated
- // when a generic type changes.
-
- List<IReturnType> args = new List<IReturnType> ();
- args.Add (new DomReturnType ("System.Int32"));
- IType type = mainProject.GetType ("CompletionDbTest.GenericRewrite", args);
- Assert.IsNotNull (type);
- Assert.IsTrue (type is InstantiatedType);
- Assert.IsTrue (type.FieldCount == 1);
-
- ReplaceFile ("GenericRewrite.cs", "Replacements/GenericRewrite.cs");
-
- type = mainProject.GetType ("CompletionDbTest.GenericRewrite", args);
- Assert.IsNotNull (type);
- Assert.IsTrue (type is InstantiatedType);
- Assert.IsTrue (type.FieldCount == 2);
- }
-
- [Test]
- public void GenericConstraintTest_Class ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest1", 1, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest1", type.FullName);
- Assert.AreEqual (1, type.TypeParameters.Count);
- Assert.AreEqual (1, type.FieldCount);
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest1.T"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (2, types.Count);
- }
-
- [Test]
- public void GenericConstraintTest_Struct ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest2", 1, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest2", type.FullName);
- Assert.AreEqual (1, type.TypeParameters.Count);
- Assert.AreEqual (1, type.FieldCount);
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest2.T"));
- Assert.IsTrue (types.Contains ("System.ValueType"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (3, types.Count);
- }
-
- [Test]
- public void GenericConstraintTest_New ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest3", 1, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest3", type.FullName);
- Assert.AreEqual (1, type.TypeParameters.Count);
- Assert.AreEqual (1, type.FieldCount);
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest3.T"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (2, types.Count);
- }
-
- [Test]
- public void GenericConstraintTest_WithBase ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest4", 2, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest4", type.FullName);
- Assert.AreEqual (2, type.TypeParameters.Count);
- Assert.AreEqual (2, type.FieldCount);
-
- // First field
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest4.T"));
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library2.CWidget"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (4, types.Count);
-
- // Second field
-
- rt = fs [1].ReturnType;
-
- fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("U", fieldType.Name);
-
- types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest4.U"));
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest4.T"));
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library2.CWidget"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (5, types.Count);
- }
-
- [Test]
- public void GenericConstraintTest_WithWrongBase ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest5", 2, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest5", type.FullName);
- Assert.AreEqual (2, type.TypeParameters.Count);
- Assert.AreEqual (2, type.FieldCount);
-
- // First field
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest5.T"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (2, types.Count);
-
- // Second field
-
- rt = fs [1].ReturnType;
-
- fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("U", fieldType.Name);
-
- types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest5.U"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (2, types.Count);
- }
-
- [Test]
- public void GenericConstraintTest_ClassAndInterface ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.GenericConstraintTest6", 1, false);
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.GenericConstraintTest6", type.FullName);
- Assert.AreEqual (1, type.TypeParameters.Count);
- Assert.AreEqual (1, type.FieldCount);
-
- List<IField> fs = new List<IField> (type.Fields);
- IReturnType rt = fs [0].ReturnType;
-
- IType fieldType = mainProject.GetType (rt);
- Assert.IsNotNull (fieldType);
- Assert.AreEqual ("T", fieldType.Name);
-
- List<string> types = new List<string> ();
- foreach (IType t in mainProject.GetInheritanceTree (fieldType))
- types.Add (t.FullName);
-
- Assert.IsTrue (types.Contains ("CompletionDbTest.GenericConstraintTest6.T"));
- Assert.IsTrue (types.Contains ("Library1.CBin"));
- Assert.IsTrue (types.Contains ("Library2.CWidget"));
- Assert.IsTrue (types.Contains ("System.ICloneable"));
- Assert.IsTrue (types.Contains ("System.Object"));
- Assert.AreEqual (5, types.Count);
- }
-
- [Test]
- public void PartialClass ()
- {
- IType type = mainProject.GetType ("CompletionDbTest.PartialTest");
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.PartialTest", type.FullName);
-
- List<string> members = new List<string> ();
- foreach (IMember mem in type.Members)
- members.Add (mem.Name);
-
- Assert.AreEqual (15, members.Count);
- Assert.IsTrue (members.Contains ("Field1"));
- Assert.IsTrue (members.Contains ("Property1"));
- Assert.IsTrue (members.Contains ("Event1"));
- Assert.IsTrue (members.Contains ("Method1"));
- Assert.IsTrue (members.Contains ("Inner1"));
- Assert.IsTrue (members.Contains ("Field2"));
- Assert.IsTrue (members.Contains ("Property2"));
- Assert.IsTrue (members.Contains ("Event2"));
- Assert.IsTrue (members.Contains ("Method2"));
- Assert.IsTrue (members.Contains ("Inner2"));
- Assert.IsTrue (members.Contains ("Field3"));
- Assert.IsTrue (members.Contains ("Property3"));
- Assert.IsTrue (members.Contains ("Event3"));
- Assert.IsTrue (members.Contains ("Method3"));
- Assert.IsTrue (members.Contains ("Inner3"));
-
- ReplaceFile ("PartialTest2.cs", "Replacements/PartialTest2.cs");
-
- type = mainProject.GetType ("CompletionDbTest.PartialTest");
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.PartialTest", type.FullName);
-
- members = new List<string> ();
- foreach (IMember mem in type.Members)
- members.Add (mem.Name);
-
- Assert.AreEqual (10, members.Count);
- Assert.IsTrue (members.Contains ("Field2"));
- Assert.IsTrue (members.Contains ("Property2"));
- Assert.IsTrue (members.Contains ("Event2"));
- Assert.IsTrue (members.Contains ("Method2"));
- Assert.IsTrue (members.Contains ("Inner2"));
- Assert.IsTrue (members.Contains ("Field3"));
- Assert.IsTrue (members.Contains ("Property3"));
- Assert.IsTrue (members.Contains ("Event3"));
- Assert.IsTrue (members.Contains ("Method3"));
- Assert.IsTrue (members.Contains ("Inner3"));
-
- ReplaceFile ("PartialTest2.cs", "Replacements/EmptyFile.cs");
-
- type = mainProject.GetType ("CompletionDbTest.PartialTest");
- Assert.IsNotNull (type);
- Assert.AreEqual ("CompletionDbTest.PartialTest", type.FullName);
-
- members = new List<string> ();
- foreach (IMember mem in type.Members)
- members.Add (mem.Name);
-
- Assert.AreEqual (5, members.Count);
- Assert.IsTrue (members.Contains ("Field3"));
- Assert.IsTrue (members.Contains ("Property3"));
- Assert.IsTrue (members.Contains ("Event3"));
- Assert.IsTrue (members.Contains ("Method3"));
- Assert.IsTrue (members.Contains ("Inner3"));
-
- ReplaceFile ("PartialTest1.cs", "Replacements/EmptyFile.cs");
-
- type = mainProject.GetType ("CompletionDbTest.PartialTest");
- Assert.IsNull (type);
- }
-
- [Test]
- public void NamespaceExistsTest ()
- {
- Assert.IsTrue (mainProject.NamespaceExists ("Level1"), "Level1 doesn't exist.");
- Assert.IsTrue (mainProject.NamespaceExists ("Level1.Level2"), "Level1.Level2 doesn't exist.");
- Assert.IsTrue (mainProject.NamespaceExists ("Level1.Level2.Level3"), "Level1.Level2.Level3 doesn't exist.");
- Assert.IsTrue (mainProject.NamespaceExists ("Level1.Level2.Level3.Level4"), "Level1.Level2.Level3.Level4 doesn't exist.");
- Assert.IsFalse (mainProject.NamespaceExists ("Level1.Level2.Level3.Level4.Level5"), "Level5 shouldn't exist.");
- Assert.IsFalse (mainProject.NamespaceExists ("Level1.Level3"), "level1.level3 shouldn't exist.");
- }
-
- [Test]
- public void ClassAttributeTest ()
- {
- // Simple get
- IType type = mainProject.GetType ("CompletionDbTest.AttributeTest");
- Assert.IsNotNull (type);
- Assert.AreEqual (1, type.Attributes.Count ());
- Assert.AreEqual ("Serializable", type.Attributes.First ().Name);
- }
-
- [Test]
- public void MemberAttributeTest ()
- {
- // Simple get
- IType type = mainProject.GetType ("CompletionDbTest.AttributeTest2");
- Assert.IsNotNull (type);
-
- var prop = type.Properties.First ();
- Assert.AreEqual (1, prop.Attributes.Count ());
- Assert.AreEqual ("Obsolete", prop.Attributes.First ().Name);
-
- var method = type.Methods.First ();
- Assert.AreEqual (1, method.Attributes.Count ());
- Assert.AreEqual ("Obsolete", method.Attributes.First ().Name);
- }
-
- [Test]
- public void CustomAttributeTest ()
- {
- // Simple get
- IType type = mainProject.GetType ("CompletionDbTest.AttributeTest3");
- Assert.IsNotNull (type);
- Assert.AreEqual (1, type.Attributes.Count ());
-
- var att = type.Attributes.First ();
- Assert.AreEqual ("Library1.TestAttribute", att.AttributeType.FullName);
- Assert.AreEqual (2, att.PositionalArguments.Count);
-
- var expr1 = att.PositionalArguments[0] as System.CodeDom.CodePrimitiveExpression;
- Assert.IsNotNull (expr1);
- Assert.AreEqual ("str1", expr1.Value);
-
- var expr2 = att.PositionalArguments[1] as System.CodeDom.CodePrimitiveExpression;
- Assert.IsNotNull (expr2);
- Assert.AreEqual (5, expr2.Value);
-
- Assert.AreEqual (1, att.NamedArguments.Count);
- Assert.IsTrue (att.NamedArguments.ContainsKey ("Blah"));
- var expr3 = att.NamedArguments["Blah"] as System.CodeDom.CodePrimitiveExpression;
- Assert.IsNotNull (expr3);
- Assert.AreEqual ("str2", expr3.Value);
- }
-
- }
-}