1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 using System;
6 using System.Collections.Generic;
7 using System.Threading.Tasks;
8 using Test;
9 
10 public sealed class TestI : TestIntfDisp_
11 {
test(bool b)12     private static void test(bool b)
13     {
14         if(!b)
15         {
16             throw new Exception();
17         }
18     }
19 
shutdownAsync(Ice.Current current)20     public override Task shutdownAsync(Ice.Current current)
21     {
22         current.adapter.getCommunicator().shutdown();
23         return null;
24     }
25 
26     public override Task<Ice.Value>
SBaseAsObjectAsync(Ice.Current current)27     SBaseAsObjectAsync(Ice.Current current)
28     {
29         return Task.FromResult<Ice.Value>(new SBase("SBase.sb"));
30     }
31 
SBaseAsSBaseAsync(Ice.Current current)32     public override Task<SBase> SBaseAsSBaseAsync(Ice.Current current)
33     {
34         return Task.FromResult<SBase>(new SBase("SBase.sb"));
35     }
36 
37     public override Task<SBase>
SBSKnownDerivedAsSBaseAsync(Ice.Current current)38     SBSKnownDerivedAsSBaseAsync(Ice.Current current)
39     {
40         return Task.FromResult<SBase>(new SBSKnownDerived("SBSKnownDerived.sb", "SBSKnownDerived.sbskd"));
41     }
42 
43     public override Task<SBSKnownDerived>
SBSKnownDerivedAsSBSKnownDerivedAsync(Ice.Current current)44     SBSKnownDerivedAsSBSKnownDerivedAsync(Ice.Current current)
45     {
46         return Task.FromResult<SBSKnownDerived>(new SBSKnownDerived("SBSKnownDerived.sb", "SBSKnownDerived.sbskd"));
47     }
48 
49     public override Task<SBase>
SBSUnknownDerivedAsSBaseAsync(Ice.Current current)50     SBSUnknownDerivedAsSBaseAsync(Ice.Current current)
51     {
52         return Task.FromResult<SBase>(new SBSUnknownDerived("SBSUnknownDerived.sb", "SBSUnknownDerived.sbsud"));
53     }
54 
55     public override Task<SBase>
SBSUnknownDerivedAsSBaseCompactAsync(Ice.Current current)56     SBSUnknownDerivedAsSBaseCompactAsync(Ice.Current current)
57     {
58         return Task.FromResult<SBase>(new SBSUnknownDerived("SBSUnknownDerived.sb", "SBSUnknownDerived.sbsud"));
59     }
60 
SUnknownAsObjectAsync(Ice.Current current)61     public override Task<Ice.Value> SUnknownAsObjectAsync(Ice.Current current)
62     {
63         var su = new SUnknown("SUnknown.su", null);
64         su.cycle = su;
65         return Task.FromResult<Ice.Value>(su);
66     }
67 
checkSUnknownAsync(Ice.Value obj, Ice.Current current)68     public override Task checkSUnknownAsync(Ice.Value obj, Ice.Current current)
69     {
70         if(current.encoding.Equals(Ice.Util.Encoding_1_0))
71         {
72             test(!(obj is SUnknown));
73         }
74         else
75         {
76             SUnknown su = obj as SUnknown;
77             test(su.su.Equals("SUnknown.su"));
78         }
79         return null;
80     }
81 
oneElementCycleAsync(Ice.Current current)82     public override Task<B> oneElementCycleAsync(Ice.Current current)
83     {
84         B b = new B();
85         b.sb = "B1.sb";
86         b.pb = b;
87         return Task.FromResult<B>(b);
88     }
89 
twoElementCycleAsync(Ice.Current current)90     public override Task<B> twoElementCycleAsync(Ice.Current current)
91     {
92         B b1 = new B();
93         b1.sb = "B1.sb";
94         B b2 = new B();
95         b2.sb = "B2.sb";
96         b2.pb = b1;
97         b1.pb = b2;
98         return Task.FromResult<B>(b1);
99     }
100 
D1AsBAsync(Ice.Current current)101     public override Task<B> D1AsBAsync(Ice.Current current)
102     {
103         D1 d1 = new D1();
104         d1.sb = "D1.sb";
105         d1.sd1 = "D1.sd1";
106         D2 d2 = new D2();
107         d2.pb = d1;
108         d2.sb = "D2.sb";
109         d2.sd2 = "D2.sd2";
110         d2.pd2 = d1;
111         d1.pb = d2;
112         d1.pd1 = d2;
113         return Task.FromResult<B>(d1);
114     }
115 
D1AsD1Async(Ice.Current current)116     public override Task<D1> D1AsD1Async(Ice.Current current)
117     {
118         D1 d1 = new D1();
119         d1.sb = "D1.sb";
120         d1.sd1 = "D1.sd1";
121         D2 d2 = new D2();
122         d2.pb = d1;
123         d2.sb = "D2.sb";
124         d2.sd2 = "D2.sd2";
125         d2.pd2 = d1;
126         d1.pb = d2;
127         d1.pd1 = d2;
128         return Task.FromResult<D1>(d1);
129     }
130 
D2AsBAsync(Ice.Current current)131     public override Task<B> D2AsBAsync(Ice.Current current)
132     {
133         D2 d2 = new D2();
134         d2.sb = "D2.sb";
135         d2.sd2 = "D2.sd2";
136         D1 d1 = new D1();
137         d1.pb = d2;
138         d1.sb = "D1.sb";
139         d1.sd1 = "D1.sd1";
140         d1.pd1 = d2;
141         d2.pb = d1;
142         d2.pd2 = d1;
143         return Task.FromResult<B>(d2);
144     }
145 
146     public override Task<TestIntf_ParamTest1Result>
paramTest1Async(Ice.Current current)147     paramTest1Async(Ice.Current current)
148     {
149         D1 d1 = new D1();
150         d1.sb = "D1.sb";
151         d1.sd1 = "D1.sd1";
152         D2 d2 = new D2();
153         d2.pb = d1;
154         d2.sb = "D2.sb";
155         d2.sd2 = "D2.sd2";
156         d2.pd2 = d1;
157         d1.pb = d2;
158         d1.pd1 = d2;
159         return Task.FromResult<TestIntf_ParamTest1Result>(new TestIntf_ParamTest1Result(d1, d2));
160     }
161 
162     public override Task<TestIntf_ParamTest2Result>
paramTest2Async(Ice.Current current)163     paramTest2Async(Ice.Current current)
164     {
165         D1 d1 = new D1();
166         d1.sb = "D1.sb";
167         d1.sd1 = "D1.sd1";
168         D2 d2 = new D2();
169         d2.pb = d1;
170         d2.sb = "D2.sb";
171         d2.sd2 = "D2.sd2";
172         d2.pd2 = d1;
173         d1.pb = d2;
174         d1.pd1 = d2;
175         return Task.FromResult<TestIntf_ParamTest2Result>(new TestIntf_ParamTest2Result(d2, d1));
176     }
177 
178     public override Task<TestIntf_ParamTest3Result>
paramTest3Async(Ice.Current current)179     paramTest3Async(Ice.Current current)
180     {
181         D2 d2 = new D2();
182         d2.sb = "D2.sb (p1 1)";
183         d2.pb = null;
184         d2.sd2 = "D2.sd2 (p1 1)";
185 
186         D1 d1 = new D1();
187         d1.sb = "D1.sb (p1 2)";
188         d1.pb = null;
189         d1.sd1 = "D1.sd2 (p1 2)";
190         d1.pd1 = null;
191         d2.pd2 = d1;
192 
193         D2 d4 = new D2();
194         d4.sb = "D2.sb (p2 1)";
195         d4.pb = null;
196         d4.sd2 = "D2.sd2 (p2 1)";
197 
198         D1 d3 = new D1();
199         d3.sb = "D1.sb (p2 2)";
200         d3.pb = null;
201         d3.sd1 = "D1.sd2 (p2 2)";
202         d3.pd1 = null;
203         d4.pd2 = d3;
204 
205         return Task.FromResult<TestIntf_ParamTest3Result>(new TestIntf_ParamTest3Result(d3, d2, d4));
206     }
207 
208     public override Task<TestIntf_ParamTest4Result>
paramTest4Async(Ice.Current current)209     paramTest4Async(Ice.Current current)
210     {
211         D4 d4 = new D4();
212         d4.sb = "D4.sb (1)";
213         d4.pb = null;
214         d4.p1 = new B();
215         d4.p1.sb = "B.sb (1)";
216         d4.p2 = new B();
217         d4.p2.sb = "B.sb (2)";
218         return Task.FromResult<TestIntf_ParamTest4Result>(new TestIntf_ParamTest4Result(d4.p2, d4));
219     }
220 
221     public override Task<TestIntf_ReturnTest1Result>
returnTest1Async(Ice.Current current)222     returnTest1Async(Ice.Current current)
223     {
224         D1 d1 = new D1();
225         d1.sb = "D1.sb";
226         d1.sd1 = "D1.sd1";
227         D2 d2 = new D2();
228         d2.pb = d1;
229         d2.sb = "D2.sb";
230         d2.sd2 = "D2.sd2";
231         d2.pd2 = d1;
232         d1.pb = d2;
233         d1.pd1 = d2;
234         return Task.FromResult<TestIntf_ReturnTest1Result>(new TestIntf_ReturnTest1Result(d2, d2, d1));
235     }
236 
237     public override Task<TestIntf_ReturnTest2Result>
returnTest2Async(Ice.Current current)238     returnTest2Async(Ice.Current current)
239     {
240         D1 d1 = new D1();
241         d1.sb = "D1.sb";
242         d1.sd1 = "D1.sd1";
243         D2 d2 = new D2();
244         d2.pb = d1;
245         d2.sb = "D2.sb";
246         d2.sd2 = "D2.sd2";
247         d2.pd2 = d1;
248         d1.pb = d2;
249         d1.pd1 = d2;
250         return Task.FromResult<TestIntf_ReturnTest2Result>(new TestIntf_ReturnTest2Result(d1, d1, d2));
251     }
252 
253     public override Task<B>
returnTest3Async(B p1, B p2, Ice.Current current)254     returnTest3Async(B p1, B p2, Ice.Current current)
255     {
256         return Task.FromResult<B>(p1);
257     }
258 
259     public override Task<SS3>
sequenceTestAsync(SS1 p1, SS2 p2, Ice.Current current)260     sequenceTestAsync(SS1 p1, SS2 p2, Ice.Current current)
261     {
262         return Task.FromResult<SS3>(new SS3(p1, p2));
263     }
264 
265     public override Task<TestIntf_DictionaryTestResult>
dictionaryTestAsync(Dictionary<int, B> bin, Ice.Current current)266     dictionaryTestAsync(Dictionary<int, B> bin, Ice.Current current)
267     {
268         var bout = new Dictionary<int, B>();
269         int i;
270         for(i = 0; i < 10; ++i)
271         {
272             B b = bin[i];
273             var d2 = new D2();
274             d2.sb = b.sb;
275             d2.pb = b.pb;
276             d2.sd2 = "D2";
277             d2.pd2 = d2;
278             bout[i * 10] = d2;
279         }
280         var r = new Dictionary<int, B>();
281         for(i = 0; i < 10; ++i)
282         {
283             string s = "D1." + (i * 20).ToString();
284             var d1 = new D1();
285             d1.sb = s;
286             d1.pb = (i == 0 ? null : r[(i - 1) * 20]);
287             d1.sd1 = s;
288             d1.pd1 = d1;
289             r[i * 20] = d1;
290         }
291         return Task.FromResult<TestIntf_DictionaryTestResult>(new TestIntf_DictionaryTestResult(r, bout));
292     }
293 
294     public override Task<PBase>
exchangePBaseAsync(PBase pb, Ice.Current current)295     exchangePBaseAsync(PBase pb, Ice.Current current)
296     {
297         return Task.FromResult<PBase>(pb);
298     }
299 
300     public override Task<Preserved>
PBSUnknownAsPreservedAsync(Ice.Current current)301     PBSUnknownAsPreservedAsync(Ice.Current current)
302     {
303         PSUnknown r = new PSUnknown();
304         r.pi = 5;
305         r.ps = "preserved";
306         r.psu = "unknown";
307         r.graph = null;
308         if(!current.encoding.Equals(Ice.Util.Encoding_1_0))
309         {
310             //
311             // 1.0 encoding doesn't support unmarshaling unknown classes even if referenced
312             // from unread slice.
313             //
314             r.cl = new MyClass(15);
315         }
316         return Task.FromResult<Preserved>(r);
317     }
318 
319     public override Task
checkPBSUnknownAsync(Preserved p, Ice.Current current)320     checkPBSUnknownAsync(Preserved p, Ice.Current current)
321     {
322         if(current.encoding.Equals(Ice.Util.Encoding_1_0))
323         {
324             test(!(p is PSUnknown));
325             test(p.pi == 5);
326             test(p.ps.Equals("preserved"));
327         }
328         else
329         {
330             var pu = p as PSUnknown;
331             test(pu.pi == 5);
332             test(pu.ps.Equals("preserved"));
333             test(pu.psu.Equals("unknown"));
334             test(pu.graph == null);
335             test(pu.cl != null && pu.cl.i == 15);
336         }
337         return null;
338     }
339 
340     public override Task<Preserved>
PBSUnknownAsPreservedWithGraphAsync(Ice.Current current)341     PBSUnknownAsPreservedWithGraphAsync(Ice.Current current)
342     {
343         var r = new PSUnknown();
344         r.pi = 5;
345         r.ps = "preserved";
346         r.psu = "unknown";
347         r.graph = new PNode();
348         r.graph.next = new PNode();
349         r.graph.next.next = new PNode();
350         r.graph.next.next.next = r.graph;
351         return Task.FromResult<Preserved>(r);
352     }
353 
354     public override Task
checkPBSUnknownWithGraphAsync(Preserved p, Ice.Current current)355     checkPBSUnknownWithGraphAsync(Preserved p, Ice.Current current)
356     {
357         if(current.encoding.Equals(Ice.Util.Encoding_1_0))
358         {
359             test(!(p is PSUnknown));
360             test(p.pi == 5);
361             test(p.ps.Equals("preserved"));
362         }
363         else
364         {
365             var pu = p as PSUnknown;
366             test(pu.pi == 5);
367             test(pu.ps.Equals("preserved"));
368             test(pu.psu.Equals("unknown"));
369             test(pu.graph != pu.graph.next);
370             test(pu.graph.next != pu.graph.next.next);
371             test(pu.graph.next.next.next == pu.graph);
372         }
373         return null;
374     }
375 
376     public override Task<Preserved>
PBSUnknown2AsPreservedWithGraphAsync(Ice.Current current)377     PBSUnknown2AsPreservedWithGraphAsync(Ice.Current current)
378     {
379         var r = new PSUnknown2();
380         r.pi = 5;
381         r.ps = "preserved";
382         r.pb = r;
383         return Task.FromResult<Preserved>(r);
384     }
385 
386     public override Task
checkPBSUnknown2WithGraphAsync(Preserved p, Ice.Current current)387     checkPBSUnknown2WithGraphAsync(Preserved p, Ice.Current current)
388     {
389         if(current.encoding.Equals(Ice.Util.Encoding_1_0))
390         {
391             test(!(p is PSUnknown2));
392             test(p.pi == 5);
393             test(p.ps.Equals("preserved"));
394         }
395         else
396         {
397             var pu = p as PSUnknown2;
398             test(pu.pi == 5);
399             test(pu.ps.Equals("preserved"));
400             test(pu.pb == pu);
401         }
402         return null;
403     }
404 
405     public override Task<PNode>
exchangePNodeAsync(PNode pn, Ice.Current current)406     exchangePNodeAsync(PNode pn, Ice.Current current)
407     {
408         return Task.FromResult<PNode>(pn);
409     }
410 
throwBaseAsBaseAsync(Ice.Current current)411     public override Task throwBaseAsBaseAsync(Ice.Current current)
412     {
413         var be = new BaseException();
414         be.sbe = "sbe";
415         be.pb = new B();
416         be.pb.sb = "sb";
417         be.pb.pb = be.pb;
418         throw be;
419     }
420 
throwDerivedAsBaseAsync(Ice.Current current)421     public override Task throwDerivedAsBaseAsync(Ice.Current current)
422     {
423         DerivedException de = new DerivedException();
424         de.sbe = "sbe";
425         de.pb = new B();
426         de.pb.sb = "sb1";
427         de.pb.pb = de.pb;
428         de.sde = "sde1";
429         de.pd1 = new D1();
430         de.pd1.sb = "sb2";
431         de.pd1.pb = de.pd1;
432         de.pd1.sd1 = "sd2";
433         de.pd1.pd1 = de.pd1;
434         throw de;
435     }
436 
437     public override Task
throwDerivedAsDerivedAsync(Ice.Current current)438     throwDerivedAsDerivedAsync(Ice.Current current)
439     {
440         var de = new DerivedException();
441         de.sbe = "sbe";
442         de.pb = new B();
443         de.pb.sb = "sb1";
444         de.pb.pb = de.pb;
445         de.sde = "sde1";
446         de.pd1 = new D1();
447         de.pd1.sb = "sb2";
448         de.pd1.pb = de.pd1;
449         de.pd1.sd1 = "sd2";
450         de.pd1.pd1 = de.pd1;
451         throw de;
452     }
453 
throwUnknownDerivedAsBaseAsync(Ice.Current current)454     public override Task throwUnknownDerivedAsBaseAsync(Ice.Current current)
455     {
456         var d2 = new D2();
457         d2.sb = "sb d2";
458         d2.pb = d2;
459         d2.sd2 = "sd2 d2";
460         d2.pd2 = d2;
461 
462         var ude = new UnknownDerivedException();
463         ude.sbe = "sbe";
464         ude.pb = d2;
465         ude.sude = "sude";
466         ude.pd2 = d2;
467 
468         throw ude;
469     }
470 
throwPreservedExceptionAsync(Ice.Current current)471     public override Task throwPreservedExceptionAsync(Ice.Current current)
472     {
473         var ue = new PSUnknownException();
474         ue.p = new PSUnknown2();
475         ue.p.pi = 5;
476         ue.p.ps = "preserved";
477         ue.p.pb = ue.p;
478 
479         throw ue;
480     }
481 
482     public override Task<Forward>
useForwardAsync(Ice.Current current)483     useForwardAsync(Ice.Current current)
484     {
485         var f = new Forward();
486         f = new Forward();
487         f.h = new Hidden();
488         f.h.f = f;
489         return Task.FromResult<Forward>(f);
490     }
491 }
492