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 + -
显示快捷键?