// ****************************************************************
// This is free software licensed under the NUnit license. You
// may obtain a copy of the license as well as information regarding
// copyright ownership at http://nunit.org/?p=license&r=2.4.
// ****************************************************************

package NUnit.Samples;

import System.*;
import NUnit.Framework.Assert;

/** @attribute NUnit.Framework.TestFixture() */
public class SimpleJSharpTest
{
	protected int fValue1;
	protected int fValue2;

	/** @attribute NUnit.Framework.SetUp() */
	public void Init()
	{
		fValue1 = 2;
		fValue2 = 3;
	}

	/** @attribute NUnit.Framework.Test() */
	public void Add() 
	{
		int result= fValue1 + fValue2;
		Assert.AreEqual(6,result, "Expected Failure");
	}

	/** @attribute NUnit.Framework.Test() */
	public void DivideByZero() 
	{
		int zero= 0;
		int result = 8/zero;
		KeepCompilerFromWarning(result); // never executed, here to avoid compiler warning that result is unused.
	}

	/** @attribute NUnit.Framework.Test() */
	public void Equals() 
	{
		Assert.AreEqual(12, 12, "Integer");
		Assert.AreEqual(new Long(12), new Long(13), "Long");
		Assert.AreEqual('a', 'a', "Char");
		Assert.AreEqual(new Integer(12), new Integer(12), "Integer Object Cast");
            
		Assert.AreEqual(12, 13, "Expected Failure (Integer)");
		Assert.AreEqual(12.0, 11.99, 0.0, "Expected Failure (Double).");
	}

	/** @attribute NUnit.Framework.Test() */
	/** @attribute NUnit.Framework.Ignore("ignored test") */
	public void IgnoredTest()
	{
		throw new InvalidCastException();
	}

	// A useless function, designed to avoid a compiler warning in the the DivideByZero test.
	private int KeepCompilerFromWarning(int dummy)
	{
		return dummy;
	}

}