1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5import {Ice} from "ice";
6import {Test} from "./generated"
7import {TestHelper} from "../../../Common/TestHelper"
8const test = TestHelper.test;
9
10export class Client extends TestHelper
11{
12    async allTests()
13    {
14        const out = this.getWriter();
15        const communicator = this.communicator();
16
17        out.write("testing stringToProxy... ");
18        const ref = "test:" + this.getTestEndpoint();
19        const base = communicator.stringToProxy(ref);
20        test(base !== null);
21        out.writeLine("ok");
22
23        out.write("testing checked cast... ");
24        const proxy = await Test.TestIntfPrx.checkedCast(base);
25        test(proxy !== null);
26        test(proxy.equals(base));
27        out.writeLine("ok");
28
29        out.write("testing enum values... ");
30        test(Test.ByteEnum.benum1.value === 0);
31        test(Test.ByteEnum.benum2.value === 1);
32        test(Test.ByteEnum.benum3.value === Test.ByteConst1);
33        test(Test.ByteEnum.benum4.value === Test.ByteConst1 + 1);
34        test(Test.ByteEnum.benum5.value === Test.ShortConst1);
35        test(Test.ByteEnum.benum6.value === Test.ShortConst1 + 1);
36        test(Test.ByteEnum.benum7.value === Test.IntConst1);
37        test(Test.ByteEnum.benum8.value === Test.IntConst1 + 1);
38        test(Test.ByteEnum.benum9.value === Test.LongConst1.low);
39        test(Test.ByteEnum.benum10.value === Test.LongConst1.low + 1);
40        test(Test.ByteEnum.benum11.value === Test.ByteConst2);
41
42        test(Test.ByteEnum.valueOf(0) === Test.ByteEnum.benum1);
43        test(Test.ByteEnum.valueOf(1) === Test.ByteEnum.benum2);
44        test(Test.ByteEnum.valueOf(Test.ByteConst1) === Test.ByteEnum.benum3);
45        test(Test.ByteEnum.valueOf(Test.ByteConst1 + 1) === Test.ByteEnum.benum4);
46        test(Test.ByteEnum.valueOf(Test.ShortConst1) === Test.ByteEnum.benum5);
47        test(Test.ByteEnum.valueOf(Test.ShortConst1 + 1) === Test.ByteEnum.benum6);
48        test(Test.ByteEnum.valueOf(Test.IntConst1) === Test.ByteEnum.benum7);
49        test(Test.ByteEnum.valueOf(Test.IntConst1 + 1) === Test.ByteEnum.benum8);
50        test(Test.ByteEnum.valueOf(Test.LongConst1.low) === Test.ByteEnum.benum9);
51        test(Test.ByteEnum.valueOf(Test.LongConst1.low + 1) === Test.ByteEnum.benum10);
52        test(Test.ByteEnum.valueOf(Test.ByteConst2) === Test.ByteEnum.benum11);
53
54        test(Test.ShortEnum.senum1.value === 3);
55        test(Test.ShortEnum.senum2.value === 4);
56        test(Test.ShortEnum.senum3.value === Test.ByteConst1);
57        test(Test.ShortEnum.senum4.value === Test.ByteConst1 + 1);
58        test(Test.ShortEnum.senum5.value === Test.ShortConst1);
59        test(Test.ShortEnum.senum6.value === Test.ShortConst1 + 1);
60        test(Test.ShortEnum.senum7.value === Test.IntConst1);
61        test(Test.ShortEnum.senum8.value === Test.IntConst1 + 1);
62        test(Test.ShortEnum.senum9.value === Test.LongConst1.low);
63        test(Test.ShortEnum.senum10.value === Test.LongConst1.low + 1);
64        test(Test.ShortEnum.senum11.value === Test.ShortConst2);
65
66        test(Test.ShortEnum.valueOf(3) === Test.ShortEnum.senum1);
67        test(Test.ShortEnum.valueOf(4) === Test.ShortEnum.senum2);
68        test(Test.ShortEnum.valueOf(Test.ByteConst1) === Test.ShortEnum.senum3);
69        test(Test.ShortEnum.valueOf(Test.ByteConst1 + 1) === Test.ShortEnum.senum4);
70        test(Test.ShortEnum.valueOf(Test.ShortConst1) === Test.ShortEnum.senum5);
71        test(Test.ShortEnum.valueOf(Test.ShortConst1 + 1) === Test.ShortEnum.senum6);
72        test(Test.ShortEnum.valueOf(Test.IntConst1) === Test.ShortEnum.senum7);
73        test(Test.ShortEnum.valueOf(Test.IntConst1 + 1) === Test.ShortEnum.senum8);
74        test(Test.ShortEnum.valueOf(Test.LongConst1.low) === Test.ShortEnum.senum9);
75        test(Test.ShortEnum.valueOf(Test.LongConst1.low + 1) === Test.ShortEnum.senum10);
76        test(Test.ShortEnum.valueOf(Test.ShortConst2) === Test.ShortEnum.senum11);
77
78        test(Test.IntEnum.ienum1.value === 0);
79        test(Test.IntEnum.ienum2.value === 1);
80        test(Test.IntEnum.ienum3.value === Test.ByteConst1);
81        test(Test.IntEnum.ienum4.value === Test.ByteConst1 + 1);
82        test(Test.IntEnum.ienum5.value === Test.ShortConst1);
83        test(Test.IntEnum.ienum6.value === Test.ShortConst1 + 1);
84        test(Test.IntEnum.ienum7.value === Test.IntConst1);
85        test(Test.IntEnum.ienum8.value === Test.IntConst1 + 1);
86        test(Test.IntEnum.ienum9.value === Test.LongConst1.low);
87        test(Test.IntEnum.ienum10.value === Test.LongConst1.low + 1);
88        test(Test.IntEnum.ienum11.value === Test.IntConst2);
89        test(Test.IntEnum.ienum12.value === Test.LongConst2.low);
90
91        test(Test.IntEnum.valueOf(0) === Test.IntEnum.ienum1);
92        test(Test.IntEnum.valueOf(1) === Test.IntEnum.ienum2);
93        test(Test.IntEnum.valueOf(Test.ByteConst1) === Test.IntEnum.ienum3);
94        test(Test.IntEnum.valueOf(Test.ByteConst1 + 1) === Test.IntEnum.ienum4);
95        test(Test.IntEnum.valueOf(Test.ShortConst1) === Test.IntEnum.ienum5);
96        test(Test.IntEnum.valueOf(Test.ShortConst1 + 1) === Test.IntEnum.ienum6);
97        test(Test.IntEnum.valueOf(Test.IntConst1) === Test.IntEnum.ienum7);
98        test(Test.IntEnum.valueOf(Test.IntConst1 + 1) === Test.IntEnum.ienum8);
99        test(Test.IntEnum.valueOf(Test.LongConst1.low) === Test.IntEnum.ienum9);
100        test(Test.IntEnum.valueOf(Test.LongConst1.low + 1) === Test.IntEnum.ienum10);
101        test(Test.IntEnum.valueOf(Test.IntConst2) === Test.IntEnum.ienum11);
102        test(Test.IntEnum.valueOf(Test.LongConst2.low) === Test.IntEnum.ienum12);
103
104        test(Test.SimpleEnum.red.value === 0);
105        test(Test.SimpleEnum.green.value === 1);
106        test(Test.SimpleEnum.blue.value === 2);
107
108        test(Test.SimpleEnum.valueOf(0) === Test.SimpleEnum.red);
109        test(Test.SimpleEnum.valueOf(1) === Test.SimpleEnum.green);
110        test(Test.SimpleEnum.valueOf(2) === Test.SimpleEnum.blue);
111
112        out.writeLine("ok");
113
114        out.write("testing enum operations... ");
115        {
116            const [ret, b1] = await proxy.opByte(Test.ByteEnum.benum1);
117            test(ret === b1);
118            test(ret === Test.ByteEnum.benum1);
119        }
120
121        {
122            const [ret, b11] = await proxy.opByte(Test.ByteEnum.benum11);
123            test(ret === b11);
124            test(ret === Test.ByteEnum.benum11);
125        }
126
127        {
128            const [ret, s1] = await proxy.opShort(Test.ShortEnum.senum1);
129            test(ret === s1);
130            test(ret === Test.ShortEnum.senum1);
131        }
132
133        {
134            const [ret, s11] = await proxy.opShort(Test.ShortEnum.senum11);
135            test(ret === s11);
136            test(ret === Test.ShortEnum.senum11);
137        }
138
139        {
140            const [ret, i1] = await proxy.opInt(Test.IntEnum.ienum1);
141            test(ret === i1);
142            test(ret === Test.IntEnum.ienum1);
143        }
144
145        {
146            const [ret, i11] = await proxy.opInt(Test.IntEnum.ienum11);
147            test(ret === i11);
148            test(ret === Test.IntEnum.ienum11);
149        }
150
151        {
152            const [ret, i12] = await proxy.opInt(Test.IntEnum.ienum12);
153            test(ret === i12);
154            test(ret === Test.IntEnum.ienum12);
155        }
156
157        {
158            const [ret, g] = await proxy.opSimple(Test.SimpleEnum.green);
159            test(ret === g);
160            test(ret === Test.SimpleEnum.green);
161        }
162        out.writeLine("ok");
163        await proxy.shutdown();
164    }
165
166    async run(args:string[])
167    {
168        let communicator:Ice.Communicator;
169        try
170        {
171            [communicator] = this.initialize(args);
172            await this.allTests();
173        }
174        finally
175        {
176            if(communicator)
177            {
178                await communicator.destroy();
179            }
180        }
181    }
182}
183