All pastes #36265 Raw Edit

Anonymous

public text v1 · immutable
#36265 ·published 2006-01-09 16:59 UTC
rendered paste body
using 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();
}