internal static void onewaysAMI(Ice.Communicator communicator, Test.MyClassPrx p) { p = Test.MyClassPrxHelper.uncheckedCast(p.ice_oneway()); { AMI_MyClass_opVoidI cb = new AMI_MyClass_opVoidI(); p.opVoid_async(cb); // Let's check if we can reuse the same callback object for another call. p.opVoid_async(cb); } { AMI_MyClass_opIdempotentI cb = new AMI_MyClass_opIdempotentI(); p.opIdempotent_async(cb); } { AMI_MyClass_opNonmutatingI cb = new AMI_MyClass_opNonmutatingI(); p.opNonmutating_async(cb); } { // Check that a call to a void operation raises NoEndpointException // in the ice_exception() callback instead of at the point of call. Test.MyClassPrx indirect = Test.MyClassPrxHelper.uncheckedCast(p.ice_adapterId("dummy")); AMI_MyClass_opVoidExI cb = new AMI_MyClass_opVoidExI(); try { indirect.opVoid_async(cb); } catch(System.Exception) { test(false); } cb.check(); } { AMI_MyClass_opByteExI cb = new AMI_MyClass_opByteExI(); p.opByte_async(cb, (byte)0xff, (byte)0x0f); cb.check(); } }
internal static void twowaysAMI(Ice.Communicator communicator, Test.MyClassPrx p) { { // Check that a call to a void operation raises NoEndpointException // in the ice_exception() callback instead of at the point of call. Test.MyClassPrx indirect = Test.MyClassPrxHelper.uncheckedCast(p.ice_adapterId("dummy")); AMI_MyClass_opVoidExI cb = new AMI_MyClass_opVoidExI(); try { test(!indirect.opVoid_async(cb)); } catch(Ice.Exception) { test(false); } cb.check(); } { // Check that a call to a twoway operation raises NoEndpointException // in the ice_exception() callback instead of at the point of call. Test.MyClassPrx indirect = Test.MyClassPrxHelper.uncheckedCast(p.ice_adapterId("dummy")); AMI_MyClass_opByteExI cb = new AMI_MyClass_opByteExI(); try { test(!indirect.opByte_async(cb, (byte)0, (byte)0)); } catch(Ice.Exception) { test(false); } cb.check(); } { AMI_MyClass_opVoidI cb = new AMI_MyClass_opVoidI(); p.opVoid_async(cb); cb.check(); // Let's check if we can reuse the callback object for another call. p.opVoid_async(cb); cb.check(); } { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = communicator.getProperties().ice_clone_(); Ice.Communicator ic = Ice.Util.initialize(initData); Ice.ObjectPrx obj = ic.stringToProxy(p.ToString()); Test.MyClassPrx p2 = Test.MyClassPrxHelper.checkedCast(obj); ic.destroy(); AMI_MyClass_opVoidI cb = new AMI_MyClass_opVoidI(); try { test(!p2.opVoid_async(cb)); test(false); } catch(Ice.CommunicatorDestroyedException) { // Expected. } } { AMI_MyClass_opByteI cb = new AMI_MyClass_opByteI(); p.opByte_async(cb, 0xff, 0x0f); cb.check(); } { AMI_MyClass_opBoolI cb = new AMI_MyClass_opBoolI(); p.opBool_async(cb, true, false); cb.check(); } { AMI_MyClass_opShortIntLongI cb = new AMI_MyClass_opShortIntLongI(); p.opShortIntLong_async(cb, (short) 10, 11, 12L); cb.check(); } { AMI_MyClass_opFloatDoubleI cb = new AMI_MyClass_opFloatDoubleI(); p.opFloatDouble_async(cb, 3.14f, 1.1e10); cb.check(); } { AMI_MyClass_opStringI cb = new AMI_MyClass_opStringI(); p.opString_async(cb, "hello", "world"); cb.check(); } { AMI_MyClass_opMyEnumI cb = new AMI_MyClass_opMyEnumI(); p.opMyEnum_async(cb, Test.MyEnum.enum2); cb.check(); } { AMI_MyClass_opMyClassI cb = new AMI_MyClass_opMyClassI(communicator); p.opMyClass_async(cb, p); cb.check(); } { Test.Structure si1 = new Test.Structure(); si1.p = p; si1.e = Test.MyEnum.enum3; si1.s = new Test.AnotherStruct(); si1.s.s = "abc"; Test.Structure si2 = new Test.Structure(); si2.p = null; si2.e = Test.MyEnum.enum2; si2.s = new Test.AnotherStruct(); si2.s.s = "def"; AMI_MyClass_opStructI cb = new AMI_MyClass_opStructI(communicator); p.opStruct_async(cb, si1, si2); cb.check(); } { Test.ByteS bsi1 = new Test.ByteS(new byte[] { 0x01, 0x11, 0x12, 0x22 }); Test.ByteS bsi2 = new Test.ByteS(new byte[] { 0xf1, 0xf2, 0xf3, 0xf4 }); AMI_MyClass_opByteSI cb = new AMI_MyClass_opByteSI(); p.opByteS_async(cb, bsi1, bsi2); cb.check(); } { Test.BoolS bsi1 = new Test.BoolS(new bool[] { true, true, false }); Test.BoolS bsi2 = new Test.BoolS(new bool[] { false }); AMI_MyClass_opBoolSI cb = new AMI_MyClass_opBoolSI(); p.opBoolS_async(cb, bsi1, bsi2); cb.check(); } { Test.ShortS ssi = new Test.ShortS(new short[] { 1, 2, 3 }); Test.IntS isi = new Test.IntS(new int[] { 5, 6, 7, 8 }); Test.LongS lsi = new Test.LongS(new long[] { 10, 30, 20 }); AMI_MyClass_opShortIntLongSI cb = new AMI_MyClass_opShortIntLongSI(); p.opShortIntLongS_async(cb, ssi, isi, lsi); cb.check(); } { Test.FloatS fsi = new Test.FloatS(new float[] { 3.14f, 1.11f }); Test.DoubleS dsi = new Test.DoubleS(new double[] { 1.1e10, 1.2e10, 1.3e10 }); AMI_MyClass_opFloatDoubleSI cb = new AMI_MyClass_opFloatDoubleSI(); p.opFloatDoubleS_async(cb, fsi, dsi); cb.check(); } { Test.StringS ssi1 = new Test.StringS(new string[] { "abc", "de", "fghi" }); Test.StringS ssi2 = new Test.StringS(new string[] { "xyz" }); AMI_MyClass_opStringSI cb = new AMI_MyClass_opStringSI(); p.opStringS_async(cb, ssi1, ssi2); cb.check(); } { Test.ByteSS bsi1 = new Test.ByteSS(); bsi1.Add(new Test.ByteS()); bsi1.Add(new Test.ByteS()); bsi1[0].Add(0x01); bsi1[0].Add(0x11); bsi1[0].Add(0x12); bsi1[1].Add(0xff); Test.ByteSS bsi2 = new Test.ByteSS(); bsi2.Add(new Test.ByteS()); bsi2.Add(new Test.ByteS()); bsi2[0].Add(0x0e); bsi2[1].Add(0xf2); bsi2[1].Add(0xf1); AMI_MyClass_opByteSSI cb = new AMI_MyClass_opByteSSI(); p.opByteSS_async(cb, bsi1, bsi2); cb.check(); } { Test.FloatSS fsi = new Test.FloatSS(); fsi.Add(new Test.FloatS(new float[] { 3.14f })); fsi.Add(new Test.FloatS(new float[] { 1.11f })); fsi.Add(new Test.FloatS(new float[] { })); Test.DoubleSS dsi = new Test.DoubleSS(); dsi.Add(new Test.DoubleS(new double[] { 1.1E10, 1.2E10, 1.3E10 })); AMI_MyClass_opFloatDoubleSSI cb = new AMI_MyClass_opFloatDoubleSSI(); p.opFloatDoubleSS_async(cb, fsi, dsi); cb.check(); } { Test.StringSS ssi1 = new Test.StringSS(); ssi1.Add(new Test.StringS()); ssi1.Add(new Test.StringS()); ssi1[0].Add("abc"); ssi1[1].Add("de"); ssi1[1].Add("fghi"); Test.StringSS ssi2 = new Test.StringSS(); ssi2.Add(new Test.StringS()); ssi2.Add(new Test.StringS()); ssi2.Add(new Test.StringS()); ssi2[2].Add("xyz"); AMI_MyClass_opStringSSI cb = new AMI_MyClass_opStringSSI(); p.opStringSS_async(cb, ssi1, ssi2); cb.check(); } { Test.StringSS[] sssi1 = { new Test.StringSS(), new Test.StringSS() }; sssi1[0].Add(new Test.StringS()); sssi1[0].Add(new Test.StringS()); sssi1[0][0].Add("abc"); sssi1[0][0].Add("de"); sssi1[0][1].Add("xyz"); sssi1[1].Add(new Test.StringS()); sssi1[1][0].Add("hello"); Test.StringSS[] sssi2 = { new Test.StringSS(), new Test.StringSS(), new Test.StringSS() }; sssi2[0].Add(new Test.StringS()); sssi2[0].Add(new Test.StringS()); sssi2[0][0].Add(""); sssi2[0][0].Add(""); sssi2[0][1].Add("abcd"); sssi2[1].Add(new Test.StringS()); sssi2[1][0].Add(""); AMI_MyClass_opStringSSSI cb = new AMI_MyClass_opStringSSSI(); p.opStringSSS_async(cb, sssi1, sssi2); cb.check(); } { Dictionary<byte, bool> di1 = new Dictionary<byte, bool>(); di1[10] = true; di1[100] = false; Dictionary<byte, bool> di2 = new Dictionary<byte, bool>(); // di2[10] = true; // Disabled since new dictionary mapping. di2[11] = false; di2[101] = true; AMI_MyClass_opByteBoolDI cb = new AMI_MyClass_opByteBoolDI(); p.opByteBoolD_async(cb, di1, di2); cb.check(); } { Dictionary<short, int> di1 = new Dictionary<short, int>(); di1[110] = -1; di1[1100] = 123123; Dictionary<short, int> di2 = new Dictionary<short, int>(); // di2[110] = -1; // Disabled since new dictionary mapping. di2[111] = -100; di2[1101] = 0; AMI_MyClass_opShortIntDI cb = new AMI_MyClass_opShortIntDI(); p.opShortIntD_async(cb, di1, di2); cb.check(); } { Dictionary<long, float> di1 = new Dictionary<long, float>(); di1[999999110L] = -1.1f; di1[999999111L] = 123123.2f; Dictionary<long, float> di2 = new Dictionary<long, float>(); // di2[999999110L] = -1.1f; // Disabled since new dictionary mapping. di2[999999120L] = -100.4f; di2[999999130L] = 0.5f; AMI_MyClass_opLongFloatDI cb = new AMI_MyClass_opLongFloatDI(); p.opLongFloatD_async(cb, di1, di2); cb.check(); } { Dictionary<string, string> di1 = new Dictionary<string, string>(); di1["foo"] = "abc -1.1"; di1["bar"] = "abc 123123.2"; Dictionary<string, string> di2 = new Dictionary<string, string>(); // di2["foo"] = "abc -1.1"; // Disabled since new dictionary mapping di2["FOO"] = "abc -100.4"; di2["BAR"] = "abc 0.5"; AMI_MyClass_opStringStringDI cb = new AMI_MyClass_opStringStringDI(); p.opStringStringD_async(cb, di1, di2); cb.check(); } { Dictionary<string, Test.MyEnum> di1 = new Dictionary<string, Test.MyEnum>(); di1["abc"] = Test.MyEnum.enum1; di1[""] = Test.MyEnum.enum2; Dictionary<string, Test.MyEnum> di2 = new Dictionary<string, Test.MyEnum>(); // di2["abc"] = Test.MyEnum.enum1; // Disabled since new dictionary mapping di2["qwerty"] = Test.MyEnum.enum3; di2["Hello!!"] = Test.MyEnum.enum2; AMI_MyClass_opStringMyEnumDI cb = new AMI_MyClass_opStringMyEnumDI(); p.opStringMyEnumD_async(cb, di1, di2); cb.check(); } { Dictionary<Test.MyEnum, string> di1 = new Dictionary<Test.MyEnum, string>(); di1[Test.MyEnum.enum1] = "abc"; Dictionary<Test.MyEnum, string> di2 = new Dictionary<Test.MyEnum, string>(); di2[Test.MyEnum.enum2] = "Hello!!"; di2[Test.MyEnum.enum3] = "qwerty"; AMI_MyClass_opMyEnumStringDI cb = new AMI_MyClass_opMyEnumStringDI(); p.opMyEnumStringD_async(cb, di1, di2); cb.check(); } { Test.MyStruct s11 = new Test.MyStruct(1, 1); Test.MyStruct s12 = new Test.MyStruct(1, 2); Dictionary<Test.MyStruct, Test.MyEnum> di1 = new Dictionary<Test.MyStruct, Test.MyEnum>(); di1[s11] = Test.MyEnum.enum1; di1[s12] = Test.MyEnum.enum2; Test.MyStruct s22 = new Test.MyStruct(2, 2); Test.MyStruct s23 = new Test.MyStruct(2, 3); Dictionary<Test.MyStruct, Test.MyEnum> di2 = new Dictionary<Test.MyStruct, Test.MyEnum>(); di2[s22] = Test.MyEnum.enum3; di2[s23] = Test.MyEnum.enum2; AMI_MyClass_opMyStructMyEnumDI cb = new AMI_MyClass_opMyStructMyEnumDI(); p.opMyStructMyEnumD_async(cb, di1, di2); cb.check(); } { int[] lengths = new int[] {0, 1, 2, 126, 127, 128, 129, 253, 254, 255, 256, 257, 1000}; for(int l = 0; l < lengths.Length; ++l) { Test.IntS s = new Test.IntS(); for(int i = 0; i < lengths[l]; ++i) { s.Add(i); } AMI_MyClass_opIntSI cb = new AMI_MyClass_opIntSI(lengths[l]); p.opIntS_async(cb, s); cb.check(); } } { Dictionary<string, string> ctx = new Dictionary<string, string>(); ctx["one"] = "ONE"; ctx["two"] = "TWO"; ctx["three"] = "THREE"; { test(p.ice_getContext().Count == 0); AMI_MyClass_opContextNotEqualI cb = new AMI_MyClass_opContextNotEqualI(ctx); p.opContext_async(cb); cb.check(); } { test(p.ice_getContext().Count == 0); AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(ctx); p.opContext_async(cb, ctx); cb.check(); } Test.MyClassPrx p2 = Test.MyClassPrxHelper.checkedCast(p.ice_context(ctx)); test(Ice.CollectionComparer.Equals(p2.ice_getContext(), ctx)); { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(ctx); p2.opContext_async(cb); cb.check(); } { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(ctx); p2.opContext_async(cb, ctx); cb.check(); } } { // // Test implicit context propagation // string[] impls = {"Shared", "PerThread"}; for(int i = 0; i < 2; i++) { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = communicator.getProperties().ice_clone_(); initData.properties.setProperty("Ice.ImplicitContext", impls[i]); Ice.Communicator ic = Ice.Util.initialize(initData); Dictionary<string, string> ctx = new Dictionary<string, string>(); ctx["one"] = "ONE"; ctx["two"] = "TWO"; ctx["three"] = "THREE"; Test.MyClassPrx p3 = Test.MyClassPrxHelper.uncheckedCast( ic.stringToProxy("test:default -p 12010")); ic.getImplicitContext().setContext(ctx); test(Ice.CollectionComparer.Equals(ic.getImplicitContext().getContext(), ctx)); { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(ctx); p3.opContext_async(cb); cb.check(); } ic.getImplicitContext().put("zero", "ZERO"); ctx = ic.getImplicitContext().getContext(); { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(ctx); p3.opContext_async(cb); cb.check(); } Dictionary<string, string> prxContext = new Dictionary<string, string>(); prxContext["one"] = "UN"; prxContext["four"] = "QUATRE"; Dictionary<string, string> combined = new Dictionary<string, string>(prxContext); foreach(KeyValuePair<string, string> e in ctx) { try { combined.Add(e.Key, e.Value); } catch(System.ArgumentException) { // Ignore. } } test(combined["one"].Equals("UN")); p3 = Test.MyClassPrxHelper.uncheckedCast(p3.ice_context(prxContext)); ic.getImplicitContext().setContext(null); { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(prxContext); p3.opContext_async(cb); cb.check(); } ic.getImplicitContext().setContext(ctx); { AMI_MyClass_opContextEqualI cb = new AMI_MyClass_opContextEqualI(combined); p3.opContext_async(cb); cb.check(); } ic.getImplicitContext().setContext(null); ic.destroy(); } } { AMI_MyClass_opIdempotentI cb = new AMI_MyClass_opIdempotentI(); p.opIdempotent_async(cb); cb.check(); } { AMI_MyClass_opNonmutatingI cb = new AMI_MyClass_opNonmutatingI(); p.opNonmutating_async(cb); cb.check(); } { Test.MyDerivedClassPrx derived = Test.MyDerivedClassPrxHelper.checkedCast(p); test(derived != null); AMI_MyDerivedClass_opDerivedI cb = new AMI_MyDerivedClass_opDerivedI(); derived.opDerived_async(cb); cb.check(); } }