#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

281 lines
8.2 KiB

// 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 ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using UnitTesting.Tests.Utils;
namespace UnitTesting.Tests.Utils.Tests
{
[TestFixture]
public class MockClassTests
{
MockClass outerClass;
MockClass innerClass;
[Test]
public void FullyQualifiedName_NewInstanceCreatedWithFullyQualifiedName_ReturnsFullyQualifiedName()
{
string expectedFullyQualifiedName = "MyNamespace.MyClass";
MockClass c = new MockClass(expectedFullyQualifiedName);
string fullyQualifiedName = c.FullyQualifiedName;
Assert.AreEqual(expectedFullyQualifiedName, fullyQualifiedName);
}
[Test]
public void DotNetName_NewInstanceCreatedWithFullyQualifiedName_ReturnsDotNetNameThatMatchesFullyQualifiedName()
{
string fullyQualifiedName = "MyNamespace.MyClass";
MockClass c = new MockClass(fullyQualifiedName);
string dotNetName = c.DotNetName;
Assert.AreEqual(fullyQualifiedName, dotNetName);
}
[Test]
public void DotNetName_NewInstanceCreatedWithFullyQualifiedNameAndDotNetName_ReturnsExpectedDotNetName()
{
string fullyQualifiedName = "MyNamespace.MyClass.InnerClass";
string expectedDotNetName = "MyNamespace.MyClass+InnerClass";
MockClass c = new MockClass(fullyQualifiedName, expectedDotNetName);
string dotNetName = c.DotNetName;
Assert.AreEqual(expectedDotNetName, dotNetName);
}
[Test]
public void Namespace_NewInstanceCreatedWithFullyQualifiedName_ReturnsNamespaceTakenFromFullyQualifiedName()
{
string fullyQualifiedName = "MyNamespace.MySubNamespace.MyClass";
MockClass c = new MockClass(fullyQualifiedName);
string expectedNamespace = "MyNamespace.MySubNamespace";
string actualNamespace = c.Namespace;
Assert.AreEqual(expectedNamespace, actualNamespace);
}
[Test]
public void Name_NewInstanceCreatedWithFullyQualifiedName_ReturnsNameTakenFromFullyQualifiedName()
{
string fullyQualifiedName = "MyNamespace.MySubNamespace.MyClass";
MockClass c = new MockClass(fullyQualifiedName);
string expectedName = "MyClass";
string name = c.Name;
Assert.AreEqual(expectedName, name);
}
[Test]
public void Namesapce_NewInstanceCreatedWithFullyQualifiedNameWithNoNamespace_ReturnsEmptyStringAsNamespace()
{
string fullyQualifiedName = "MyClass";
MockClass c = new MockClass(fullyQualifiedName);
string expectedNamespace = String.Empty;
string actualNamespace = c.Namespace;
Assert.AreEqual(expectedNamespace, actualNamespace);
}
[Test]
public void CompilationUnit_NewInstanceCreated_ReturnsNonNullCompilationUnit()
{
MockClass c = new MockClass();
ICompilationUnit unit = c.CompilationUnit;
Assert.IsNotNull(unit);
}
[Test]
public void ProjectContent_NewInstanceCreated_ReturnsMockProjectContent()
{
MockClass c = new MockClass();
MockProjectContent projectContent = c.ProjectContent as MockProjectContent;
Assert.IsNotNull(projectContent);
}
[Test]
public void CompoundClass_NewInstance_ReturnsClassItself()
{
MockClass c = new MockClass();
IClass compoundClass = c.GetCompoundClass();
Assert.AreEqual(c, compoundClass);
}
[Test]
public void DefaultReturnTypeGetUnderlyClass_NewInstance_ReturnsOriginalMockClass()
{
MockClass c = new MockClass();
IReturnType returnType = c.DefaultReturnType;
IClass underlyingClass = returnType.GetUnderlyingClass();
Assert.AreEqual(c, underlyingClass);
}
[Test]
public void DeclaringType_NewInstanceWithInnerClass_InnerClassHasOuterClassAsDeclaringType()
{
CreateClassWithInnerClass();
IClass declaringType = innerClass.DeclaringType;
Assert.AreEqual(outerClass, declaringType);
}
void CreateClassWithInnerClass()
{
outerClass = new MockClass("MyTests.A");
innerClass = new MockClass("MyTests.A.InnerATest", "MyTests.A+InnerATest", outerClass);
}
[Test]
public void GetCompoundClass_NewInstanceWithInnerClass_InnerClassReturnsInnerClassAsCompoundClass()
{
CreateClassWithInnerClass();
IClass compoundClass = innerClass.GetCompoundClass();
Assert.AreEqual(innerClass, compoundClass);
}
[Test]
public void InnerClasses_NewInstanceCreatedWithInnerClass_FirstClassInCollectionIsInnerClass()
{
CreateClassWithInnerClass();
IClass firstInnerClass = outerClass.InnerClasses[0];
Assert.AreEqual(innerClass, firstInnerClass);
}
[Test]
public void BaseClass_ClassAddedToBaseTypes_ClassAddedToBaseTypesBecomesBaseClass()
{
MockClass c = new MockClass();
MockClass baseClass = new MockClass();
DefaultReturnType returnType = new DefaultReturnType(baseClass);
c.BaseTypes.Add(returnType);
IClass actualBaseClass = c.BaseClass;
Assert.AreEqual(baseClass, actualBaseClass);
}
[Test]
public void BaseClass_AddBaseClassMethodCalled_ReturnsClassAddedUsingAddBaseClassMethod()
{
MockClass c = new MockClass();
MockClass baseClass = new MockClass();
c.AddBaseClass(baseClass);
IClass actualBaseClass = c.BaseClass;
Assert.AreEqual(baseClass, actualBaseClass);
}
[Test]
public void DotNetName_NewInstanceCreatedWithProjectContent_ReturnsFullyQualifiedNameAsDotNetName()
{
MockProjectContent projectContent = new MockProjectContent();
string expectedName = "MyNamespace.MyTests";
MockClass c = new MockClass(projectContent, expectedName);
string dotNetName = c.DotNetName;
Assert.AreEqual(expectedName, dotNetName);
}
[Test]
public void GetCompoundClass_SetCompoundClassMethodCalled_ReturnsClassPassedToSetCompoundClass()
{
MockClass c = new MockClass();
MockClass compoundClass = new MockClass();
c.SetCompoundClass(compoundClass);
IClass actualCompoundClass = c.GetCompoundClass();
Assert.AreEqual(compoundClass, actualCompoundClass);
}
[Test]
public void AddProperty_PassedPropertyName_AddsPropertyToClass()
{
MockClass c = new MockClass();
c.AddProperty("MyProperty");
IProperty property = c.Properties[0];
string name = property.Name;
Assert.AreEqual("MyProperty", name);
}
[Test]
public void InsertPropertyAtStart_PassedPropertyName_AddsPropertyAsFirstProperty()
{
MockClass c = new MockClass();
c.AddProperty("SecondProperty");
c.InsertPropertyAtStart("FirstProperty");
IProperty property = c.Properties[0];
string name = property.Name;
Assert.AreEqual("FirstProperty", name);
}
[Test]
public void AddProperty_PassedPropertyName_ReturnsPropertyWithExpectedName()
{
MockClass c = new MockClass();
IProperty property = c.AddProperty("MyProperty");
string name = property.Name;
Assert.AreEqual("MyProperty", name);
}
[Test]
public void AddEvent_PassedEventName_AddsEventToClass()
{
MockClass c = new MockClass();
c.AddEvent("MyEvent");
IEvent myEvent = c.Events[0];
string name = myEvent.Name;
Assert.AreEqual("MyEvent", name);
}
[Test]
public void AddEvent_PassedEventName_ReturnsEventWithExpectedName()
{
MockClass c = new MockClass();
IEvent myEvent = c.AddEvent("MyEvent");
string name = myEvent.Name;
Assert.AreEqual("MyEvent", name);
}
[Test]
public void AddField_PassedFieldName_AddsFieldToClass()
{
MockClass c = new MockClass();
c.AddField("MyField");
IField myField = c.Fields[0];
string name = myField.Name;
Assert.AreEqual("MyField", name);
}
[Test]
public void AddField_PassedFieldName_ReturnsFieldWithExpectedName()
{
MockClass c = new MockClass();
IField myField = c.AddField("MyField");
string name = myField.Name;
Assert.AreEqual("MyField", name);
}
[Test]
public void AddMethod_PassedName_AddsMethodToClass()
{
MockClass c = new MockClass();
c.AddMethod("MyMethod");
IMethod myMethod = c.Methods[0];
string name = myMethod.Name;
Assert.AreEqual("MyMethod", name);
}
[Test]
public void AddMethod_PassedMethodName_ReturnsMethodWithExpectedName()
{
MockClass c = new MockClass();
IMethod myMethod = c.AddMethod("MyMethod");
string name = myMethod.Name;
Assert.AreEqual("MyMethod", name);
}
}
}