1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#import <objc/Ice.h>
6#import <TestCommon.h>
7#import <OptionalTest.h>
8
9static int
10run(id<ICECommunicator> communicator)
11{
12    id<TestOptionalInitialPrx> optionalAllTests(id<ICECommunicator>);
13    id<TestOptionalInitialPrx> optional = optionalAllTests(communicator);
14    [optional shutdown];
15    return EXIT_SUCCESS;
16}
17
18#if TARGET_OS_IPHONE
19#  define main optionalClient
20#endif
21
22int
23main(int argc, char* argv[])
24{
25#ifdef ICE_STATIC_LIBS
26    ICEregisterIceSSL(YES);
27    ICEregisterIceWS(YES);
28#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
29    ICEregisterIceIAP(YES);
30#endif
31#endif
32
33    int status;
34    @autoreleasepool
35    {
36        id<ICECommunicator> communicator = nil;
37        @try
38        {
39            ICEInitializationData* initData = [ICEInitializationData initializationData];
40            initData.properties = defaultClientProperties(&argc, argv);
41#if TARGET_OS_IPHONE
42            initData.prefixTable_ = [NSDictionary dictionaryWithObjectsAndKeys:
43                                      @"TestOptional", @"::Test",
44                                      nil];
45#endif
46            communicator = [ICEUtil createCommunicator:&argc argv:argv initData:initData];
47            status = run(communicator);
48        }
49        @catch(ICEException* ex)
50        {
51            tprintf("%@\n", ex);
52            status = EXIT_FAILURE;
53        }
54        @catch(TestFailedException* ex)
55        {
56            status = EXIT_FAILURE;
57        }
58
59        if(communicator)
60        {
61            [communicator destroy];
62        }
63    }
64    return status;
65}
66