rendered paste bodyusing CSUnit;
using System;
public class TestCasts : TestCase
{
private BaseClass baseClass;
private DerivedClass derivedClass;
protected override void Setup()
{
baseClass = new BaseClass();
derivedClass = new DerivedClass();
}
protected override void Cleanup() {}
public TestCasts(string name) : base(name) {}
public void TestSimpleCasts()
{
AssertEquals(10, baseClass.getNum(10));
AssertEquals(11, derivedClass.getNum(10));
//test allowed cast
try {
BaseClass castedDerivedClass = derivedClass;
AssertEquals(11, castedDerivedClass.getNum(10));
} catch (Exception) {
Fail();
}
//test not allowed cast
try {
DerivedClass castedBaseClass = (DerivedClass) baseClass;
Fail();
} catch (Exception) {
}
}
public void TestSimpleInterfaceCasts()
{
//test not allowed cast
try {
INum num = (INum) baseClass;
Fail();
} catch (Exception) {
}
//test allowed cast
try {
INum num = derivedClass;
AssertEquals(666, num.getNum());
} catch (Exception) {
Fail();
}
}
}
//-----------------
//class definitions
//-----------------
public class BaseClass
{
public BaseClass()
{
}
public virtual int getNum(int num)
{
return num;
}
}
public class DerivedClass : BaseClass, INum
{
public DerivedClass()
{
}
// overridden method from base class
public override int getNum(int num)
{
return num + 1;
}
// method from interface
public int getNum()
{
return 666;
}
}
//---------------------
//interface definitions
//---------------------
public interface INum
{
int getNum();
}