本文整理汇总了C#中Ice.stringToProxy方法的典型用法代码示例。如果您正苦于以下问题:C# Ice.stringToProxy方法的具体用法?C# Ice.stringToProxy怎么用?C# Ice.stringToProxy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ice
的用法示例。
在下文中一共展示了Ice.stringToProxy方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: allTests
public static void allTests(Ice.Communicator communicator)
{
Console.Out.Write("testing stringToProxy... ");
Console.Out.Flush();
String rf = "test @ TestAdapter";
Ice.ObjectPrx @base = communicator.stringToProxy(rf);
test(@base != null);
Console.Out.WriteLine("ok");
Console.Out.Write("testing IceGrid.Locator is present... ");
IceGrid.LocatorPrx locator = IceGrid.LocatorPrxHelper.uncheckedCast(@base);
test(locator != null);
Console.Out.WriteLine("ok");
Console.Out.Write("testing checked cast... ");
Console.Out.Flush();
TestIntfPrx obj = TestIntfPrxHelper.checkedCast(@base);
test(obj != null);
test(obj.Equals(@base));
Console.Out.WriteLine("ok");
Console.Out.Write("pinging server... ");
Console.Out.Flush();
obj.ice_ping();
Console.Out.WriteLine("ok");
System.Console.Out.Write("shutting down server... ");
System.Console.Out.Flush();
obj.shutdown();
System.Console.Out.WriteLine("ok");
}
示例2: allTests
public static Test.MyClassPrx allTests(Ice.Communicator communicator, bool collocated)
#endif
{
#if SILVERLIGHT
bool collocated = false;
#endif
Flush();
string rf = "test:default -p 12010";
Ice.ObjectPrx baseProxy = communicator.stringToProxy(rf);
Test.MyClassPrx cl = Test.MyClassPrxHelper.checkedCast(baseProxy);
Write("testing twoway operations... ");
Flush();
Twoways.twoways(communicator, cl);
WriteLine("ok");
if(!collocated)
{
Write("testing twoway operations with AMI... ");
Flush();
TwowaysAMI.twowaysAMI(communicator, cl);
WriteLine("ok");
Write("testing twoway operations with new AMI mapping... ");
Flush();
TwowaysNewAMI.twowaysAMI(communicator, cl);
WriteLine("ok");
}
#if SILVERLIGHT
cl.shutdown();
#else
return cl;
#endif
}
示例3: allTests
public static void allTests(Ice.Communicator communicator)
{
string sref = "test:default -p 12010";
Ice.ObjectPrx obj = communicator.stringToProxy(sref);
test(obj != null);
Test.TestIntfPrx p = Test.TestIntfPrxHelper.uncheckedCast(obj);
sref = "testController:tcp -p 12011";
obj = communicator.stringToProxy(sref);
test(obj != null);
Test.TestIntfControllerPrx testController = Test.TestIntfControllerPrxHelper.uncheckedCast(obj);
Console.Out.Write("testing dispatcher... ");
Console.Out.Flush();
{
p.op();
Callback cb = new Callback();
p.begin_op().whenCompleted(cb.response, cb.exception);
cb.check();
TestIntfPrx i = (TestIntfPrx)p.ice_adapterId("dummy");
i.begin_op().whenCompleted(cb.exception);
cb.check();
testController.holdAdapter();
Test.Callback_TestIntf_opWithPayload resp = cb.payload;
Ice.ExceptionCallback excb = cb.ignoreEx;
Ice.SentCallback scb = cb.sent;
byte[] seq = new byte[10 * 1024];
(new System.Random()).NextBytes(seq);
Ice.AsyncResult r;
while((r = p.begin_opWithPayload(seq).whenCompleted(resp, excb).whenSent(scb)).sentSynchronously());
testController.resumeAdapter();
r.waitForCompleted();
}
Console.Out.WriteLine("ok");
p.shutdown();
}
示例4: run
private static int run(string[] args, Ice.Communicator communicator)
{
AllTests.allTests(communicator);
//
// Shutdown the IceBox server.
//
Ice.ProcessPrxHelper.uncheckedCast(
communicator.stringToProxy("DemoIceBox/admin -f Process:default -p 9996")).shutdown();
return 0;
}
示例5: allTests
public static Test.MyClassPrx allTests(Ice.Communicator communicator)
#endif
{
Flush();
string rf = "test:default -p 12010";
Ice.ObjectPrx baseProxy = communicator.stringToProxy(rf);
Test.MyClassPrx cl = Test.MyClassPrxHelper.checkedCast(baseProxy);
Test.MyDerivedClassPrx derivedProxy = Test.MyDerivedClassPrxHelper.checkedCast(cl);
Write("testing twoway operations... ");
Flush();
Twoways.twoways(communicator, cl);
Twoways.twoways(communicator, derivedProxy);
derivedProxy.opDerived();
WriteLine("ok");
Write("testing oneway operations... ");
Flush();
Oneways.oneways(communicator, cl);
WriteLine("ok");
Write("testing twoway operations with AMI... ");
Flush();
TwowaysAMI.twowaysAMI(communicator, cl);
TwowaysAMI.twowaysAMI(communicator, derivedProxy);
WriteLine("ok");
Write("testing oneway operations with AMI... ");
Flush();
OnewaysAMI.onewaysAMI(communicator, cl);
WriteLine("ok");
Write("testing batch oneway operations... ");
Flush();
BatchOneways.batchOneways(cl);
BatchOneways.batchOneways(derivedProxy);
WriteLine("ok");
Write("testing batch AMI oneway operations... ");
Flush();
BatchOnewaysAMI.batchOneways(cl);
BatchOnewaysAMI.batchOneways(derivedProxy);
WriteLine("ok");
#if SILVERLIGHT
cl.shutdown();
#else
return cl;
#endif
}
示例6: allTests
public static void allTests(Ice.Communicator communicator)
#endif
{
string sref = "test:default -p 12010";
Ice.ObjectPrx obj = communicator.stringToProxy(sref);
test(obj != null);
Test.TestIntfPrx testPrx = Test.TestIntfPrxHelper.checkedCast(obj);
test(testPrx != null);
Write("testing connection... ");
Flush();
{
testPrx.ice_ping();
}
WriteLine("ok");
Write("testing connection information... ");
Flush();
{
Ice.IPConnectionInfo info = (Ice.IPConnectionInfo)testPrx.ice_getConnection().getInfo();
test(info.remotePort == 12030 || info.remotePort == 12031); // make sure we are connected to the proxy port.
}
WriteLine("ok");
Write("shutting down server... ");
Flush();
{
testPrx.shutdown();
}
WriteLine("ok");
Write("testing connection failure... ");
Flush();
{
try
{
testPrx.ice_ping();
test(false);
}
catch(Ice.LocalException)
{
}
}
WriteLine("ok");
}
示例7: allTests
public static void allTests(Ice.Communicator communicator)
{
string @ref = "communicator:default -p 12010";
RemoteCommunicatorPrx com = RemoteCommunicatorPrxHelper.uncheckedCast(communicator.stringToProxy(@ref));
List<TestCase> tests = new List<TestCase>();
tests.Add(new InvocationHeartbeatTest(com));
tests.Add(new InvocationHeartbeatOnHoldTest(com));
tests.Add(new InvocationNoHeartbeatTest(com));
tests.Add(new InvocationHeartbeatCloseOnIdleTest(com));
tests.Add(new CloseOnIdleTest(com));
tests.Add(new CloseOnInvocationTest(com));
tests.Add(new CloseOnIdleAndInvocationTest(com));
tests.Add(new ForcefulCloseOnIdleAndInvocationTest(com));
tests.Add(new HeartbeatOnIdleTest(com));
tests.Add(new HeartbeatAlwaysTest(com));
tests.Add(new SetACMTest(com));
foreach(TestCase test in tests)
{
test.init();
}
foreach(TestCase test in tests)
{
test.start();
}
foreach(TestCase test in tests)
{
test.join();
}
foreach(TestCase test in tests)
{
test.destroy();
}
Console.Out.Write("shutting down... ");
Console.Out.Flush();
com.shutdown();
Console.WriteLine("ok");
}
示例8: run
private static int run(string[] args, Ice.Communicator communicator)
{
AllTests.allTests(communicator);
int num;
try
{
num = args.Length == 1 ? System.Int32.Parse(args[0]) : 0;
}
catch(System.FormatException)
{
num = 0;
}
for(int i = 0; i < num; ++i)
{
TestIntfPrxHelper.uncheckedCast(communicator.stringToProxy("control:tcp -p " + (12010 + i))).shutdown();
}
return 0;
}
示例9: run
private static int run(string[] args, Ice.Communicator communicator)
{
Console.Out.Write("testing server priority... ");
Console.Out.Flush();
Ice.ObjectPrx obj = communicator.stringToProxy("test:default -p 12010 -t 10000");
Test.PriorityPrx priority = Test.PriorityPrxHelper.checkedCast(obj);
try
{
test("AboveNormal".Equals(priority.getPriority()));
}
catch(Exception ex)
{
Console.Error.WriteLine(ex.ToString());
test(false);
}
Console.Out.WriteLine("ok");
priority.shutdown();
return 0;
}
示例10: allTests
public static Test.TimeoutPrx allTests(Ice.Communicator communicator)
{
string sref = "timeout:default -p 12010";
Ice.ObjectPrx obj = communicator.stringToProxy(sref);
test(obj != null);
Test.TimeoutPrx timeout = Test.TimeoutPrxHelper.checkedCast(obj);
test(timeout != null);
Write("testing connect timeout... ");
Flush();
{
//
// Expect ConnectTimeoutException.
//
Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(100));
timeout.holdAdapter(500);
try
{
to.op();
test(false);
}
catch(Ice.ConnectTimeoutException)
{
// Expected.
}
}
{
//
// Expect success.
//
timeout.op(); // Ensure adapter is active.
Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(1000));
timeout.holdAdapter(500);
try
{
to.op();
}
catch(Ice.ConnectTimeoutException)
{
test(false);
}
}
WriteLine("ok");
// The sequence needs to be large enough to fill the write/recv buffers
byte[] seq = new byte[2000000];
Write("testing connection timeout... ");
Flush();
{
//
// Expect TimeoutException.
//
Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(100));
timeout.holdAdapter(500);
try
{
to.sendData(seq);
test(false);
}
catch(Ice.TimeoutException)
{
// Expected.
}
}
{
//
// Expect success.
//
timeout.op(); // Ensure adapter is active.
Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(1000));
timeout.holdAdapter(500);
try
{
to.sendData(new byte[1000000]);
}
catch(Ice.TimeoutException)
{
test(false);
}
}
WriteLine("ok");
Write("testing invocation timeout... ");
Flush();
{
Ice.Connection connection = obj.ice_getConnection();
Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_invocationTimeout(100));
test(connection == to.ice_getConnection());
try
{
to.sleep(750);
test(false);
}
catch(Ice.InvocationTimeoutException)
{
}
obj.ice_ping();
to = Test.TimeoutPrxHelper.checkedCast(obj.ice_invocationTimeout(500));
//.........这里部分代码省略.........
示例11: allTests
public static void allTests(Ice.Communicator communicator)
{
string @ref = "DemoIceBox/admin:default -p 9996 -t 10000";
Ice.ObjectPrx admin = communicator.stringToProxy(@ref);
TestFacetPrx facet = null;
Console.Out.Write("testing custom facet... ");
Console.Out.Flush();
{
//
// Test: Verify that the custom facet is present.
//
facet = TestFacetPrxHelper.checkedCast(admin, "TestFacet");
facet.ice_ping();
}
Console.Out.WriteLine("ok");
Console.Out.Write("testing properties facet... ");
Console.Out.Flush();
{
Ice.PropertiesAdminPrx pa =
Ice.PropertiesAdminPrxHelper.checkedCast(admin, "IceBox.Service.TestService.Properties");
//
// Test: PropertiesAdmin::getProperty()
//
test(pa.getProperty("Prop1").Equals("1"));
test(pa.getProperty("Bogus").Equals(""));
//
// Test: PropertiesAdmin::getProperties()
//
Dictionary<string, string> pd = pa.getPropertiesForPrefix("");
test(pd.Count == 6);
test(pd["Prop1"].Equals("1"));
test(pd["Prop2"].Equals("2"));
test(pd["Prop3"].Equals("3"));
test(pd["Ice.Config"].Equals("config.service"));
test(pd["Ice.ProgramName"].Equals("IceBox-TestService"));
test(pd["Ice.Admin.Enabled"].Equals("1"));
Dictionary<string, string> changes;
//
// Test: PropertiesAdmin::setProperties()
//
Dictionary<string, string> setProps = new Dictionary<string, string>();
setProps.Add("Prop1", "10"); // Changed
setProps.Add("Prop2", "20"); // Changed
setProps.Add("Prop3", ""); // Removed
setProps.Add("Prop4", "4"); // Added
setProps.Add("Prop5", "5"); // Added
pa.setProperties(setProps);
test(pa.getProperty("Prop1").Equals("10"));
test(pa.getProperty("Prop2").Equals("20"));
test(pa.getProperty("Prop3").Equals(""));
test(pa.getProperty("Prop4").Equals("4"));
test(pa.getProperty("Prop5").Equals("5"));
changes = facet.getChanges();
test(changes.Count == 5);
test(changes["Prop1"].Equals("10"));
test(changes["Prop2"].Equals("20"));
test(changes["Prop3"].Equals(""));
test(changes["Prop4"].Equals("4"));
test(changes["Prop5"].Equals("5"));
pa.setProperties(setProps);
changes = facet.getChanges();
test(changes.Count == 0);
}
Console.Out.WriteLine("ok");
Console.Out.Write("testing metrics admin facet... ");
Console.Out.Flush();
{
IceMX.MetricsAdminPrx ma =
IceMX.MetricsAdminPrxHelper.checkedCast(admin, "IceBox.Service.TestService.Metrics");
Ice.PropertiesAdminPrx pa =
Ice.PropertiesAdminPrxHelper.checkedCast(admin, "IceBox.Service.TestService.Properties");
string[] views;
string[] disabledViews;
views = ma.getMetricsViewNames(out disabledViews);
test(views.Length == 0);
Dictionary<string, string> setProps = new Dictionary<string, string>();
setProps.Add("IceMX.Metrics.Debug.GroupBy", "id");
setProps.Add("IceMX.Metrics.All.GroupBy", "none");
setProps.Add("IceMX.Metrics.Parent.GroupBy", "parent");
pa.setProperties(setProps);
pa.setProperties(new Dictionary<string, string>());
views = ma.getMetricsViewNames(out disabledViews);
test(views.Length == 3);
// Make sure that the IceBox communicator metrics admin is a separate instance.
test(IceMX.MetricsAdminPrxHelper.checkedCast(admin,
"Metrics").getMetricsViewNames(out disabledViews).Length == 0);
}
//.........这里部分代码省略.........
示例12: twoways
//.........这里部分代码省略.........
eo.MoveNext();
er.MoveNext();
test(obj.i == ((CV)eo.Current).i);
test(obj.i == ((CV)er.Current).i);
}
}
{
CObjectS i = new CObjectS(_length);
for(int c = 0; c < _length; ++c)
{
i.Add(new CV(c));
}
CObjectS o;
CObjectS r;
r = p.opCObjectS(i, out o);
IEnumerator<Ice.Object> eo = (IEnumerator<Ice.Object>)o.GetEnumerator();
IEnumerator<Ice.Object> er = (IEnumerator<Ice.Object>)r.GetEnumerator();
foreach(CV obj in i)
{
eo.MoveNext();
er.MoveNext();
test(obj.i == ((CV)eo.Current).i);
test(obj.i == ((CV)er.Current).i);
}
}
{
Ice.ObjectPrx[] i = new Ice.ObjectPrx[_length];
for(int c = 0; c < _length; ++c)
{
i[c] = communicator.stringToProxy(c.ToString());
}
Ice.ObjectPrx[] o;
Ice.ObjectPrx[] r;
r = p.opAObjectPrxS(i, out o);
test(Ice.CollectionComparer.Equals(i, o));
test(Ice.CollectionComparer.Equals(i, r));
}
{
List<Ice.ObjectPrx> i = new List<Ice.ObjectPrx>(_length);
for(int c = 0; c < _length; ++c)
{
i.Add(communicator.stringToProxy(c.ToString()));
}
List<Ice.ObjectPrx> o;
List<Ice.ObjectPrx> r;
r = p.opLObjectPrxS(i, out o);
test(Ice.CollectionComparer.Equals(i, o));
test(Ice.CollectionComparer.Equals(i, r));
}
{
LinkedList<Ice.ObjectPrx> i = new LinkedList<Ice.ObjectPrx>();
for(int c = 0; c < _length; ++c)
{
i.AddLast(communicator.stringToProxy(c.ToString()));
}
LinkedList<Ice.ObjectPrx> o;
示例13: twowaysAMI
//.........这里部分代码省略.........
AMI_MyClass_opAObjectSI cb = new AMI_MyClass_opAObjectSI(i);
p.opAObjectS_async(cb, i);
cb.check();
}
{
List<Ice.Object> i = new List<Ice.Object>();
for(int c = 0; c < _length; ++c)
{
i.Add(new CV(c));
}
AMI_MyClass_opLObjectSI cb = new AMI_MyClass_opLObjectSI(i);
p.opLObjectS_async(cb, i);
cb.check();
}
{
CObjectS i = new CObjectS();
for(int c = 0; c < _length; ++c)
{
i.Add(new CV(c));
}
AMI_MyClass_opCObjectSI cb = new AMI_MyClass_opCObjectSI(i);
p.opCObjectS_async(cb, i);
cb.check();
}
{
Ice.ObjectPrx[] i = new Ice.ObjectPrx[_length];
for(int c = 0; c < _length; ++c)
{
i[c] = communicator.stringToProxy(c.ToString());
}
AMI_MyClass_opAObjectPrxSI cb = new AMI_MyClass_opAObjectPrxSI(i);
p.opAObjectPrxS_async(cb, i);
cb.check();
}
{
List<Ice.ObjectPrx> i = new List<Ice.ObjectPrx>();
for(int c = 0; c < _length; ++c)
{
i.Add(communicator.stringToProxy(c.ToString()));
}
AMI_MyClass_opLObjectPrxSI cb = new AMI_MyClass_opLObjectPrxSI(i);
p.opLObjectPrxS_async(cb, i);
cb.check();
}
{
LinkedList<Ice.ObjectPrx> i = new LinkedList<Ice.ObjectPrx>();
for(int c = 0; c < _length; ++c)
{
i.AddLast(communicator.stringToProxy(c.ToString()));
}
AMI_MyClass_opKObjectPrxSI cb = new AMI_MyClass_opKObjectPrxSI(i);
p.opKObjectPrxS_async(cb, i);
cb.check();
}
{
示例14: allTests
public static TestIntfPrx allTests(Ice.Communicator communicator, bool collocated)
{
Console.Out.Write("testing stringToProxy... ");
Console.Out.Flush();
string r = "Test:default -p 12010 -t 2000";
Ice.ObjectPrx basePrx = communicator.stringToProxy(r);
test(basePrx != null);
Console.Out.WriteLine("ok");
Console.Out.Write("testing checked cast... ");
Console.Out.Flush();
TestIntfPrx testPrx = TestIntfPrxHelper.checkedCast(basePrx);
test(testPrx != null);
test(testPrx.Equals(basePrx));
Console.Out.WriteLine("ok");
Console.Out.Write("base as Object... ");
Console.Out.Flush();
{
Ice.Object o;
SBase sb = null;
try
{
o = testPrx.SBaseAsObject();
test(o != null);
test(o.ice_id().Equals("::Test::SBase"));
sb = (SBase) o;
}
catch(Exception)
{
test(false);
}
test(sb != null);
test(sb.sb.Equals("SBase.sb"));
}
Console.Out.WriteLine("ok");
Console.Out.Write("base as Object (AMI)... ");
Console.Out.Flush();
{
AsyncCallback cb = new AsyncCallback();
testPrx.begin_SBaseAsObject().whenCompleted(cb.response_SBaseAsObject, cb.exception);
cb.check();
}
Console.Out.WriteLine("ok");
Console.Out.Write("base as base... ");
Console.Out.Flush();
{
SBase sb;
try
{
sb = testPrx.SBaseAsSBase();
test(sb.sb.Equals("SBase.sb"));
}
catch(Exception)
{
test(false);
}
}
Console.Out.WriteLine("ok");
Console.Out.Write("base as base (AMI)... ");
Console.Out.Flush();
{
AsyncCallback cb = new AsyncCallback();
testPrx.begin_SBaseAsSBase().whenCompleted(cb.response_SBaseAsSBase, cb.exception);
cb.check();
}
Console.Out.WriteLine("ok");
Console.Out.Write("base with known derived as base... ");
Console.Out.Flush();
{
SBase sb;
SBSKnownDerived sbskd = null;
try
{
sb = testPrx.SBSKnownDerivedAsSBase();
test(sb.sb.Equals("SBSKnownDerived.sb"));
sbskd = (SBSKnownDerived) sb;
}
catch(Exception)
{
test(false);
}
test(sbskd != null);
test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd"));
}
Console.Out.WriteLine("ok");
Console.Out.Write("base with known derived as base (AMI)... ");
Console.Out.Flush();
{
AsyncCallback cb = new AsyncCallback();
testPrx.begin_SBSKnownDerivedAsSBase().whenCompleted(cb.response_SBSKnownDerivedAsSBase, cb.exception);
cb.check();
}
Console.Out.WriteLine("ok");
//.........这里部分代码省略.........
示例15: allTests
public static InitialPrx allTests(Ice.Communicator communicator)
#endif
{
Ice.ObjectFactory factory = new MyObjectFactory();
communicator.addObjectFactory(factory, "::Test::B");
communicator.addObjectFactory(factory, "::Test::C");
communicator.addObjectFactory(factory, "::Test::D");
communicator.addObjectFactory(factory, "::Test::E");
communicator.addObjectFactory(factory, "::Test::F");
communicator.addObjectFactory(factory, "::Test::I");
communicator.addObjectFactory(factory, "::Test::J");
communicator.addObjectFactory(factory, "::Test::H");
Write("testing stringToProxy... ");
Flush();
String @ref = "initial:default -p 12010";
Ice.ObjectPrx @base = communicator.stringToProxy(@ref);
test(@base != null);
WriteLine("ok");
Write("testing checked cast... ");
Flush();
InitialPrx initial = InitialPrxHelper.checkedCast(@base);
test(initial != null);
test(initial.Equals(@base));
WriteLine("ok");
Write("getting B1... ");
Flush();
B b1 = initial.getB1();
test(b1 != null);
WriteLine("ok");
Write("getting B2... ");
Flush();
B b2 = initial.getB2();
test(b2 != null);
WriteLine("ok");
Write("getting C... ");
Flush();
C c = initial.getC();
test(c != null);
WriteLine("ok");
Write("getting D... ");
Flush();
D d = initial.getD();
test(d != null);
WriteLine("ok");
Write("checking consistency... ");
Flush();
test(b1 != b2);
//test(b1 != c);
//test(b1 != d);
//test(b2 != c);
//test(b2 != d);
//test(c != d);
test(b1.theB == b1);
test(b1.theC == null);
test(b1.theA is B);
test(((B) b1.theA).theA == b1.theA);
test(((B) b1.theA).theB == b1);
//test(((B)b1.theA).theC is C); // Redundant -- theC is always of type C
test(((C) (((B) b1.theA).theC)).theB == b1.theA);
test(b1.preMarshalInvoked);
test(b1.postUnmarshalInvoked());
test(b1.theA.preMarshalInvoked);
test(b1.theA.postUnmarshalInvoked());
test(((B)b1.theA).theC.preMarshalInvoked);
test(((B)b1.theA).theC.postUnmarshalInvoked());
// More tests possible for b2 and d, but I think this is already
// sufficient.
test(b2.theA == b2);
test(d.theC == null);
WriteLine("ok");
Write("getting B1, B2, C, and D all at once... ");
Flush();
B b1out;
B b2out;
C cout;
D dout;
initial.getAll(out b1out, out b2out, out cout, out dout);
test(b1out != null);
test(b2out != null);
test(cout != null);
test(dout != null);
WriteLine("ok");
Write("checking consistency... ");
Flush();
test(b1out != b2out);
test(b1out.theA == b2out);
test(b1out.theB == b1out);
test(b1out.theC == null);
test(b2out.theA == b2out);
test(b2out.theB == b1out);
//.........这里部分代码省略.........