reentranttest.cs

来自「SRI international 发布的OAA框架软件」· CS 代码 · 共 122 行

CS
122
字号
namespace DotNetUnitTests
{
	using System;
	using NUnit.Framework;
	using jnb.com.sri.test.javanetbridge.classes;
	using com.sri.sedc.javanetbridge;

	/// <summary>
	/// Summary description for ReentrantTest.
	/// </summary>
	/// 
	[TestFixture]
	public class ReentrantTest
	{
		[Test] public void testCallback() {
			Adder javaAdder = UnitTestFactory.getFactory().newAdder();
			assert(javaAdder.add(10,20) == 30);
			CSharpAdder csharpAdder = new CSharpAdder();
			assert(javaAdder.doRemoteAdd(10,20,csharpAdder) == 30);
			assert(csharpAdder.add1Called);
			assert(javaAdder.doRemoteAdd(2.0,2.0,csharpAdder) == 4.0);
			assert(csharpAdder.add1Called);
		}

		[Test] public void testReentrantCallback() {
			Adder javaAdder = UnitTestFactory.getFactory().newAdder();
			CSharpReentrantAdder csharpAdder = new CSharpReentrantAdder(javaAdder);
			assert(javaAdder.doRemoteAdd(10,20,csharpAdder) == 30);
			assert(csharpAdder.add1Called);
		}

		[Test] public void testReentrantTwiceCallback() {
			Adder javaAdder = UnitTestFactory.getFactory().newAdder();
			CSharpReentrantTwiceAdder secondAdder = new CSharpReentrantTwiceAdder(javaAdder);
			assert(javaAdder.doRemoteAdd(10,20,secondAdder) == 30);
			assert(secondAdder.add1Called);
			assert(secondAdder.reentrantAdder.add1Called);
		}

		void assert(bool condition) {
			if (!condition) {
				throw new Exception("Exception failure");
			}
		}
	}

	class CSharpAdder: Adder_CallbackImpl {
		internal bool add1Called = false;
		internal bool add2Called = false;
		internal bool rmoteAddCalled = false;

		public override double add(double arg0, double arg1) {
			add1Called = true;
			return arg0+arg1;
		}

        public override int add(int arg0, int arg1) {
			add2Called = true;
			return arg0+arg1;
		}

        public override double doRemoteAdd(double arg0, double arg1, jnb.com.sri.test.javanetbridge.classes.Adder arg2) {
			rmoteAddCalled = true;
			return arg2.add(arg0, arg1);
		}
	}

	class CSharpReentrantAdder: Adder_CallbackImpl {
		internal bool add1Called = false;
		internal bool add2Called = false;
		internal bool rmoteAddCalled = false;
		private Adder adder;

		public CSharpReentrantAdder(Adder adder) {
			this.adder = adder;
		}

		public override double add(double arg0, double arg1) {
			add1Called = true;
			return adder.add(arg0, arg1);
		}

        public override int add(int arg0, int arg1) {
			add2Called = true;
			return arg0+arg1;
		}

        public override double doRemoteAdd(double arg0, double arg1, jnb.com.sri.test.javanetbridge.classes.Adder arg2) {
			rmoteAddCalled = true;
			return arg2.add(arg0, arg1);
		}
	}

	class CSharpReentrantTwiceAdder: Adder_CallbackImpl {
		internal bool add1Called = false;
		internal bool add2Called = false;
		internal bool rmoteAddCalled = false;
		internal CSharpReentrantAdder reentrantAdder;
		private Adder adder;

		public CSharpReentrantTwiceAdder(Adder adder) {
			this.adder = adder;
			reentrantAdder = new CSharpReentrantAdder(adder);
		}

		public override double add(double arg0, double arg1) {
			add1Called = true;
			return adder.doRemoteAdd(arg0, arg1, reentrantAdder);
		}

        public override int add(int arg0, int arg1) {
			add2Called = true;
			return arg0+arg1;
		}

        public override double doRemoteAdd(double arg0, double arg1, jnb.com.sri.test.javanetbridge.classes.Adder arg2) {
			rmoteAddCalled = true;
			return arg2.add(arg0, arg1);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?