5 changed files with 157 additions and 32 deletions
@ -0,0 +1,106 @@
@@ -0,0 +1,106 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Dom |
||||
{ |
||||
[TestFixture] |
||||
public class AssemblyModelNamespaceTests : CSharpModelTestBase |
||||
{ |
||||
[Test] |
||||
public void AddUnnamedNamespace() |
||||
{ |
||||
var topLevelChangeEventArgs = ListenForChanges(assemblyModel.TopLevelTypeDefinitions); |
||||
var namespaceChangeEventArgs = ListenForChanges(assemblyModel.Namespaces); |
||||
|
||||
AddCodeFile("test.cs", "class Test {}"); |
||||
Assert.AreEqual(1, assemblyModel.TopLevelTypeDefinitions.Count); |
||||
Assert.AreEqual(1, assemblyModel.Namespaces.Count); |
||||
var simpleClass = assemblyModel.TopLevelTypeDefinitions.Single(); |
||||
var unnamedNamespace = assemblyModel.Namespaces.Single(); |
||||
Assert.IsNull(unnamedNamespace.ParentNamespace); |
||||
Assert.IsEmpty(unnamedNamespace.Name); |
||||
Assert.IsEmpty(topLevelChangeEventArgs.Single().OldItems); |
||||
Assert.IsEmpty(namespaceChangeEventArgs.Single().OldItems); |
||||
Assert.AreEqual(new[] { simpleClass }, topLevelChangeEventArgs.Single().NewItems); |
||||
Assert.AreEqual(new[] { unnamedNamespace }, namespaceChangeEventArgs.Single().NewItems); |
||||
} |
||||
|
||||
[Test] |
||||
public void MoveFromUnnamedNamespaceToFirstLevel() |
||||
{ |
||||
AddUnnamedNamespace(); |
||||
MoveToNamespace("test.cs", "FirstLevel"); |
||||
} |
||||
|
||||
[Test] |
||||
public void MoveFromUnnamedNamespaceToSecondLevel() |
||||
{ |
||||
AddUnnamedNamespace(); |
||||
MoveToNamespace("test.cs", "FirstLevel.SecondLevel"); |
||||
} |
||||
|
||||
[Test] |
||||
public void MoveFromUnnamedNamespaceToThirdLevelSteps() |
||||
{ |
||||
AddUnnamedNamespace(); |
||||
MoveToNamespace("test.cs", "FirstLevel"); |
||||
MoveToNamespace("test.cs", "FirstLevel.SecondLevel"); |
||||
MoveToNamespace("test.cs", "FirstLevel.SecondLevel.ThirdLevel"); |
||||
} |
||||
|
||||
[Test] |
||||
public void MoveFromUnnamedNamespaceToSecondLevelAndOther() |
||||
{ |
||||
AddUnnamedNamespace(); |
||||
MoveToNamespace("test.cs", "FirstLevel.SecondLevel"); |
||||
MoveToNamespace("test.cs", "FirstLevel.Nested"); |
||||
} |
||||
|
||||
void MoveToNamespace(string filename, string newNamespace) |
||||
{ |
||||
var topLevelChangeEventArgs = ListenForChanges(assemblyModel.TopLevelTypeDefinitions); |
||||
var namespaceChangeEventArgs = ListenForChanges(assemblyModel.Namespaces); |
||||
var oldClass = assemblyModel.TopLevelTypeDefinitions.Single(); |
||||
var oldNamespace = assemblyModel.Namespaces.Single(); |
||||
UpdateCodeFile(filename, "namespace " + newNamespace + " { class Test {} }"); |
||||
Assert.AreEqual(1, assemblyModel.TopLevelTypeDefinitions.Count); |
||||
Assert.AreEqual(1, assemblyModel.Namespaces.Count); |
||||
var simpleClass = assemblyModel.TopLevelTypeDefinitions.Single(); |
||||
|
||||
string[] parts = newNamespace.Split(new[] {'.'}, StringSplitOptions.RemoveEmptyEntries); |
||||
var simpleNamespace = assemblyModel.Namespaces.Single(); |
||||
|
||||
Assert.AreEqual(new[] { |
||||
simpleNamespace |
||||
}, namespaceChangeEventArgs.Single().NewItems); |
||||
Assert.AreEqual(new[] { |
||||
oldNamespace |
||||
}, namespaceChangeEventArgs.Single().OldItems); |
||||
|
||||
Assert.AreEqual(newNamespace, simpleNamespace.FullName); |
||||
|
||||
for (int i = parts.Length - 1; i <= 0; i++) { |
||||
Assert.IsNotNull(simpleNamespace.ParentNamespace); |
||||
Assert.AreEqual(parts[i], simpleNamespace.Name); |
||||
if (i == 0) { |
||||
Assert.IsEmpty(simpleNamespace.ParentNamespace.Name); |
||||
Assert.IsNull(simpleNamespace.ParentNamespace.ParentNamespace); |
||||
} else { |
||||
Assert.AreEqual(new[] { simpleNamespace }, simpleNamespace.ParentNamespace.ChildNamespaces); |
||||
} |
||||
} |
||||
|
||||
Assert.AreEqual(new[] { |
||||
oldClass |
||||
}, topLevelChangeEventArgs.Single().OldItems); |
||||
Assert.AreEqual(new[] { |
||||
simpleClass |
||||
}, topLevelChangeEventArgs.Single().NewItems); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue