paramTest3Async(Action <TestIntf_ParamTest3Result> response, Action <Exception> exception, Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; response(new TestIntf_ParamTest3Result(d3, d2, d4)); }
private void Torres_Load(object sender, EventArgs e) { // a los discos se les asigna el panel 1 y se invoca el metodo bingtofront coloca enfrete de todo D1.Parent = panel1; D2.Parent = panel1; D3.Parent = panel1; D4.Parent = panel1; D5.Parent = panel1; D1.Top = panel1.Height - D1.Height - 0 * D1.Height - PicBase1.Height; D2.Top = panel1.Height - D2.Height - 1 * D2.Height - PicBase1.Height; D3.Top = panel1.Height - D3.Height - 2 * D3.Height - PicBase1.Height; D4.Top = panel1.Height - D4.Height - 3 * D4.Height - PicBase1.Height; D5.Top = panel1.Height - D5.Height - 4 * D5.Height - PicBase1.Height; D1.BringToFront(); D2.BringToFront(); D3.BringToFront(); D4.BringToFront(); D5.BringToFront(); pila1.Clear(); pila1.Push(D1); pila1.Push(D2); pila1.Push(D3); pila1.Push(D4); pila1.Push(D5); pila2.Clear(); pila3.Clear(); contador = 0; LbTotal.Text = "0"; }
public DelegateCompatibilityClass() { _d1 = ExampleMethod; _d11 = ExampleMethod; // _d2 = _d1; ERROR _d2 = new D2(_d1); // This, however, is permitted }
public ValueTask <(IReadOnlyDictionary <int, B?>, IReadOnlyDictionary <int, B?>)> DictionaryTestAsync( Dictionary <int, B?> bin, Current current) { var bout = new Dictionary <int, B?>(); int i; for (i = 0; i < 10; ++i) { B?b = bin[i]; TestHelper.Assert(b != null); var d2 = new D2(); d2.Sb = b.Sb; d2.Pb = b.Pb; d2.Sd2 = "D2"; d2.Pd2 = d2; bout[i * 10] = d2; } var r = new Dictionary <int, B?>(); for (i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); var d1 = new D1(); d1.Sb = s; d1.Pb = i == 0 ? null : r[(i - 1) * 20]; d1.Sd1 = s; d1.Pd1 = d1; r[i * 20] = d1; } return(new ValueTask <(IReadOnlyDictionary <int, B?>, IReadOnlyDictionary <int, B?>)>((r, bout))); }
public ITestIntf.ParamTest3ReturnValue paramTest3(Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(new ITestIntf.ParamTest3ReturnValue(d3, d2, d4)); }
private static void Main(string[] args) { S1 newItem = new S1() { Age = 11, Name = "John" }; D1 oldItem = new D1() { Age = 10 }; //there is an item in a database which is of D1 type. This convertor receives an object S1 in order to update the D1 item. // the rule is that Sx updatates Dx (where x is 1,2,3,4,5...) Convertor <S1, D1> convertor = new Convertor <S1, D1>(newItem, oldItem); S2 newItem2 = new S2() { City = "London", Name = "Lynda" }; D2 oldItem2 = new D2() { City = "Paris" }; Convertor <S2, D2> convertor2 = new Convertor <S2, D2>(newItem2, oldItem2); Console.ReadKey(); }
dictionaryTest(Dictionary <int, B> bin, Ice.Current current) { var bout = new Dictionary <int, B>(); int i; for (i = 0; i < 10; ++i) { B b = bin[i]; D2 d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } var r = new Dictionary <int, B>(); for (i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = i == 0 ? null : r[(i - 1) * 20]; d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } return(r, bout); }
public (IReadOnlyDictionary <int, B?>, IReadOnlyDictionary <int, B?>) dictionaryTest(Dictionary <int, B?> bin, Current current) { var bout = new Dictionary <int, B?>(); int i; for (i = 0; i < 10; ++i) { B?b = bin[i]; TestHelper.Assert(b != null); var d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } var r = new Dictionary <int, B?>(); for (i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); var d1 = new D1(); d1.sb = s; d1.pb = i == 0 ? null : r[(i - 1) * 20]; d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } return(r, bout); }
paramTest3Async(Current current) { var d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; var d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(MakeValueTask(((B?)d3, (B?)d2, (B?)d4))); }
public (B, B, B) ParamTest3(Current current) { var d2 = new D2(); d2.Sb = "D2.sb (p1 1)"; d2.Pb = null; d2.Sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.Sb = "D1.sb (p1 2)"; d1.Pb = null; d1.Sd1 = "D1.sd2 (p1 2)"; d1.Pd1 = null; d2.Pd2 = d1; var d4 = new D2(); d4.Sb = "D2.sb (p2 1)"; d4.Pb = null; d4.Sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.Sb = "D1.sb (p2 2)"; d3.Pb = null; d3.Sd1 = "D1.sd2 (p2 2)"; d3.Pd1 = null; d4.Pd2 = d3; return(d3, d2, d4); }
dictionaryTestAsync(Dictionary <int, B> bin, Ice.Current current) { var bout = new Dictionary <int, B>(); int i; for (i = 0; i < 10; ++i) { B b = bin[i]; var d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } var r = new Dictionary <int, B>(); for (i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); var d1 = new D1(); d1.sb = s; d1.pb = (i == 0 ? null : r[(i - 1) * 20]); d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } return(Task.FromResult <TestIntf_DictionaryTestResult>(new TestIntf_DictionaryTestResult(r, bout))); }
public static void TestD1(int a, D1 d1) { GameObject obj = new GameObject(); LuaTable t = LuaManager.Instance._LuaEnv.NewTable(); d1(obj, t); }
public void Ch05_AL01_DFS_02_ReturnInvalidPath() { // Undirected graph with int nodes D1.AutoCreateGraph_01_Undirected_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 1, 100), false); // Directed graph with int nodes D1.AutoCreateGraph_02_Directed_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 2, 8), false); Assert.AreEqual(A1.HasPathDFS(gr_int, 4, 8), false); Assert.AreEqual(A1.HasPathDFS(gr_int, 5, 7), false); Assert.AreEqual(A1.HasPathDFS(gr_int, 3, 1), false); Assert.AreEqual(A1.HasPathDFS(gr_int, 3, 5), false); // Graph with no nodes D1.AutoCreateGraph_05_NoNodes_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 2, 8), false); // Graph with 1 node D1.AutoCreateGraph_06_1Node_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 1, 2), false); // Graph with 2 nodes D1.AutoCreateGraph_07_2Nodes_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 1, 2), false); // Graph with 1 node disconnected D1.AutoCreateGraph_08_Directed_1UnconnectedNode_int(gr_int); Assert.AreEqual(A1.HasPathDFS(gr_int, 1, 2), false); }
private void button1_Click(object sender, EventArgs e) { //宣告 string D1, D2 = "", D3; int i; string[] A = new string[10]; //輸入 D1 = textBox1.Text; //處理 D3 = D1; for (i = 0; i <= D1.Length - 1; i++) { A[i] = D1.Substring(i, 1); //代表一次取一個字元放入陣列中 } for (i = D1.Length - 1; i >= 0; i--) //從最後一個開始顯示出來 { D2 = D2 + A[i]; } if (D2 == D3) { MessageBox.Show(D3 + "是迴文"); //輸出 } else { MessageBox.Show(D3 + "不是迴文"); //輸出 } }
public ValueTask <(B?, B?, B?)> ParamTest3Async(Current current, CancellationToken cancel) { var d2 = new D2(); d2.Sb = "D2.sb (p1 1)"; d2.Pb = null; d2.Sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.Sb = "D1.sb (p1 2)"; d1.Pb = null; d1.Sd1 = "D1.sd2 (p1 2)"; d1.Pd1 = null; d2.Pd2 = d1; var d4 = new D2(); d4.Sb = "D2.sb (p2 1)"; d4.Pb = null; d4.Sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.Sb = "D1.sb (p2 2)"; d3.Pb = null; d3.Sd1 = "D1.sd2 (p2 2)"; d3.Pd1 = null; d4.Pd2 = d3; return(new((d3, d2, d4))); }
public static void DelegatesTests() { Transformer t = Square; // Create delegate instance Transformer t2 = new Transformer(Square); int result = t(3); // Invoke delegate result = t2.Invoke(3); // Invoke delegate int[] values = { 1, 2, 3 }; Transform(values, Square); Transform2(values, Square); Transformer <double> s = Square; Console.WriteLine(s(3.3)); D1 d1 = Method1; //D2 d2 = d1 // Compile-time error D2 d2 = new D2(d1); ObjectRetriever o = new ObjectRetriever(GetString); object result2 = o(); Console.WriteLine(result2); StringAction sa = new StringAction(ActOnObject); sa("hello"); Func <string> x = GetString; Func <object> y = x; Console.WriteLine(y); Action <object> x1 = ActOnObject; Action <string> y2 = x1; }
public ValueTask <(B?, B?, B?)> ParamTest3Async(Current current) { var d2 = new D2(); d2.Sb = "D2.sb (p1 1)"; d2.Pb = null; d2.Sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.Sb = "D1.sb (p1 2)"; d1.Pb = null; d1.Sd1 = "D1.sd2 (p1 2)"; d1.Pd1 = null; d2.Pd2 = d1; var d4 = new D2(); d4.Sb = "D2.sb (p2 1)"; d4.Pb = null; d4.Sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.Sb = "D1.sb (p2 2)"; d3.Pb = null; d3.Sd1 = "D1.sd2 (p2 2)"; d3.Pd1 = null; d4.Pd2 = d3; return(MakeValueTask(((B?)d3, (B?)d2, (B?)d4))); }
public static void Main(string[] args) { Base b1 = new D1(); Base b2 = new D2(); Method(b1, b2); }
public B paramTest3(out B p1, out B p2, Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; p1 = d2; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; p2 = d4; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(d3); }
private void D2_Tick(object sender, EventArgs e) { PS3.Extension.WriteString(0x004eb39c, "^5S^7pec Ops ^5M^7od Menu ^5B^7y ^5M^7rNiato - ^5R^7eset ^5M^7enu\n\nGod Mode\n^2-->^5Max Ammo\nAll Perks\nRapide Fire\nLock Controller"); if (Key_IsDown((uint)0) == "R1") { D2.Stop(); D3.Start(); } if (Key_IsDown((uint)0) == "X") { byte[] buffer = new byte[] { 0x00, 0x00, 0x00 }; PS3.SetMemory(0x01227631, buffer); PS3.SetMemory(0x01227649, buffer); PS3.SetMemory(0x012276b5, buffer); PS3.SetMemory(0x012276c1, buffer); PS3.SetMemory(0x012276d9, buffer); PS3.SetMemory(0x012276e5, buffer); // byte[] buffer1 = new byte[] { 0x00 }; PS3.SetMemory(0x0122778a, buffer1); } if (Key_IsDown((uint)0) == "R3") { D2.Stop(); HostMenuMain.Start(); } if (Key_IsDown((uint)0) == "L1") { D2.Stop(); D1.Start(); } }
paramTest3Async(Ice.Current current) { var d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; var d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(Task.FromResult(((B)d3, (B)d2, (B)d4))); }
public void CloningDelegateToADifferentTypeIsANoOp() { D1 d1 = () => {}; D2 d2 = new D2(d1); Assert.IsTrue((object)d1 == (object)d2); }
public override void dictionaryTest_async(AMD_TestIntf_dictionaryTest cb, Dictionary <int, B> bin, Ice.Current current) { Dictionary <int, B> bout = new Dictionary <int, B>(); int i; for (i = 0; i < 10; ++i) { B b = bin[i]; D2 d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } Dictionary <int, B> r = new Dictionary <int, B>(); for (i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = (i == 0 ? null : r[(i - 1) * 20]); d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } cb.ice_response(r, bout); }
public override void paramTest3_async(AMD_TestIntf_paramTest3 cb, Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; cb.ice_response(d3, d2, d4); }
public void Equals() { var sut = new D1(); var other = new D1(); sut.Should().Be(other); }
public (B, B, B) paramTest3(Ice.Current current) { var d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; var d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; var d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; var d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(d3, d2, d4); }
static void Main(string[] args) { var testObj = new Program(); D1 myDelegate = testObj.TestMethod; myDelegate.Invoke(); }
paramTest3Async(Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return(Task.FromResult <TestIntf_ParamTest3Result>(new TestIntf_ParamTest3Result(d3, d2, d4))); }
private void A1_Tick(object sender, EventArgs e) { PS3.Extension.WriteString(0x004eb39c, "^5S^7pec Ops ^5M^7od Menu ^5B^7y ^5M^7rNiato - ^5M^7ain ^5M^7enu\n\n^2-->^5Host Menu\nClient 1 Menu\nReset Menu\nAccount Menu\nTeleport Menu\nVision Menu\nCredit Menu\n\n\n^3Client 0 : ^2" + textBox1.Text + "\n^3Client 1 : ^2" + textBox2.Text + "^5"); if (Key_IsDown((uint)0) == "X") { HostMenuMain.Stop(); B1.Start(); } if (Key_IsDown((uint)0) == "R1") { HostMenuMain.Stop(); Client1.Start(); } if (Key_IsDown((uint)0) == "R3 + L3") { HostMenuMain.Stop(); B1.Stop(); B2.Stop(); B3.Stop(); B4.Stop(); B5.Stop(); Client1.Stop(); C1.Stop(); C2.Stop(); C3.Stop(); C4.Stop(); ResetMenu.Stop(); D1.Stop(); D2.Stop(); D3.Stop(); D4.Stop(); D5.Stop(); AccountMenu.Stop(); E1.Stop(); E2.Stop(); E3.Stop(); E4.Stop(); E5.Stop(); TeleportMenu.Stop(); F1.Stop(); F2.Stop(); F3.Stop(); F4.Stop(); VisionMenu.Stop(); G1.Stop(); G2.Stop(); G3.Stop(); G4.Stop(); G5.Stop(); G6.Stop(); OtherMenu.Stop(); H1.Stop(); PS3.Extension.WriteString(0x004eb39c, "^5Menu ^1Closed"); simpleButton2.Enabled = true; toolStripStatusLabel2.Text = "Not Started !"; toolStripStatusLabel2.ForeColor = Color.Red; simpleButton3.Enabled = false; } }
static void Test1() { Console.WriteLine("--- Test1"); D1 d = new D1(); Console.WriteLine(d.Foo <string>()); Console.WriteLine(d.Fct("ok")); }
public static void Main(string[] args) { Base b1 = new D1(); Base b2 = new D2(); Method(b1, b2); Method(b2, b1); //arguments swapped! }
public void NotEquals() { var d1 = new D1(); var sut = new A(new B1(d1), new C1(d1)); var other = new A(Mock.Of<IB>(), Mock.Of<IC>()); sut.Should().NotBe(other); }
static void Main(string[] args) { D1 d = Method1; D2 dd = Method2; int[] z = d?.Invoke(56789); dd(z); Console.WriteLine($"\nd.Target = {d.Target}"); Console.WriteLine($"d.Method = {d.Method}"); }
public void Equals() { var d1 = new D1(); var b1 = new B1(d1); var c1 = new C1(d1); var sut = new A(b1, c1); var other = new A(b1, c1); sut.Should().Be(other); }
static void Main(string[] args) { Console.WriteLine("\t Don't DO THIS\n"); D d = new D("Hello World from class D"); Console.WriteLine("\n\tYOU CAN DO THIS"); D1 d1 = new D1("Hello World from class D"); Console.ReadKey(); }
//Można porównywać delegaty tego samego typu // Oba są typu D1 public void Test() { // Delegaty są ustawione na te same funkcje - czy są równe? Console.WriteLine(_d1 == _d11 ? "Delegaty _d1 i _d11 wskazuja na ta sama funkcje" : "Delegaty _d1 i _d11 pokazuj"); //TEST - usuwamy z _d11 delegat - czy będzie NULL? this._d11 -= ExampleMethod; Console.WriteLine(_d11 == null ? "Delegat _d11 jest null" : "Delegat _d11 nie jest null"); this._d11 += ExampleMethod; Console.WriteLine(_d1 == _d11 ? "True" : "False"); }
public override void D2AsB_async(AMD_TestIntf_D2AsB cb, Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; D1 d1 = new D1(); d1.pb = d2; d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; d1.pd1 = d2; d2.pb = d1; d2.pd2 = d1; cb.ice_response(d2); }
public override D1 D1AsD1(Ice.Current current) { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D2 d2 = new D2(); d2.pb = d1; d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; d2.pd2 = d1; d1.pb = d2; d1.pd1 = d2; return d1; }
public override B D2AsB(Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; D1 d1 = new D1(); d1.pb = d2; d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; d1.pd1 = d2; d2.pb = d1; d2.pd2 = d1; return d2; }
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); test(b2out.theC == cout); test(cout.theB == b2out); test(dout.theA == b1out); test(dout.theB == b2out); test(dout.theC == null); test(dout.preMarshalInvoked); test(dout.postUnmarshalInvoked()); test(dout.theA.preMarshalInvoked); test(dout.theA.postUnmarshalInvoked()); test(dout.theB.preMarshalInvoked); test(dout.theB.postUnmarshalInvoked()); test(dout.theB.theC.preMarshalInvoked); test(dout.theB.theC.postUnmarshalInvoked()); WriteLine("ok"); Write("testing protected members... "); Flush(); E e = initial.getE(); test(e.checkValues()); System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance; test(!typeof(E).GetField("i", flags).IsPublic && !typeof(E).GetField("i", flags).IsPrivate); test(!typeof(E).GetField("s", flags).IsPublic && !typeof(E).GetField("s", flags).IsPrivate); F f = initial.getF(); test(f.checkValues()); test(f.e2.checkValues()); test(!typeof(F).GetField("e1", flags).IsPublic && !typeof(F).GetField("e1", flags).IsPrivate); test(typeof(F).GetField("e2", flags).IsPublic && !typeof(F).GetField("e2", flags).IsPrivate); WriteLine("ok"); Write("getting I, J and H... "); Flush(); I i = initial.getI(); test(i != null); I j = initial.getJ(); test(j != null && ((J)j) != null); I h = initial.getH(); test(h != null && ((H)h) != null); WriteLine("ok"); Write("getting D1... "); Flush(); D1 d1 = new D1(new A1("a1"), new A1("a2"), new A1("a3"), new A1("a4")); d1 = initial.getD1(d1); test(d1.a1.name.Equals("a1")); test(d1.a2.name.Equals("a2")); test(d1.a3.name.Equals("a3")); test(d1.a4.name.Equals("a4")); WriteLine("ok"); Write("throw EDerived... "); Flush(); try { initial.throwEDerived(); test(false); } catch(EDerived ederived) { test(ederived.a1.name.Equals("a1")); test(ederived.a2.name.Equals("a2")); test(ederived.a3.name.Equals("a3")); test(ederived.a4.name.Equals("a4")); } WriteLine("ok"); Write("setting I... "); Flush(); initial.setI(i); initial.setI(j); initial.setI(h); WriteLine("ok"); Write("testing sequences..."); Flush(); try { Base[] inS = new Base[0]; Base[] outS; Base[] retS; retS = initial.opBaseSeq(inS, out outS); inS = new Base[1]; inS[0] = new Base(new S(), ""); retS = initial.opBaseSeq(inS, out outS); test(retS.Length == 1 && outS.Length == 1); } catch(Ice.OperationNotExistException) { } WriteLine("ok"); Write("testing compact ID..."); Flush(); try { test(initial.getCompact() != null); } catch(Ice.OperationNotExistException) { } WriteLine("ok"); Write("testing UnexpectedObjectException..."); Flush(); @ref = "uoet:default -p 12010"; @base = communicator.stringToProxy(@ref); test(@base != null); UnexpectedObjectExceptionTestPrx uoet = UnexpectedObjectExceptionTestPrxHelper.uncheckedCast(@base); test(uoet != null); try { uoet.op(); test(false); } catch(Ice.UnexpectedObjectException ex) { test(ex.type.Equals("::Test::AlsoEmpty")); test(ex.expectedType.Equals("::Test::Empty")); } catch(System.Exception ex) { WriteLine(ex.ToString()); test(false); } WriteLine("ok"); #if SILVERLIGHT initial.shutdown(); #else return initial; #endif }
public override D1 getD1(D1 d1, Ice.Current current) { return d1; }
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"); Console.Out.Write("base with known derived as known derived... "); Console.Out.Flush(); { SBSKnownDerived sbskd; try { sbskd = testPrx.SBSKnownDerivedAsSBSKnownDerived(); test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("base with known derived as known derived (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_SBSKnownDerivedAsSBSKnownDerived().whenCompleted( cb.response_SBSKnownDerivedAsSBSKnownDerived, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("base with unknown derived as base... "); Console.Out.Flush(); { SBase sb; try { sb = testPrx.SBSUnknownDerivedAsSBase(); test(sb.sb.Equals("SBSUnknownDerived.sb")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("base with unknown derived as base (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_SBSUnknownDerivedAsSBase().whenCompleted( cb.response_SBSUnknownDerivedAsSBase, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("unknown with Object as Object... "); Console.Out.Flush(); { try { testPrx.SUnknownAsObject(); test(false); } catch(Ice.NoObjectFactoryException) { } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("unknown with Object as Object (AMI)... "); Console.Out.Flush(); { try { AsyncCallback cb = new AsyncCallback(); testPrx.begin_SUnknownAsObject().whenCompleted( cb.response_SUnknownAsObject, cb.exception_SUnknownAsObject); cb.check(); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("one-element cycle... "); Console.Out.Flush(); { try { B b = testPrx.oneElementCycle(); test(b != null); test(b.ice_id().Equals("::Test::B")); test(b.sb.Equals("B1.sb")); test(b.pb == b); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("one-element cycle (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_oneElementCycle().whenCompleted( cb.response_oneElementCycle, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("two-element cycle... "); Console.Out.Flush(); { try { B b1 = testPrx.twoElementCycle(); test(b1 != null); test(b1.ice_id().Equals("::Test::B")); test(b1.sb.Equals("B1.sb")); B b2 = b1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("B2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("two-element cycle (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_twoElementCycle().whenCompleted( cb.response_twoElementCycle, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("known derived pointer slicing as base... "); Console.Out.Flush(); { try { B b1; b1 = testPrx.D1AsB(); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb != null); test(b1.pb != b1); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 != null); test(d1.pd1 != b1); test(b1.pb == d1.pd1); B b2 = b1.pb; test(b2 != null); test(b2.pb == b1); test(b2.sb.Equals("D2.sb")); test(b2.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("known derived pointer slicing as base (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_D1AsB().whenCompleted(cb.response_D1AsB, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("known derived pointer slicing as derived... "); Console.Out.Flush(); { try { D1 d1; d1 = testPrx.D1AsD1(); test(d1 != null); test(d1.ice_id().Equals("::Test::D1")); test(d1.sb.Equals("D1.sb")); test(d1.pb != null); test(d1.pb != d1); B b2 = d1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb == d1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("known derived pointer slicing as derived (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_D1AsD1().whenCompleted(cb.response_D1AsD1, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("unknown derived pointer slicing as base... "); Console.Out.Flush(); { try { B b2; b2 = testPrx.D2AsB(); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb != null); test(b2.pb != b2); B b1 = b2.pb; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("unknown derived pointer slicing as base (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_D2AsB().whenCompleted(cb.response_D2AsB, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing with known first... "); Console.Out.Flush(); { try { B b1; B b2; testPrx.paramTest1(out b1, out b2); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing with known first (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_paramTest1().whenCompleted(cb.response_paramTest1, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing with unknown first... "); Console.Out.Flush(); { try { B b2; B b1; testPrx.paramTest2(out b2, out b1); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing with unknown first (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_paramTest2().whenCompleted(cb.response_paramTest2, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity with known first... "); Console.Out.Flush(); { try { B p1; B p2; B ret = testPrx.returnTest1(out p1, out p2); test(ret == p1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity with known first (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest1().whenCompleted(cb.response_returnTest1, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity with unknown first... "); Console.Out.Flush(); { try { B p1; B p2; B ret = testPrx.returnTest2(out p1, out p2); test(ret == p1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity with unknown first (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest2().whenCompleted(cb.response_returnTest2, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity for input params known first... "); Console.Out.Flush(); { try { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3(d1, d3); test(b1 != null); test(b1.sb.Equals("D1.sb")); test(b1.ice_id().Equals("::Test::D1")); D1 p1 = (D1) b1; test(p1 != null); test(p1.sd1.Equals("D1.sd1")); test(p1.pd1 == b1.pb); B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D3.sb")); test(b2.ice_id().Equals("::Test::B")); // Sliced by server test(b2.pb == b1); try { D3 p3 = (D3) b2; test(false); D3 tmp = p3; p3 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity for input params known first (AMI)... "); Console.Out.Flush(); { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest3(d1, d3).whenCompleted(cb.response_returnTest3, cb.exception); cb.check(); B b1 = cb.rb; test(b1 != null); test(b1.sb.Equals("D1.sb")); test(b1.ice_id().Equals("::Test::D1")); D1 p1 = (D1) b1; test(p1 != null); test(p1.sd1.Equals("D1.sd1")); test(p1.pd1 == b1.pb); B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D3.sb")); test(b2.ice_id().Equals("::Test::B")); // Sliced by server test(b2.pb == b1); try { D3 p3 = (D3) b2; test(false); D3 tmp = p3; p3 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity for input params unknown first... "); Console.Out.Flush(); { try { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3(d3, d1); test(b1 != null); test(b1.sb.Equals("D3.sb")); test(b1.ice_id().Equals("::Test::B")); // Sliced by server try { D3 p1 = (D3) b1; test(false); D3 tmp = p1; p1 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D1.sb")); test(b2.ice_id().Equals("::Test::D1")); test(b2.pb == b1); D1 p3 = (D1) b2; test(p3 != null); test(p3.sd1.Equals("D1.sd1")); test(p3.pd1 == b1); test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("return value identity for input params unknown first (AMI)... "); Console.Out.Flush(); { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest3(d3, d1).whenCompleted(cb.response_returnTest3, cb.exception); cb.check(); B b1 = cb.rb; test(b1 != null); test(b1.sb.Equals("D3.sb")); test(b1.ice_id().Equals("::Test::B")); // Sliced by server try { D3 p1 = (D3) b1; test(false); D3 tmp = p1; p1 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D1.sb")); test(b2.ice_id().Equals("::Test::D1")); test(b2.pb == b1); D1 p3 = (D1) b2; test(p3 != null); test(p3.sd1.Equals("D1.sd1")); test(p3.pd1 == b1); test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } Console.Out.WriteLine("ok"); Console.Out.Write("remainder unmarshaling (3 instances)... "); Console.Out.Flush(); { try { B p1; B p2; B ret = testPrx.paramTest3(out p1, out p2); test(p1 != null); test(p1.sb.Equals("D2.sb (p1 1)")); test(p1.pb == null); test(p1.ice_id().Equals("::Test::B")); test(p2 != null); test(p2.sb.Equals("D2.sb (p2 1)")); test(p2.pb == null); test(p2.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("D1.sb (p2 2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::D1")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("remainder unmarshaling (3 instances) (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_paramTest3().whenCompleted(cb.response_paramTest3, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("remainder unmarshaling (4 instances)... "); Console.Out.Flush(); { try { B b; B ret = testPrx.paramTest4(out b); test(b != null); test(b.sb.Equals("D4.sb (1)")); test(b.pb == null); test(b.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("B.sb (2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("remainder unmarshaling (4 instances) (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_paramTest4().whenCompleted(cb.response_paramTest4, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing, instance marshaled in unknown derived as base... "); Console.Out.Flush(); { try { B b1 = new B(); b1.sb = "B.sb(1)"; b1.pb = b1; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = b1; B b2 = new B(); b2.sb = "B.sb(2)"; b2.pb = b1; B ret = testPrx.returnTest3(d3, b2); test(ret != null); test(ret.ice_id().Equals("::Test::B")); test(ret.sb.Equals("D3.sb")); test(ret.pb == ret); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing, instance marshaled in unknown derived as base (AMI)... "); Console.Out.Flush(); { B b1 = new B(); b1.sb = "B.sb(1)"; b1.pb = b1; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = b1; B b2 = new B(); b2.sb = "B.sb(2)"; b2.pb = b1; AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest3(d3, b2).whenCompleted(cb.response_returnTest3, cb.exception); cb.check(); B rv = cb.rb; test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing, instance marshaled in unknown derived as derived... "); Console.Out.Flush(); { try { D1 d11 = new D1(); d11.sb = "D1.sb(1)"; d11.pb = d11; d11.sd1 = "D1.sd1(1)"; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = d11; D1 d12 = new D1(); d12.sb = "D1.sb(2)"; d12.pb = d12; d12.sd1 = "D1.sd1(2)"; d12.pd1 = d11; B ret = testPrx.returnTest3(d3, d12); test(ret != null); test(ret.ice_id().Equals("::Test::B")); test(ret.sb.Equals("D3.sb")); test(ret.pb == ret); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("param ptr slicing, instance marshaled in unknown derived as derived (AMI)... "); Console.Out.Flush(); { D1 d11 = new D1(); d11.sb = "D1.sb(1)"; d11.pb = d11; d11.sd1 = "D1.sd1(1)"; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = d11; D1 d12 = new D1(); d12.sb = "D1.sb(2)"; d12.pb = d12; d12.sd1 = "D1.sd1(2)"; d12.pd1 = d11; AsyncCallback cb = new AsyncCallback(); testPrx.begin_returnTest3(d3, d12).whenCompleted(cb.response_returnTest3, cb.exception); cb.check(); B rv = cb.rb; test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } Console.Out.WriteLine("ok"); Console.Out.Write("sequence slicing... "); Console.Out.Flush(); { try { SS ss; { B ss1b = new B(); ss1b.sb = "B.sb"; ss1b.pb = ss1b; D1 ss1d1 = new D1(); ss1d1.sb = "D1.sb"; ss1d1.sd1 = "D1.sd1"; ss1d1.pb = ss1b; D3 ss1d3 = new D3(); ss1d3.sb = "D3.sb"; ss1d3.sd3 = "D3.sd3"; ss1d3.pb = ss1b; B ss2b = new B(); ss2b.sb = "B.sb"; ss2b.pb = ss1b; D1 ss2d1 = new D1(); ss2d1.sb = "D1.sb"; ss2d1.sd1 = "D1.sd1"; ss2d1.pb = ss2b; D3 ss2d3 = new D3(); ss2d3.sb = "D3.sb"; ss2d3.sd3 = "D3.sd3"; ss2d3.pb = ss2b; ss1d1.pd1 = ss2b; ss1d3.pd3 = ss2d1; ss2d1.pd1 = ss1d3; ss2d3.pd3 = ss1d1; SS1 ss1 = new SS1(); ss1.s = new BSeq(3); ss1.s.Add(ss1b); ss1.s.Add(ss1d1); ss1.s.Add(ss1d3); SS2 ss2 = new SS2(); ss2.s = new BSeq(3); ss2.s.Add(ss2b); ss2.s.Add(ss2d1); ss2.s.Add(ss2d3); ss = testPrx.sequenceTest(ss1, ss2); } test(ss.c1 != null); B ss1b2 = ss.c1.s[0]; B ss1d2 = ss.c1.s[1]; test(ss.c2 != null); B ss1d4 = ss.c1.s[2]; test(ss.c2 != null); B ss2b2 = ss.c2.s[0]; B ss2d2 = ss.c2.s[1]; B ss2d4 = ss.c2.s[2]; test(ss1b2.pb == ss1b2); test(ss1d2.pb == ss1b2); test(ss1d4.pb == ss1b2); test(ss2b2.pb == ss1b2); test(ss2d2.pb == ss2b2); test(ss2d4.pb == ss2b2); test(ss1b2.ice_id().Equals("::Test::B")); test(ss1d2.ice_id().Equals("::Test::D1")); test(ss1d4.ice_id().Equals("::Test::B")); test(ss2b2.ice_id().Equals("::Test::B")); test(ss2d2.ice_id().Equals("::Test::D1")); test(ss2d4.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("sequence slicing (AMI)... "); Console.Out.Flush(); { SS ss; { B ss1b = new B(); ss1b.sb = "B.sb"; ss1b.pb = ss1b; D1 ss1d1 = new D1(); ss1d1.sb = "D1.sb"; ss1d1.sd1 = "D1.sd1"; ss1d1.pb = ss1b; D3 ss1d3 = new D3(); ss1d3.sb = "D3.sb"; ss1d3.sd3 = "D3.sd3"; ss1d3.pb = ss1b; B ss2b = new B(); ss2b.sb = "B.sb"; ss2b.pb = ss1b; D1 ss2d1 = new D1(); ss2d1.sb = "D1.sb"; ss2d1.sd1 = "D1.sd1"; ss2d1.pb = ss2b; D3 ss2d3 = new D3(); ss2d3.sb = "D3.sb"; ss2d3.sd3 = "D3.sd3"; ss2d3.pb = ss2b; ss1d1.pd1 = ss2b; ss1d3.pd3 = ss2d1; ss2d1.pd1 = ss1d3; ss2d3.pd3 = ss1d1; SS1 ss1 = new SS1(); ss1.s = new BSeq(); ss1.s.Add(ss1b); ss1.s.Add(ss1d1); ss1.s.Add(ss1d3); SS2 ss2 = new SS2(); ss2.s = new BSeq(); ss2.s.Add(ss2b); ss2.s.Add(ss2d1); ss2.s.Add(ss2d3); AsyncCallback cb = new AsyncCallback(); testPrx.begin_sequenceTest(ss1, ss2).whenCompleted(cb.response_sequenceTest, cb.exception); cb.check(); ss = cb.rss; } test(ss.c1 != null); B ss1b3 = ss.c1.s[0]; B ss1d5 = ss.c1.s[1]; test(ss.c2 != null); B ss1d6 = ss.c1.s[2]; test(ss.c2 != null); B ss2b3 = ss.c2.s[0]; B ss2d5 = ss.c2.s[1]; B ss2d6 = ss.c2.s[2]; test(ss1b3.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss2b3.pb == ss1b3); test(ss2d6.pb == ss2b3); test(ss2d6.pb == ss2b3); test(ss1b3.ice_id().Equals("::Test::B")); test(ss1d5.ice_id().Equals("::Test::D1")); test(ss1d6.ice_id().Equals("::Test::B")); test(ss2b3.ice_id().Equals("::Test::B")); test(ss2d5.ice_id().Equals("::Test::D1")); test(ss2d6.ice_id().Equals("::Test::B")); } Console.Out.WriteLine("ok"); Console.Out.Write("dictionary slicing... "); Console.Out.Flush(); { try { Dictionary<int, B> bin = new Dictionary<int, B>(); Dictionary<int, B> bout; Dictionary<int, B> ret; int i; for(i = 0; i < 10; ++i) { string s = "D1." + i.ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = d1; d1.sd1 = s; bin[i] = d1; } ret = testPrx.dictionaryTest(bin, out bout); test(bout.Count == 10); for(i = 0; i < 10; ++i) { B b = bout[i * 10]; test(b != null); string s = "D1." + i.ToString(); test(b.sb.Equals(s)); test(b.pb != null); test(b.pb != b); test(b.pb.sb.Equals(s)); test(b.pb.pb == b.pb); } test(ret.Count == 10); for(i = 0; i < 10; ++i) { B b = ret[i * 20]; test(b != null); string s = "D1." + (i * 20).ToString(); test(b.sb.Equals(s)); test(b.pb == (i == 0 ? (B)null : ret[(i - 1) * 20])); D1 d1 = (D1) b; test(d1 != null); test(d1.sd1.Equals(s)); test(d1.pd1 == d1); } } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("dictionary slicing (AMI)... "); Console.Out.Flush(); { Dictionary<int, B> bin = new Dictionary<int, B>(); Dictionary<int, B> bout; Dictionary<int, B> rv; int i; for(i = 0; i < 10; ++i) { string s = "D1." + i.ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = d1; d1.sd1 = s; bin[i] = d1; } AsyncCallback cb = new AsyncCallback(); testPrx.begin_dictionaryTest(bin).whenCompleted(cb.response_dictionaryTest, cb.exception); cb.check(); bout = cb.obdict; rv = cb.rbdict; test(bout.Count == 10); for(i = 0; i < 10; ++i) { B b = bout[i * 10]; test(b != null); string s = "D1." + i.ToString(); test(b.sb.Equals(s)); test(b.pb != null); test(b.pb != b); test(b.pb.sb.Equals(s)); test(b.pb.pb == b.pb); } test(rv.Count == 10); for(i = 0; i < 10; ++i) { B b = rv[i * 20]; test(b != null); string s = "D1." + (i * 20).ToString(); test(b.sb.Equals(s)); test(b.pb == (i == 0 ? (B)null : rv[(i - 1) * 20])); D1 d1 = (D1) b; test(d1 != null); test(d1.sd1.Equals(s)); test(d1.pd1 == d1); } } Console.Out.WriteLine("ok"); Console.Out.Write("base exception thrown as base exception... "); Console.Out.Flush(); { try { testPrx.throwBaseAsBase(); test(false); } catch(BaseException e) { test(e.GetType().FullName.Equals("Test.BaseException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("base exception thrown as base exception (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_throwBaseAsBase().whenCompleted(cb.response, cb.exception_throwBaseAsBase); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("derived exception thrown as base exception... "); Console.Out.Flush(); { try { testPrx.throwDerivedAsBase(); test(false); } catch(DerivedException e) { test(e.GetType().FullName.Equals("Test.DerivedException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("derived exception thrown as base exception (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_throwDerivedAsBase().whenCompleted(cb.response, cb.exception_throwDerivedAsBase); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("derived exception thrown as derived exception... "); Console.Out.Flush(); { try { testPrx.throwDerivedAsDerived(); test(false); } catch(DerivedException e) { test(e.GetType().FullName.Equals("Test.DerivedException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("derived exception thrown as derived exception (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_throwDerivedAsDerived().whenCompleted(cb.response, cb.exception_throwDerivedAsDerived); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("unknown derived exception thrown as base exception... "); Console.Out.Flush(); { try { testPrx.throwUnknownDerivedAsBase(); test(false); } catch(BaseException e) { test(e.GetType().FullName.Equals("Test.BaseException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb d2")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("unknown derived exception thrown as base exception (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_throwUnknownDerivedAsBase().whenCompleted( cb.response, cb.exception_throwUnknownDerivedAsBase); cb.check(); } Console.Out.WriteLine("ok"); Console.Out.Write("forward-declared class... "); Console.Out.Flush(); { try { Forward f; testPrx.useForward(out f); test(f != null); } catch(Exception) { test(false); } } Console.Out.WriteLine("ok"); Console.Out.Write("forward-declared class (AMI)... "); Console.Out.Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_useForward().whenCompleted(cb.response_useForward, cb.exception); cb.check(); } Console.Out.WriteLine("ok"); return testPrx; }
public override void paramTest1(out B p1, out B p2, Ice.Current current) { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D2 d2 = new D2(); d2.pb = d1; d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; d2.pd2 = d1; d1.pb = d2; d1.pd1 = d2; p1 = d1; p2 = d2; }
public static TestIntfPrx allTests(Ice.Communicator communicator, bool collocated) { Write("testing stringToProxy... "); Flush(); Ice.ObjectPrx basePrx = communicator.stringToProxy("Test:default -p 12010 -t 2000"); test(basePrx != null); WriteLine("ok"); Write("testing checked cast... "); Flush(); TestIntfPrx testPrx = TestIntfPrxHelper.checkedCast(basePrx); test(testPrx != null); test(testPrx.Equals(basePrx)); WriteLine("ok"); Write("base as Object... "); Flush(); { Ice.Value 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")); } WriteLine("ok"); Write("base as Object (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_SBaseAsObject().whenCompleted( (Ice.Value o) => { test(o != null); test(o.ice_id().Equals("::Test::SBase")); SBase sb = (SBase) o; test(sb != null); test(sb.sb.Equals("SBase.sb")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { Ice.Value o = testPrx.SBaseAsObjectAsync().Result; test(o != null); test(o.ice_id().Equals("::Test::SBase")); SBase sb = (SBase)o; test(sb != null); test(sb.sb.Equals("SBase.sb")); } WriteLine("ok"); Write("base as base... "); Flush(); { SBase sb; try { sb = testPrx.SBaseAsSBase(); test(sb.sb.Equals("SBase.sb")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("base as base (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_SBaseAsSBase().whenCompleted( (SBase sb) => { test(sb.sb.Equals("SBase.sb")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { SBase sb = testPrx.SBaseAsSBaseAsync().Result; test(sb.sb.Equals("SBase.sb")); } WriteLine("ok"); Write("base with known derived as base... "); 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")); } WriteLine("ok"); Write("base with known derived as base (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_SBSKnownDerivedAsSBase().whenCompleted( (SBase sb) => { test(sb.sb.Equals("SBSKnownDerived.sb")); SBSKnownDerived sbskd = (SBSKnownDerived) sb; test(sbskd != null); test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { SBase sb = testPrx.SBSKnownDerivedAsSBaseAsync().Result; test(sb.sb.Equals("SBSKnownDerived.sb")); SBSKnownDerived sbskd = (SBSKnownDerived)sb; test(sbskd != null); test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); } WriteLine("ok"); Write("base with known derived as known derived... "); Flush(); { SBSKnownDerived sbskd; try { sbskd = testPrx.SBSKnownDerivedAsSBSKnownDerived(); test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("base with known derived as known derived (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_SBSKnownDerivedAsSBSKnownDerived().whenCompleted( (SBSKnownDerived sbskd) => { test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { SBSKnownDerived sbskd = testPrx.SBSKnownDerivedAsSBSKnownDerivedAsync().Result; test(sbskd.sbskd.Equals("SBSKnownDerived.sbskd")); } WriteLine("ok"); Write("base with unknown derived as base... "); Flush(); { SBase sb; try { sb = testPrx.SBSUnknownDerivedAsSBase(); test(sb.sb.Equals("SBSUnknownDerived.sb")); } catch(Exception) { test(false); } } if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { try { SBase sb = testPrx.SBSUnknownDerivedAsSBaseCompact(); test(sb.sb.Equals("SBSUnknownDerived.sb")); } catch(Exception) { test(false); } } else { try { // // This test fails when using the compact format because the instance cannot // be sliced to a known type. // testPrx.SBSUnknownDerivedAsSBaseCompact(); test(false); } catch(Ice.NoValueFactoryException) { // Expected. } catch(Exception) { test(false); } } WriteLine("ok"); Write("base with unknown derived as base (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_SBSUnknownDerivedAsSBase().whenCompleted( (SBase sb) => { test(sb.sb.Equals("SBSUnknownDerived.sb")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { SBase sb = testPrx.SBSUnknownDerivedAsSBaseAsync().Result; test(sb.sb.Equals("SBSUnknownDerived.sb")); } if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { // // This test succeeds for the 1.0 encoding. // { Callback cb = new Callback(); testPrx.begin_SBSUnknownDerivedAsSBaseCompact().whenCompleted( (SBase sb) => { test(sb.sb.Equals("SBSUnknownDerived.sb")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { SBase sb = testPrx.SBSUnknownDerivedAsSBaseCompactAsync().Result; test(sb.sb.Equals("SBSUnknownDerived.sb")); } } else { // // This test fails when using the compact format because the instance cannot // be sliced to a known type. // { Callback cb = new Callback(); testPrx.begin_SBSUnknownDerivedAsSBaseCompact().whenCompleted( (SBase sb) => { test(false); }, (Ice.Exception ex) => { test(ex is Ice.NoValueFactoryException); cb.called(); }); cb.check(); } try { SBase sb = testPrx.SBSUnknownDerivedAsSBaseCompactAsync().Result; } catch(AggregateException ae) { test(ae.InnerException is Ice.NoValueFactoryException); } } WriteLine("ok"); Write("unknown with Object as Object... "); Flush(); { try { Ice.Value o = testPrx.SUnknownAsObject(); test(!testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); test(o is Ice.UnknownSlicedValue); test((o as Ice.UnknownSlicedValue).getUnknownTypeId().Equals("::Test::SUnknown")); testPrx.checkSUnknown(o); } catch(Ice.NoValueFactoryException) { test(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); } catch(Exception) { test(false); } } WriteLine("ok"); Write("unknown with Object as Object (AMI)... "); Flush(); { try { Callback cb = new Callback(); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { { testPrx.begin_SUnknownAsObject().whenCompleted( (Ice.Value o) => { test(false); }, (Ice.Exception ex) => { test(ex.GetType().FullName.Equals("Ice.NoValueFactoryException")); cb.called(); }); } try { var o = testPrx.SUnknownAsObjectAsync().Result; } catch(AggregateException ae) { try { throw ae.InnerException; } catch(Ice.Exception ex) { test(ex.GetType().FullName.Equals("Ice.NoValueFactoryException")); } } } else { { testPrx.begin_SUnknownAsObject().whenCompleted( (Ice.Value o) => { test(o is Ice.UnknownSlicedValue); test((o as Ice.UnknownSlicedValue).getUnknownTypeId().Equals("::Test::SUnknown")); cb.called(); }, (Ice.Exception ex) => { test(false); }); } try { var o = testPrx.SUnknownAsObjectAsync().Result; test(o is Ice.UnknownSlicedValue); test((o as Ice.UnknownSlicedValue).getUnknownTypeId().Equals("::Test::SUnknown")); } catch(AggregateException) { test(false); } } cb.check(); } catch(Exception) { test(false); } } WriteLine("ok"); Write("one-element cycle... "); Flush(); { try { B b = testPrx.oneElementCycle(); test(b != null); test(b.ice_id().Equals("::Test::B")); test(b.sb.Equals("B1.sb")); test(b.pb == b); } catch(Exception) { test(false); } } WriteLine("ok"); Write("one-element cycle (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_oneElementCycle().whenCompleted( (B b) => { test(b != null); test(b.ice_id().Equals("::Test::B")); test(b.sb.Equals("B1.sb")); test(b.pb == b); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var b = testPrx.oneElementCycleAsync().Result; test(b != null); test(b.ice_id().Equals("::Test::B")); test(b.sb.Equals("B1.sb")); test(b.pb == b); } WriteLine("ok"); Write("two-element cycle... "); Flush(); { try { B b1 = testPrx.twoElementCycle(); test(b1 != null); test(b1.ice_id().Equals("::Test::B")); test(b1.sb.Equals("B1.sb")); B b2 = b1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("B2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("two-element cycle (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_twoElementCycle().whenCompleted( (B b1) => { test(b1 != null); test(b1.ice_id().Equals("::Test::B")); test(b1.sb.Equals("B1.sb")); B b2 = b1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("B2.sb")); test(b2.pb == b1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { B b1 = testPrx.twoElementCycleAsync().Result; test(b1 != null); test(b1.ice_id().Equals("::Test::B")); test(b1.sb.Equals("B1.sb")); B b2 = b1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("B2.sb")); test(b2.pb == b1); } WriteLine("ok"); Write("known derived pointer slicing as base... "); Flush(); { try { B b1; b1 = testPrx.D1AsB(); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb != null); test(b1.pb != b1); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 != null); test(d1.pd1 != b1); test(b1.pb == d1.pd1); B b2 = b1.pb; test(b2 != null); test(b2.pb == b1); test(b2.sb.Equals("D2.sb")); test(b2.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("known derived pointer slicing as base (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_D1AsB().whenCompleted( (B b1) => { test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb != null); test(b1.pb != b1); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 != null); test(d1.pd1 != b1); test(b1.pb == d1.pd1); B b2 = b1.pb; test(b2 != null); test(b2.pb == b1); test(b2.sb.Equals("D2.sb")); test(b2.ice_id().Equals("::Test::B")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { B b1 = testPrx.D1AsBAsync().Result; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb != null); test(b1.pb != b1); D1 d1 = (D1)b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 != null); test(d1.pd1 != b1); test(b1.pb == d1.pd1); B b2 = b1.pb; test(b2 != null); test(b2.pb == b1); test(b2.sb.Equals("D2.sb")); test(b2.ice_id().Equals("::Test::B")); } WriteLine("ok"); Write("known derived pointer slicing as derived... "); Flush(); { try { D1 d1; d1 = testPrx.D1AsD1(); test(d1 != null); test(d1.ice_id().Equals("::Test::D1")); test(d1.sb.Equals("D1.sb")); test(d1.pb != null); test(d1.pb != d1); B b2 = d1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb == d1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("known derived pointer slicing as derived (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_D1AsD1().whenCompleted( (D1 d1) => { test(d1 != null); test(d1.ice_id().Equals("::Test::D1")); test(d1.sb.Equals("D1.sb")); test(d1.pb != null); test(d1.pb != d1); B b2 = d1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb == d1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { D1 d1 = testPrx.D1AsD1Async().Result; test(d1 != null); test(d1.ice_id().Equals("::Test::D1")); test(d1.sb.Equals("D1.sb")); test(d1.pb != null); test(d1.pb != d1); B b2 = d1.pb; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb == d1); } WriteLine("ok"); Write("unknown derived pointer slicing as base... "); Flush(); { try { B b2; b2 = testPrx.D2AsB(); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb != null); test(b2.pb != b2); B b1 = b2.pb; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); } catch(Exception) { test(false); } } WriteLine("ok"); Write("unknown derived pointer slicing as base (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_D2AsB().whenCompleted( (B b2) => { test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb != null); test(b2.pb != b2); B b1 = b2.pb; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { B b2 = testPrx.D2AsBAsync().Result; test(b2 != null); test(b2.ice_id().Equals("::Test::B")); test(b2.sb.Equals("D2.sb")); test(b2.pb != null); test(b2.pb != b2); B b1 = b2.pb; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1)b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); } WriteLine("ok"); Write("param ptr slicing with known first... "); Flush(); { try { B b1; B b2; testPrx.paramTest1(out b1, out b2); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("param ptr slicing with known first (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_paramTest1().whenCompleted( (B b1, B b2) => { test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.paramTest1Async().Result; B b1 = result.p1; B b2 = result.p2; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1)b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } WriteLine("ok"); Write("param ptr slicing with unknown first... "); Flush(); { try { B b2; B b1; testPrx.paramTest2(out b2, out b1); test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("param ptr slicing with unknown first (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_paramTest2().whenCompleted( (B b2, B b1) => { test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1) b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.paramTest2Async().Result; B b2 = result.p2; B b1 = result.p1; test(b1 != null); test(b1.ice_id().Equals("::Test::D1")); test(b1.sb.Equals("D1.sb")); test(b1.pb == b2); D1 d1 = (D1)b1; test(d1 != null); test(d1.sd1.Equals("D1.sd1")); test(d1.pd1 == b2); test(b2 != null); test(b2.ice_id().Equals("::Test::B")); // No factory, must be sliced test(b2.sb.Equals("D2.sb")); test(b2.pb == b1); } WriteLine("ok"); Write("return value identity with known first... "); Flush(); { try { B p1; B p2; B ret = testPrx.returnTest1(out p1, out p2); test(ret == p1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("return value identity with known first (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_returnTest1().whenCompleted( (B r, B p1, B p2) => { test(r == p1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.returnTest1Async().Result; test(result.returnValue == result.p1); } WriteLine("ok"); Write("return value identity with unknown first... "); Flush(); { try { B p1; B p2; B ret = testPrx.returnTest2(out p1, out p2); test(ret == p1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("return value identity with unknown first (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_returnTest2().whenCompleted( (B r, B p1, B p2) => { test(r == p1); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.returnTest2Async().Result; test(result.returnValue == result.p2); } WriteLine("ok"); Write("return value identity for input params known first... "); Flush(); { try { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3(d1, d3); test(b1 != null); test(b1.sb.Equals("D1.sb")); test(b1.ice_id().Equals("::Test::D1")); D1 p1 = (D1) b1; test(p1 != null); test(p1.sd1.Equals("D1.sd1")); test(p1.pd1 == b1.pb); B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D3.sb")); test(b2.ice_id().Equals("::Test::B")); // Sliced by server test(b2.pb == b1); try { D3 p3 = (D3) b2; test(false); D3 tmp = p3; p3 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } catch(Exception) { test(false); } } WriteLine("ok"); Write("return value identity for input params known first (AMI)... "); Flush(); { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = null; Callback cb = new Callback(); testPrx.begin_returnTest3(d1, d3).whenCompleted( (B b) => { b1 = b; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); test(b1 != null); test(b1.sb.Equals("D1.sb")); test(b1.ice_id().Equals("::Test::D1")); D1 p1 = (D1) b1; test(p1 != null); test(p1.sd1.Equals("D1.sd1")); test(p1.pd1 == b1.pb); B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D3.sb")); test(b2.ice_id().Equals("::Test::B")); // Sliced by server test(b2.pb == b1); try { D3 p3 = (D3) b2; test(false); D3 tmp = p3; p3 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3Async(d1, d3).Result; test(b1 != null); test(b1.sb.Equals("D1.sb")); test(b1.ice_id().Equals("::Test::D1")); D1 p1 = (D1)b1; test(p1 != null); test(p1.sd1.Equals("D1.sd1")); test(p1.pd1 == b1.pb); B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D3.sb")); test(b2.ice_id().Equals("::Test::B")); // Sliced by server test(b2.pb == b1); try { D3 p3 = (D3)b2; test(false); D3 tmp = p3; p3 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } WriteLine("ok"); Write("return value identity for input params unknown first... "); Flush(); { try { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3(d3, d1); test(b1 != null); test(b1.sb.Equals("D3.sb")); test(b1.ice_id().Equals("::Test::B")); // Sliced by server try { D3 p1 = (D3) b1; test(false); D3 tmp = p1; p1 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D1.sb")); test(b2.ice_id().Equals("::Test::D1")); test(b2.pb == b1); D1 p3 = (D1) b2; test(p3 != null); test(p3.sd1.Equals("D1.sd1")); test(p3.pd1 == b1); test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } catch(Exception) { test(false); } } WriteLine("ok"); Write("return value identity for input params unknown first (AMI)... "); Flush(); { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = null; Callback cb = new Callback(); testPrx.begin_returnTest3(d3, d1).whenCompleted( (B b) => { b1 = b; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); test(b1 != null); test(b1.sb.Equals("D3.sb")); test(b1.ice_id().Equals("::Test::B")); // Sliced by server try { D3 p1 = (D3)b1; test(false); D3 tmp = p1; p1 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D1.sb")); test(b2.ice_id().Equals("::Test::D1")); test(b2.pb == b1); D1 p3 = (D1)b2; test(p3 != null); test(p3.sd1.Equals("D1.sd1")); test(p3.pd1 == b1); test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D3 d3 = new D3(); d3.pb = d1; d3.sb = "D3.sb"; d3.sd3 = "D3.sd3"; d3.pd3 = d1; d1.pb = d3; d1.pd1 = d3; B b1 = testPrx.returnTest3Async(d3, d1).Result; test(b1 != null); test(b1.sb.Equals("D3.sb")); test(b1.ice_id().Equals("::Test::B")); // Sliced by server try { D3 p1 = (D3)b1; test(false); D3 tmp = p1; p1 = tmp; // Stop compiler warning about unused variable. } catch(InvalidCastException) { } B b2 = b1.pb; test(b2 != null); test(b2.sb.Equals("D1.sb")); test(b2.ice_id().Equals("::Test::D1")); test(b2.pb == b1); D1 p3 = (D1)b2; test(p3 != null); test(p3.sd1.Equals("D1.sd1")); test(p3.pd1 == b1); test(b1 != d1); test(b1 != d3); test(b2 != d1); test(b2 != d3); } WriteLine("ok"); Write("remainder unmarshaling (3 instances)... "); Flush(); { try { B p1; B p2; B ret = testPrx.paramTest3(out p1, out p2); test(p1 != null); test(p1.sb.Equals("D2.sb (p1 1)")); test(p1.pb == null); test(p1.ice_id().Equals("::Test::B")); test(p2 != null); test(p2.sb.Equals("D2.sb (p2 1)")); test(p2.pb == null); test(p2.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("D1.sb (p2 2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::D1")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("remainder unmarshaling (3 instances) (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_paramTest3().whenCompleted( (B ret, B p1, B p2) => { test(p1 != null); test(p1.sb.Equals("D2.sb (p1 1)")); test(p1.pb == null); test(p1.ice_id().Equals("::Test::B")); test(p2 != null); test(p2.sb.Equals("D2.sb (p2 1)")); test(p2.pb == null); test(p2.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("D1.sb (p2 2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::D1")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.paramTest3Async().Result; B ret = result.returnValue; B p1 = result.p1; B p2 = result.p2; test(p1 != null); test(p1.sb.Equals("D2.sb (p1 1)")); test(p1.pb == null); test(p1.ice_id().Equals("::Test::B")); test(p2 != null); test(p2.sb.Equals("D2.sb (p2 1)")); test(p2.pb == null); test(p2.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("D1.sb (p2 2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::D1")); } WriteLine("ok"); Write("remainder unmarshaling (4 instances)... "); Flush(); { try { B b; B ret = testPrx.paramTest4(out b); test(b != null); test(b.sb.Equals("D4.sb (1)")); test(b.pb == null); test(b.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("B.sb (2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("remainder unmarshaling (4 instances) (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_paramTest4().whenCompleted( (B ret, B b) => { test(b != null); test(b.sb.Equals("D4.sb (1)")); test(b.pb == null); test(b.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("B.sb (2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::B")); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { var result = testPrx.paramTest4Async().Result; B ret = result.returnValue; B b = result.p; test(b != null); test(b.sb.Equals("D4.sb (1)")); test(b.pb == null); test(b.ice_id().Equals("::Test::B")); test(ret != null); test(ret.sb.Equals("B.sb (2)")); test(ret.pb == null); test(ret.ice_id().Equals("::Test::B")); } WriteLine("ok"); Write("param ptr slicing, instance marshaled in unknown derived as base... "); Flush(); { try { B b1 = new B(); b1.sb = "B.sb(1)"; b1.pb = b1; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = b1; B b2 = new B(); b2.sb = "B.sb(2)"; b2.pb = b1; B ret = testPrx.returnTest3(d3, b2); test(ret != null); test(ret.ice_id().Equals("::Test::B")); test(ret.sb.Equals("D3.sb")); test(ret.pb == ret); } catch(Exception) { test(false); } } WriteLine("ok"); Write("param ptr slicing, instance marshaled in unknown derived as base (AMI)... "); Flush(); { B b1 = new B(); b1.sb = "B.sb(1)"; b1.pb = b1; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = b1; B b2 = new B(); b2.sb = "B.sb(2)"; b2.pb = b1; B rv = null; Callback cb = new Callback(); testPrx.begin_returnTest3(d3, b2).whenCompleted( (B b) => { rv = b; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } { B b1 = new B(); b1.sb = "B.sb(1)"; b1.pb = b1; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = b1; B b2 = new B(); b2.sb = "B.sb(2)"; b2.pb = b1; B rv = testPrx.returnTest3Async(d3, b2).Result; test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } WriteLine("ok"); Write("param ptr slicing, instance marshaled in unknown derived as derived... "); Flush(); { try { D1 d11 = new D1(); d11.sb = "D1.sb(1)"; d11.pb = d11; d11.sd1 = "D1.sd1(1)"; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = d11; D1 d12 = new D1(); d12.sb = "D1.sb(2)"; d12.pb = d12; d12.sd1 = "D1.sd1(2)"; d12.pd1 = d11; B ret = testPrx.returnTest3(d3, d12); test(ret != null); test(ret.ice_id().Equals("::Test::B")); test(ret.sb.Equals("D3.sb")); test(ret.pb == ret); } catch(Exception) { test(false); } } WriteLine("ok"); Write("param ptr slicing, instance marshaled in unknown derived as derived (AMI)... "); Flush(); { D1 d11 = new D1(); d11.sb = "D1.sb(1)"; d11.pb = d11; d11.sd1 = "D1.sd1(1)"; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = d11; D1 d12 = new D1(); d12.sb = "D1.sb(2)"; d12.pb = d12; d12.sd1 = "D1.sd1(2)"; d12.pd1 = d11; B rv = null; Callback cb = new Callback(); testPrx.begin_returnTest3(d3, d12).whenCompleted( (B b) => { rv = b; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } { D1 d11 = new D1(); d11.sb = "D1.sb(1)"; d11.pb = d11; d11.sd1 = "D1.sd1(1)"; D3 d3 = new D3(); d3.sb = "D3.sb"; d3.pb = d3; d3.sd3 = "D3.sd3"; d3.pd3 = d11; D1 d12 = new D1(); d12.sb = "D1.sb(2)"; d12.pb = d12; d12.sd1 = "D1.sd1(2)"; d12.pd1 = d11; B rv = testPrx.returnTest3Async(d3, d12).Result; test(rv != null); test(rv.ice_id().Equals("::Test::B")); test(rv.sb.Equals("D3.sb")); test(rv.pb == rv); } WriteLine("ok"); Write("sequence slicing... "); Flush(); { try { SS3 ss; { B ss1b = new B(); ss1b.sb = "B.sb"; ss1b.pb = ss1b; D1 ss1d1 = new D1(); ss1d1.sb = "D1.sb"; ss1d1.sd1 = "D1.sd1"; ss1d1.pb = ss1b; D3 ss1d3 = new D3(); ss1d3.sb = "D3.sb"; ss1d3.sd3 = "D3.sd3"; ss1d3.pb = ss1b; B ss2b = new B(); ss2b.sb = "B.sb"; ss2b.pb = ss1b; D1 ss2d1 = new D1(); ss2d1.sb = "D1.sb"; ss2d1.sd1 = "D1.sd1"; ss2d1.pb = ss2b; D3 ss2d3 = new D3(); ss2d3.sb = "D3.sb"; ss2d3.sd3 = "D3.sd3"; ss2d3.pb = ss2b; ss1d1.pd1 = ss2b; ss1d3.pd3 = ss2d1; ss2d1.pd1 = ss1d3; ss2d3.pd3 = ss1d1; SS1 ss1 = new SS1(); ss1.s = new B[3]; ss1.s[0] = ss1b; ss1.s[1] = ss1d1; ss1.s[2] = ss1d3; SS2 ss2 = new SS2(); ss2.s = new B[3]; ss2.s[0] = ss2b; ss2.s[1] = ss2d1; ss2.s[2] = ss2d3; ss = testPrx.sequenceTest(ss1, ss2); } test(ss.c1 != null); B ss1b2 = ss.c1.s[0]; B ss1d2 = ss.c1.s[1]; test(ss.c2 != null); B ss1d4 = ss.c1.s[2]; test(ss.c2 != null); B ss2b2 = ss.c2.s[0]; B ss2d2 = ss.c2.s[1]; B ss2d4 = ss.c2.s[2]; test(ss1b2.pb == ss1b2); test(ss1d2.pb == ss1b2); test(ss1d4.pb == ss1b2); test(ss2b2.pb == ss1b2); test(ss2d2.pb == ss2b2); test(ss2d4.pb == ss2b2); test(ss1b2.ice_id().Equals("::Test::B")); test(ss1d2.ice_id().Equals("::Test::D1")); test(ss1d4.ice_id().Equals("::Test::B")); test(ss2b2.ice_id().Equals("::Test::B")); test(ss2d2.ice_id().Equals("::Test::D1")); test(ss2d4.ice_id().Equals("::Test::B")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("sequence slicing (AMI)... "); Flush(); { SS3 ss = null; { B ss1b = new B(); ss1b.sb = "B.sb"; ss1b.pb = ss1b; D1 ss1d1 = new D1(); ss1d1.sb = "D1.sb"; ss1d1.sd1 = "D1.sd1"; ss1d1.pb = ss1b; D3 ss1d3 = new D3(); ss1d3.sb = "D3.sb"; ss1d3.sd3 = "D3.sd3"; ss1d3.pb = ss1b; B ss2b = new B(); ss2b.sb = "B.sb"; ss2b.pb = ss1b; D1 ss2d1 = new D1(); ss2d1.sb = "D1.sb"; ss2d1.sd1 = "D1.sd1"; ss2d1.pb = ss2b; D3 ss2d3 = new D3(); ss2d3.sb = "D3.sb"; ss2d3.sd3 = "D3.sd3"; ss2d3.pb = ss2b; ss1d1.pd1 = ss2b; ss1d3.pd3 = ss2d1; ss2d1.pd1 = ss1d3; ss2d3.pd3 = ss1d1; SS1 ss1 = new SS1(); ss1.s = new B[3]; ss1.s[0] = ss1b; ss1.s[1] = ss1d1; ss1.s[2] = ss1d3; SS2 ss2 = new SS2(); ss2.s = new B[3]; ss2.s[0] = ss2b; ss2.s[1] = ss2d1; ss2.s[2] = ss2d3; Callback cb = new Callback(); testPrx.begin_sequenceTest(ss1, ss2).whenCompleted( (SS3 s) => { ss = s; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } test(ss.c1 != null); B ss1b3 = ss.c1.s[0]; B ss1d5 = ss.c1.s[1]; test(ss.c2 != null); B ss1d6 = ss.c1.s[2]; test(ss.c2 != null); B ss2b3 = ss.c2.s[0]; B ss2d5 = ss.c2.s[1]; B ss2d6 = ss.c2.s[2]; test(ss1b3.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss2b3.pb == ss1b3); test(ss2d6.pb == ss2b3); test(ss2d6.pb == ss2b3); test(ss1b3.ice_id().Equals("::Test::B")); test(ss1d5.ice_id().Equals("::Test::D1")); test(ss1d6.ice_id().Equals("::Test::B")); test(ss2b3.ice_id().Equals("::Test::B")); test(ss2d5.ice_id().Equals("::Test::D1")); test(ss2d6.ice_id().Equals("::Test::B")); } { SS3 ss = null; { B ss1b = new B(); ss1b.sb = "B.sb"; ss1b.pb = ss1b; D1 ss1d1 = new D1(); ss1d1.sb = "D1.sb"; ss1d1.sd1 = "D1.sd1"; ss1d1.pb = ss1b; D3 ss1d3 = new D3(); ss1d3.sb = "D3.sb"; ss1d3.sd3 = "D3.sd3"; ss1d3.pb = ss1b; B ss2b = new B(); ss2b.sb = "B.sb"; ss2b.pb = ss1b; D1 ss2d1 = new D1(); ss2d1.sb = "D1.sb"; ss2d1.sd1 = "D1.sd1"; ss2d1.pb = ss2b; D3 ss2d3 = new D3(); ss2d3.sb = "D3.sb"; ss2d3.sd3 = "D3.sd3"; ss2d3.pb = ss2b; ss1d1.pd1 = ss2b; ss1d3.pd3 = ss2d1; ss2d1.pd1 = ss1d3; ss2d3.pd3 = ss1d1; SS1 ss1 = new SS1(); ss1.s = new B[3]; ss1.s[0] = ss1b; ss1.s[1] = ss1d1; ss1.s[2] = ss1d3; SS2 ss2 = new SS2(); ss2.s = new B[3]; ss2.s[0] = ss2b; ss2.s[1] = ss2d1; ss2.s[2] = ss2d3; ss = testPrx.sequenceTestAsync(ss1, ss2).Result; } test(ss.c1 != null); B ss1b3 = ss.c1.s[0]; B ss1d5 = ss.c1.s[1]; test(ss.c2 != null); B ss1d6 = ss.c1.s[2]; test(ss.c2 != null); B ss2b3 = ss.c2.s[0]; B ss2d5 = ss.c2.s[1]; B ss2d6 = ss.c2.s[2]; test(ss1b3.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss1d6.pb == ss1b3); test(ss2b3.pb == ss1b3); test(ss2d6.pb == ss2b3); test(ss2d6.pb == ss2b3); test(ss1b3.ice_id().Equals("::Test::B")); test(ss1d5.ice_id().Equals("::Test::D1")); test(ss1d6.ice_id().Equals("::Test::B")); test(ss2b3.ice_id().Equals("::Test::B")); test(ss2d5.ice_id().Equals("::Test::D1")); test(ss2d6.ice_id().Equals("::Test::B")); } WriteLine("ok"); Write("dictionary slicing... "); Flush(); { try { Dictionary<int, B> bin = new Dictionary<int, B>(); Dictionary<int, B> bout; Dictionary<int, B> ret; int i; for(i = 0; i < 10; ++i) { string s = "D1." + i.ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = d1; d1.sd1 = s; bin[i] = d1; } ret = testPrx.dictionaryTest(bin, out bout); test(bout.Count == 10); for(i = 0; i < 10; ++i) { B b = bout[i * 10]; test(b != null); string s = "D1." + i.ToString(); test(b.sb.Equals(s)); test(b.pb != null); test(b.pb != b); test(b.pb.sb.Equals(s)); test(b.pb.pb == b.pb); } test(ret.Count == 10); for(i = 0; i < 10; ++i) { B b = ret[i * 20]; test(b != null); string s = "D1." + (i * 20).ToString(); test(b.sb.Equals(s)); test(b.pb == (i == 0 ? (B)null : ret[(i - 1) * 20])); D1 d1 = (D1) b; test(d1 != null); test(d1.sd1.Equals(s)); test(d1.pd1 == d1); } } catch(Exception) { test(false); } } WriteLine("ok"); Write("dictionary slicing (AMI)... "); Flush(); { Dictionary<int, B> bin = new Dictionary<int, B>(); Dictionary<int, B> bout = null; Dictionary<int, B> rv = null; int i; for(i = 0; i < 10; ++i) { string s = "D1." + i.ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = d1; d1.sd1 = s; bin[i] = d1; } Callback cb = new Callback(); testPrx.begin_dictionaryTest(bin).whenCompleted( (Dictionary<int, B> r, Dictionary<int, B> b) => { rv = (Dictionary<int, B>)r; bout = (Dictionary<int, B>)b; cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); test(bout.Count == 10); for(i = 0; i < 10; ++i) { B b = bout[i * 10]; test(b != null); string s = "D1." + i.ToString(); test(b.sb.Equals(s)); test(b.pb != null); test(b.pb != b); test(b.pb.sb.Equals(s)); test(b.pb.pb == b.pb); } test(rv.Count == 10); for(i = 0; i < 10; ++i) { B b = rv[i * 20]; test(b != null); string s = "D1." + (i * 20).ToString(); test(b.sb.Equals(s)); test(b.pb == (i == 0 ? (B)null : rv[(i - 1) * 20])); D1 d1 = (D1) b; test(d1 != null); test(d1.sd1.Equals(s)); test(d1.pd1 == d1); } } { Dictionary<int, B> bin = new Dictionary<int, B>(); Dictionary<int, B> bout = null; Dictionary<int, B> rv = null; int i; for(i = 0; i < 10; ++i) { string s = "D1." + i.ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = d1; d1.sd1 = s; bin[i] = d1; } var result = testPrx.dictionaryTestAsync(bin).Result; rv = result.returnValue; bout = result.bout; test(bout.Count == 10); for(i = 0; i < 10; ++i) { B b = bout[i * 10]; test(b != null); string s = "D1." + i.ToString(); test(b.sb.Equals(s)); test(b.pb != null); test(b.pb != b); test(b.pb.sb.Equals(s)); test(b.pb.pb == b.pb); } test(rv.Count == 10); for(i = 0; i < 10; ++i) { B b = rv[i * 20]; test(b != null); string s = "D1." + (i * 20).ToString(); test(b.sb.Equals(s)); test(b.pb == (i == 0 ? (B)null : rv[(i - 1) * 20])); D1 d1 = (D1)b; test(d1 != null); test(d1.sd1.Equals(s)); test(d1.pd1 == d1); } } WriteLine("ok"); Write("base exception thrown as base exception... "); Flush(); { try { testPrx.throwBaseAsBase(); test(false); } catch(BaseException e) { test(e.GetType().FullName.Equals("Test.BaseException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } WriteLine("ok"); Write("base exception thrown as base exception (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_throwBaseAsBase().whenCompleted( () => { test(false); }, (Ice.Exception ex) => { try { BaseException e = (BaseException)ex; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { try { testPrx.throwBaseAsBaseAsync().Wait(); } catch(AggregateException ae) { try { BaseException e = (BaseException)ae.InnerException; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } } WriteLine("ok"); Write("derived exception thrown as base exception... "); Flush(); { try { testPrx.throwDerivedAsBase(); test(false); } catch(DerivedException e) { test(e.GetType().FullName.Equals("Test.DerivedException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("derived exception thrown as base exception (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_throwDerivedAsBase().whenCompleted( () => { test(false); }, (Ice.Exception ex) => { try { DerivedException e = (DerivedException)ex; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { try { testPrx.throwDerivedAsBaseAsync().Wait(); } catch(AggregateException ae) { try { DerivedException e = (DerivedException)ae.InnerException; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } } WriteLine("ok"); Write("derived exception thrown as derived exception... "); Flush(); { try { testPrx.throwDerivedAsDerived(); test(false); } catch(DerivedException e) { test(e.GetType().FullName.Equals("Test.DerivedException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } WriteLine("ok"); Write("derived exception thrown as derived exception (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_throwDerivedAsDerived().whenCompleted( () => { test(false); }, (Ice.Exception ex) => { try { DerivedException e = (DerivedException)ex; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { try { testPrx.throwDerivedAsDerivedAsync().Wait(); } catch(AggregateException ae) { try { DerivedException e = (DerivedException)ae.InnerException; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb1")); test(e.pb.pb == e.pb); test(e.sde.Equals("sde1")); test(e.pd1 != null); test(e.pd1.sb.Equals("sb2")); test(e.pd1.pb == e.pd1); test(e.pd1.sd1.Equals("sd2")); test(e.pd1.pd1 == e.pd1); } catch(Exception) { test(false); } } } WriteLine("ok"); Write("unknown derived exception thrown as base exception... "); Flush(); { try { testPrx.throwUnknownDerivedAsBase(); test(false); } catch(BaseException e) { test(e.GetType().FullName.Equals("Test.BaseException")); test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb d2")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } WriteLine("ok"); Write("unknown derived exception thrown as base exception (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_throwUnknownDerivedAsBase().whenCompleted( () => { test(false); }, (Ice.Exception ex) => { try { BaseException e = (BaseException)ex; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb d2")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { try { testPrx.throwUnknownDerivedAsBaseAsync().Wait(); } catch(AggregateException ae) { try { BaseException e = (BaseException)ae.InnerException; test(e.sbe.Equals("sbe")); test(e.pb != null); test(e.pb.sb.Equals("sb d2")); test(e.pb.pb == e.pb); } catch(Exception) { test(false); } } } WriteLine("ok"); Write("forward-declared class... "); Flush(); { try { Forward f; testPrx.useForward(out f); test(f != null); } catch(Exception) { test(false); } } WriteLine("ok"); Write("forward-declared class (AMI)... "); Flush(); { Callback cb = new Callback(); testPrx.begin_useForward().whenCompleted( (Forward f) => { test(f != null); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { test(testPrx.useForwardAsync().Result != null); } WriteLine("ok"); Write("preserved classes... "); Flush(); // // Register a factory in order to substitute our own subclass of Preserved. This provides // an easy way to determine how many unmarshaled instances currently exist. // // TODO: We have to install this now (even though it's not necessary yet), because otherwise // the Ice run time will install its own internal factory for Preserved upon receiving the // first instance. // communicator.getValueFactoryManager().add(PreservedFactoryI, Preserved.ice_staticId()); try { // // Server knows the most-derived class PDerived. // PDerived pd = new PDerived(); pd.pi = 3; pd.ps = "preserved"; pd.pb = pd; PBase r = testPrx.exchangePBase(pd); PDerived p2 = r as PDerived; test(p2.pi == 3); test(p2.ps.Equals("preserved")); test(p2.pb == p2); } catch(Ice.OperationNotExistException) { } try { // // Server only knows the base (non-preserved) type, so the object is sliced. // PCUnknown pu = new PCUnknown(); pu.pi = 3; pu.pu = "preserved"; PBase r = testPrx.exchangePBase(pu); test(!(r is PCUnknown)); test(r.pi == 3); } catch(Ice.OperationNotExistException) { } try { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // PCDerived pcd = new PCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; PBase r = testPrx.exchangePBase(pcd); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { test(!(r is PCDerived)); test(r.pi == 3); } else { PCDerived p2 = r as PCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); } } catch(Ice.OperationNotExistException) { } try { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // CompactPCDerived pcd = new CompactPCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; PBase r = testPrx.exchangePBase(pcd); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { test(!(r is CompactPCDerived)); test(r.pi == 3); } else { CompactPCDerived p2 = r as CompactPCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); } } catch(Ice.OperationNotExistException) { } try { // // Send an object that will have multiple preserved slices in the server. // The object will be sliced to Preserved for the 1.0 encoding. // PCDerived3 pcd = new PCDerived3(); pcd.pi = 3; // // Sending more than 254 objects exercises the encoding for object ids. // pcd.pbs = new PBase[300]; int i; for(i = 0; i < 300; ++i) { PCDerived2 p2 = new PCDerived2(); p2.pi = i; p2.pbs = new PBase[] { null }; // Nil reference. This slice should not have an indirection table. p2.pcd2 = i; pcd.pbs[i] = p2; } pcd.pcd2 = pcd.pi; pcd.pcd3 = pcd.pbs[10]; PBase r = testPrx.exchangePBase(pcd); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { test(!(r is PCDerived3)); test(r is Preserved); test(r.pi == 3); } else { PCDerived3 p3 = r as PCDerived3; test(p3.pi == 3); for(i = 0; i < 300; ++i) { PCDerived2 p2 = p3.pbs[i] as PCDerived2; test(p2.pi == i); test(p2.pbs.Length == 1); test(p2.pbs[0] == null); test(p2.pcd2 == i); } test(p3.pcd2 == p3.pi); test(p3.pcd3 == p3.pbs[10]); } } catch(Ice.OperationNotExistException) { } try { // // Obtain an object with preserved slices and send it back to the server. // The preserved slices should be excluded for the 1.0 encoding, otherwise // they should be included. // Preserved p = testPrx.PBSUnknownAsPreserved(); testPrx.checkPBSUnknown(p); if(!testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { (testPrx.ice_encodingVersion(Ice.Util.Encoding_1_0) as TestIntfPrx).checkPBSUnknown(p); } } catch(Ice.OperationNotExistException) { } WriteLine("ok"); Write("preserved classes (AMI)... "); Flush(); { // // Server knows the most-derived class PDerived. // PDerived pd = new PDerived(); pd.pi = 3; pd.ps = "preserved"; pd.pb = pd; Callback cb = new Callback(); testPrx.begin_exchangePBase(pd).whenCompleted( (PBase r) => { PDerived p2 = (PDerived)r; test(p2.pi == 3); test(p2.ps.Equals("preserved")); test(p2.pb == p2); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { // // Server knows the most-derived class PDerived. // PDerived pd = new PDerived(); pd.pi = 3; pd.ps = "preserved"; pd.pb = pd; PDerived p2 = (PDerived)testPrx.exchangePBaseAsync(pd).Result; test(p2.pi == 3); test(p2.ps.Equals("preserved")); test(p2.pb == p2); } { // // Server only knows the base (non-preserved) type, so the object is sliced. // PCUnknown pu = new PCUnknown(); pu.pi = 3; pu.pu = "preserved"; Callback cb = new Callback(); testPrx.begin_exchangePBase(pu).whenCompleted( (PBase r) => { test(!(r is PCUnknown)); test(r.pi == 3); cb.called(); }, (Ice.Exception ex) => { test(false); }); cb.check(); } { // // Server only knows the base (non-preserved) type, so the object is sliced. // PCUnknown pu = new PCUnknown(); pu.pi = 3; pu.pu = "preserved"; PBase r = testPrx.exchangePBaseAsync(pu).Result; test(!(r is PCUnknown)); test(r.pi == 3); } { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // PCDerived pcd = new PCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; Callback cb = new Callback(); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { test(!(r is PCDerived)); test(r.pi == 3); cb.called(); }, (Ice.Exception ex) => { test(false); }); } else { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { PCDerived p2 = r as PCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); cb.called(); }, (Ice.Exception ex) => { test(false); }); } cb.check(); } { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // PCDerived pcd = new PCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { PBase r = testPrx.exchangePBaseAsync(pcd).Result; test(!(r is PCDerived)); test(r.pi == 3); } else { PBase r = testPrx.exchangePBaseAsync(pcd).Result; PCDerived p2 = r as PCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); } } { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // CompactPCDerived pcd = new CompactPCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; Callback cb = new Callback(); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { test(!(r is CompactPCDerived)); test(r.pi == 3); cb.called(); }, (Ice.Exception ex) => { test(false); }); } else { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { CompactPCDerived p2 = r as CompactPCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); cb.called(); }, (Ice.Exception ex) => { test(false); }); } cb.check(); } { // // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // CompactPCDerived pcd = new CompactPCDerived(); pcd.pi = 3; pcd.pbs = new PBase[] { pcd }; if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { PBase r = testPrx.exchangePBaseAsync(pcd).Result; test(!(r is CompactPCDerived)); test(r.pi == 3); } else { PBase r = testPrx.exchangePBaseAsync(pcd).Result; CompactPCDerived p2 = r as CompactPCDerived; test(p2.pi == 3); test(p2.pbs[0] == p2); } } { // // Send an object that will have multiple preserved slices in the server. // The object will be sliced to Preserved for the 1.0 encoding. // PCDerived3 pcd = new PCDerived3(); pcd.pi = 3; // // Sending more than 254 objects exercises the encoding for object ids. // pcd.pbs = new PBase[300]; for(int i = 0; i < 300; ++i) { PCDerived2 p2 = new PCDerived2(); p2.pi = i; p2.pbs = new PBase[] { null }; // Nil reference. This slice should not have an indirection table. p2.pcd2 = i; pcd.pbs[i] = p2; } pcd.pcd2 = pcd.pi; pcd.pcd3 = pcd.pbs[10]; Callback cb = new Callback(); if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { test(!(r is PCDerived3)); test(r is Preserved); test(r.pi == 3); cb.called(); }, (Ice.Exception ex) => { test(false); }); } else { testPrx.begin_exchangePBase(pcd).whenCompleted( (PBase r) => { PCDerived3 p3 = r as PCDerived3; test(p3.pi == 3); for(int i = 0; i < 300; ++i) { PCDerived2 p2 = p3.pbs[i] as PCDerived2; test(p2.pi == i); test(p2.pbs.Length == 1); test(p2.pbs[0] == null); test(p2.pcd2 == i); } test(p3.pcd2 == p3.pi); test(p3.pcd3 == p3.pbs[10]); cb.called(); }, (Ice.Exception ex) => { test(false); }); } cb.check(); } { // // Send an object that will have multiple preserved slices in the server. // The object will be sliced to Preserved for the 1.0 encoding. // PCDerived3 pcd = new PCDerived3(); pcd.pi = 3; // // Sending more than 254 objects exercises the encoding for object ids. // pcd.pbs = new PBase[300]; for(int i = 0; i < 300; ++i) { PCDerived2 p2 = new PCDerived2(); p2.pi = i; p2.pbs = new PBase[] { null }; // Nil reference. This slice should not have an indirection table. p2.pcd2 = i; pcd.pbs[i] = p2; } pcd.pcd2 = pcd.pi; pcd.pcd3 = pcd.pbs[10]; if(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { PBase r = testPrx.exchangePBaseAsync(pcd).Result; test(!(r is PCDerived3)); test(r is Preserved); test(r.pi == 3); } else { PBase r = testPrx.exchangePBaseAsync(pcd).Result; PCDerived3 p3 = r as PCDerived3; test(p3.pi == 3); for(int i = 0; i < 300; ++i) { PCDerived2 p2 = p3.pbs[i] as PCDerived2; test(p2.pi == i); test(p2.pbs.Length == 1); test(p2.pbs[0] == null); test(p2.pcd2 == i); } test(p3.pcd2 == p3.pi); test(p3.pcd3 == p3.pbs[10]); } } try { // // Obtain an object with preserved slices and send it back to the server. // The preserved slices should be excluded for the 1.0 encoding, otherwise // they should be included. // Preserved p = testPrx.PBSUnknownAsPreserved(); testPrx.checkPBSUnknown(p); if(!testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)) { (testPrx.ice_encodingVersion(Ice.Util.Encoding_1_0) as TestIntfPrx).checkPBSUnknown(p); } } catch(Ice.OperationNotExistException) { } WriteLine("ok"); Write("garbage collection for preserved classes... "); Flush(); try { // // Register a factory in order to substitute our own subclass of PNode. This provides // an easy way to determine how many unmarshaled instances currently exist. // communicator.getValueFactoryManager().add((string id) => { if(id.Equals(PNode.ice_staticId())) { return new PNodeI(); } return null; }, PNode.ice_staticId()); // // Relay a graph through the server. // { PNode c = new PNode(); c.next = new PNode(); c.next.next = new PNode(); c.next.next.next = c; test(PNodeI.counter == 0); PNode n = testPrx.exchangePNode(c); test(PNodeI.counter == 3); PNodeI.counter = 0; n.next = null; } // // Obtain a preserved object from the server where the most-derived // type is unknown. The preserved slice refers to a graph of PNode // objects. // { test(PNodeI.counter == 0); Preserved p = testPrx.PBSUnknownAsPreservedWithGraph(); testPrx.checkPBSUnknownWithGraph(p); test(PNodeI.counter == 3); PNodeI.counter = 0; } // // Obtain a preserved object from the server where the most-derived // type is unknown. A data member in the preserved slice refers to the // outer object, so the chain of references looks like this: // // outer.slicedData.outer // { PreservedI.counter = 0; Preserved p = testPrx.PBSUnknown2AsPreservedWithGraph(); testPrx.checkPBSUnknown2WithGraph(p); test(PreservedI.counter == 1); PreservedI.counter = 0; } // // Throw a preserved exception where the most-derived type is unknown. // The preserved exception slice contains a class data member. This // object is also preserved, and its most-derived type is also unknown. // The preserved slice of the object contains a class data member that // refers to itself. // // The chain of references looks like this: // // ex.slicedData.obj.slicedData.obj // try { test(PreservedI.counter == 0); try { testPrx.throwPreservedException(); } catch(PreservedException) { test(PreservedI.counter == 1); } PreservedI.counter = 0; } catch(Exception) { test(false); } } catch(Ice.OperationNotExistException) { } WriteLine("ok"); return testPrx; }
public static int F(ref int x, out int y) { x = 1; y = 2; return y; }
public void M(D0 p0, D1 p1, D2 p2) { /* $ */ }
public override Dictionary<int, B> dictionaryTest(Dictionary<int, B> bin, out Dictionary<int, B> bout, Ice.Current current) { bout = new Dictionary<int, B>(); int i; for(i = 0; i < 10; ++i) { B b = bin[i]; D2 d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } Dictionary<int, B> r = new Dictionary<int, B>(); for(i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = i == 0 ? null : r[(i - 1) * 20]; d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } return r; }
public override void dictionaryTest_async(AMD_TestIntf_dictionaryTest cb, Dictionary<int, B> bin, Ice.Current current) { Dictionary<int, B> bout = new Dictionary<int, B>(); int i; for(i = 0; i < 10; ++i) { B b = bin[i]; D2 d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } Dictionary<int, B> r = new Dictionary<int, B>(); for(i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); D1 d1 = new D1(); d1.sb = s; d1.pb = (i == 0 ? null : r[(i - 1) * 20]); d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } cb.ice_response(r, bout); }
public override void returnTest2_async(AMD_TestIntf_returnTest2 cb, Ice.Current current) { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D2 d2 = new D2(); d2.pb = d1; d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; d2.pd2 = d1; d1.pb = d2; d1.pd1 = d2; cb.ice_response(d1, d1, d2); }
public C (D1 d) { }
public override B paramTest3(out B p1, out B p2, Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; p1 = d2; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; p2 = d4; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return d3; }
public void response_D1AsD1(D1 d1) { AllTests.test(d1 != null); AllTests.test(d1.ice_id().Equals("::Test::D1")); AllTests.test(d1.sb.Equals("D1.sb")); AllTests.test(d1.pb != null); AllTests.test(d1.pb != d1); B b2 = d1.pb; AllTests.test(b2 != null); AllTests.test(b2.ice_id().Equals("::Test::B")); AllTests.test(b2.sb.Equals("D2.sb")); AllTests.test(b2.pb == d1); callback.called(); }
static void Foo (D1 d) { d (); }
static int Foo (D1 d) { return 1; }
public override Task<B> D1AsBAsync(Ice.Current current) { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D2 d2 = new D2(); d2.pb = d1; d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; d2.pd2 = d1; d1.pb = d2; d1.pd1 = d2; return Task.FromResult<B>(d1); }
public override Task<TestIntf_ParamTest3Result> paramTest3Async(Ice.Current current) { D2 d2 = new D2(); d2.sb = "D2.sb (p1 1)"; d2.pb = null; d2.sd2 = "D2.sd2 (p1 1)"; D1 d1 = new D1(); d1.sb = "D1.sb (p1 2)"; d1.pb = null; d1.sd1 = "D1.sd2 (p1 2)"; d1.pd1 = null; d2.pd2 = d1; D2 d4 = new D2(); d4.sb = "D2.sb (p2 1)"; d4.pb = null; d4.sd2 = "D2.sd2 (p2 1)"; D1 d3 = new D1(); d3.sb = "D1.sb (p2 2)"; d3.pb = null; d3.sd1 = "D1.sd2 (p2 2)"; d3.pd1 = null; d4.pd2 = d3; return Task.FromResult<TestIntf_ParamTest3Result>(new TestIntf_ParamTest3Result(d3, d2, d4)); }
public void CloningDelegateToTheSameTypeCreatesANewClone() { int x = 0; D1 d1 = () => x++; D1 d2 = new D1(d1); d1(); d2(); Assert.IsFalse(d1 == d2); Assert.AreEqual(x, 2); }
public override Task<TestIntf_DictionaryTestResult> dictionaryTestAsync(Dictionary<int, B> bin, Ice.Current current) { var bout = new Dictionary<int, B>(); int i; for(i = 0; i < 10; ++i) { B b = bin[i]; var d2 = new D2(); d2.sb = b.sb; d2.pb = b.pb; d2.sd2 = "D2"; d2.pd2 = d2; bout[i * 10] = d2; } var r = new Dictionary<int, B>(); for(i = 0; i < 10; ++i) { string s = "D1." + (i * 20).ToString(); var d1 = new D1(); d1.sb = s; d1.pb = (i == 0 ? null : r[(i - 1) * 20]); d1.sd1 = s; d1.pd1 = d1; r[i * 20] = d1; } return Task.FromResult<TestIntf_DictionaryTestResult>(new TestIntf_DictionaryTestResult(r, bout)); }
public override Task<TestIntf_ReturnTest2Result> returnTest2Async(Ice.Current current) { D1 d1 = new D1(); d1.sb = "D1.sb"; d1.sd1 = "D1.sd1"; D2 d2 = new D2(); d2.pb = d1; d2.sb = "D2.sb"; d2.sd2 = "D2.sd2"; d2.pd2 = d1; d1.pb = d2; d1.pd1 = d2; return Task.FromResult<TestIntf_ReturnTest2Result>(new TestIntf_ReturnTest2Result(d1, d1, d2)); }