#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.
 
 
 
 
 
 

142 lines
2.3 KiB

using NUnit.Framework;
using ICSharpCode.NRefactory.CSharp.CodeIssues;
using ICSharpCode.NRefactory.CSharp.Refactoring;
namespace ICSharpCode.NRefactory.CSharp.CodeIssues
{
[TestFixture]
public class NoDefaultConstructorIssueTests : InspectionActionTestBase
{
[Test]
public void ShouldReturnIssueIfBaseConstructorNotInvoked()
{
var testInput =
@"class BaseClass
{
public BaseClass(string input) {}
}
class ChildClass : BaseClass
{
}";
Test<NoDefaultConstructorIssue>(testInput, 1);
}
[Test]
public void ShouldNotReturnIssueIfBaseClassHasDefaultConstructor()
{
var testInput =
@"class BaseClass
{
}
class ChildClass : BaseClass
{
}";
Test<NoDefaultConstructorIssue>(testInput, 0);
}
[Test]
public void ShouldNotReturnIssueIfBaseConstructorIsInvoked()
{
var testInput =
@"class BaseClass
{
public BaseClass(string input) {}
}
class ChildClass : BaseClass
{
public ChildClass() : base(""test"") {}
}";
Test<NoDefaultConstructorIssue>(testInput, 0);
}
[Test]
public void ShouldReturnIssueIfInvalidArgumentsArePassedToBaseConstructor()
{
var testInput =
@"class BaseClass
{
public BaseClass(string input) {}
}
class ChildClass : BaseClass
{
public ChildClass() : base(123) {}
}";
Test<NoDefaultConstructorIssue>(testInput, 1);
}
[Test]
public void ShouldIgnoreInterfaces()
{
var testInput =
@"class TestClass : System.Collections.IList
{
}";
Test<NoDefaultConstructorIssue>(testInput, 0);
}
[Test]
public void ShouldMakeSureAllConstructorsInvokeBaseConstructor()
{
var testInput =
@"class BaseClass
{
public BaseClass(string test) {}
}
class ChildClass : BaseClass
{
public ChildClass() : base(""test"") {}
public ChildClass(string test) {}
}";
Test<NoDefaultConstructorIssue>(testInput, 1);
}
[Test]
public void ShouldOnlyLookAtDirectBaseClasses()
{
var testInput =
@"class TopLevelClass
{
public TopLevelClass(string test) {}
}
class BaseClass : TopLevelClass
{
public BaseClass() : base(""hello"") {}
}
class ChildClass : BaseClass
{
}";
Test<NoDefaultConstructorIssue>(testInput, 0);
}
[Test]
public void ShouldReturnAnIssueIfBaseConstructorIsPrivate()
{
var testInput =
@"class BaseClass
{
private BaseClass() {}
}
class ChildClass : BaseClass
{
}";
Test<NoDefaultConstructorIssue>(testInput, 1);
}
}
}