1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
#import <objc/Ice.h>
#import <TestCommon.h>
#import <InterceptorTest.h>
#import <interceptor/MyObjectI.h>
#import <interceptor/InterceptorI.h>
static int
run(id<ICECommunicator> communicator)
{
//
// Create OA and servants
//
id<ICEObjectAdapter> oa = [communicator createObjectAdapterWithEndpoints:@"MyOA" endpoints:@"tcp -h localhost"];
ICEObject* servant = [TestInterceptorMyObjectI myObject];
InterceptorI* interceptor = ICE_AUTORELEASE([[InterceptorI alloc] init:servant]);
id<TestInterceptorMyObjectPrx> prx = [TestInterceptorMyObjectPrx uncheckedCast:[oa addWithUUID:interceptor]];
[oa activate];
tprintf("testing simple interceptor... ");
test([[interceptor getLastOperation] length] == 0);
[prx ice_ping];
test([[interceptor getLastOperation] isEqualToString:@"ice_ping"]);
test([interceptor getLastStatus]);
NSString* typeId = [prx ice_id];
test([[interceptor getLastOperation] isEqualToString:@"ice_id"]);
test([interceptor getLastStatus]);
test([prx ice_isA:typeId]);
test([[interceptor getLastOperation] isEqualToString:@"ice_isA"]);
test([interceptor getLastStatus]);
test([prx add:33 y:12] == 45);
test([[interceptor getLastOperation] isEqualToString:@"add"]);
test([interceptor getLastStatus]);
tprintf("ok\n");
tprintf("testing retry... ");
test([prx addWithRetry:33 y:12] == 45);
test([[interceptor getLastOperation] isEqualToString:@"addWithRetry"]);
test([interceptor getLastStatus]);
tprintf("ok\n");
tprintf("testing user exception... ");
@try
{
[prx badAdd:33 y:12];
test(NO);
}
@catch(TestInterceptorInvalidInputException*)
{
// expected
}
test([[interceptor getLastOperation] isEqualToString:@"badAdd"]);
test([interceptor getLastStatus] == NO);
tprintf("ok\n");
tprintf("testing ONE... ");
[interceptor clear];
@try
{
[prx notExistAdd:33 y:12];
test(NO);
}
@catch(ICEObjectNotExistException*)
{
// expected
}
test([[interceptor getLastOperation] isEqualToString:@"notExistAdd"]);
tprintf("ok\n");
tprintf("testing unknown local exception... ");
[interceptor clear];
@try
{
[prx badSystemAdd:33 y:12];
test(NO);
}
@catch(ICEUnknownLocalException*)
{
}
@catch(NSException*)
{
test(NO);
}
test([[interceptor getLastOperation] isEqualToString:@"badSystemAdd"]);
tprintf("ok\n");
return 0;
}
#if TARGET_OS_IPHONE
# define main interceptorClient
int
interceptorServer(int argc, char* argv[])
{
serverReady(nil);
return 0;
}
#endif
int
main(int argc, char* argv[])
{
#ifdef ICE_STATIC_LIBS
ICEregisterIceSSL(YES);
ICEregisterIceWS(YES);
#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
ICEregisterIceIAP(YES);
#endif
#endif
int status;
@autoreleasepool
{
id<ICECommunicator> communicator = nil;
@try
{
ICEInitializationData* initData = [ICEInitializationData initializationData];
initData.properties = defaultClientProperties(&argc, argv);
[initData.properties setProperty:@"Ice.Warn.Dispatch" value:@"0"];
#if TARGET_OS_IPHONE
initData.prefixTable_ = [NSDictionary dictionaryWithObjectsAndKeys:
@"TestInterceptor", @"::Test",
nil];
#endif
communicator = [ICEUtil createCommunicator:&argc argv:argv initData:initData];
status = run(communicator);
}
@catch(ICEException* ex)
{
tprintf("%@\n", ex);
status = EXIT_FAILURE;
}
@catch(TestFailedException* ex)
{
status = EXIT_FAILURE;
}
if(communicator)
{
[communicator destroy];
}
}
return status;
}
|