Files
wagic/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlAdNetworkConfigTest.m
2011-12-15 11:18:37 +00:00

306 lines
15 KiB
Objective-C

/*
AdWhirlAdNetworkConfigTest.m
Copyright 2010 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#import <OCMock/OCMock.h>
#import "GTMSenTestCase.h"
#import "GTMUnitTestDevLog.h"
#import "AdWhirlAdNetworkConfig.h"
#import "AdWhirlAdNetworkAdapter.h"
#import "AdWhirlError.h"
#import "AdWhirlAdNetworkRegistry.h"
#import "AdWhirlClassWrapper.h"
@interface AdWhirlAdNetworkConfigTest : GTMTestCase {
id mockRegistry_;
}
@end
@implementation AdWhirlAdNetworkConfigTest
-(void) setUp {
mockRegistry_ = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]];
}
- (void) tearDown {
}
- (void) testGoodConfig {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"custom", AWAdNetworkConfigKeyName,
@"14.5", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"__CUSTOM__", AWAdNetworkConfigKeyCred,
@"9", AWAdNetworkConfigKeyType,
@"10", AWAdNetworkConfigKeyPriority,
nil];
AdWhirlClassWrapper *classWrapper
= [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]];
[[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(error, @"should have no error parsing ad network config");
STAssertNotNil(config, @"config should be non-nil");
STAssertEqualStrings(config.networkName, @"custom", @"network name");
STAssertEquals(config.trafficPercentage, 14.5, @"percentage");
STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid");
STAssertNotNil(config.credentials, @"credentials exists");
STAssertEqualStrings(config.pubId, @"__CUSTOM__", @"pubId");
STAssertEquals(config.networkType, 9, @"network type");
STAssertEquals(config.priority, 10, @"priority");
STAssertNotNil([config description], @"has description");
STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match");
[config release];
[classWrapper release];
}
- (void) testGoodConfigHashCred {
NSDictionary *cred = [NSDictionary dictionaryWithObjectsAndKeys:
@"site_id", @"siteID",
@"spot_id", @"spotID",
@"pub_id", @"publisherID",
nil];
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jumptap", AWAdNetworkConfigKeyName,
@"30", AWAdNetworkConfigKeyWeight,
@"1234567890a1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
cred, AWAdNetworkConfigKeyCred,
@"2", AWAdNetworkConfigKeyType,
@"2", AWAdNetworkConfigKeyPriority,
nil];
AdWhirlClassWrapper *classWrapper
= [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]];
[[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:2];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(error, @"should have no error parsing ad network config");
STAssertNotNil(config, @"config should be non-nil");
STAssertEqualStrings(config.networkName, @"jumptap", @"network name");
STAssertEquals(config.trafficPercentage, 30.0, @"percentage");
STAssertEqualStrings(config.nid, @"1234567890a1234567890abcdef5c1e9", @"nid");
STAssertNotNil(config.credentials, @"credentials exists");
STAssertTrue([config.credentials isKindOfClass:[NSDictionary class]],
@"credentials is a dictionary");
STAssertNil(config.pubId, @"no single pubId");
STAssertEqualStrings([config.credentials objectForKey:@"siteID"],
@"site_id", @"cred.siteId");
STAssertEqualStrings([config.credentials objectForKey:@"spotID"],
@"spot_id", @"cred.spotId");
STAssertEqualStrings([config.credentials objectForKey:@"publisherID"],
@"pub_id", @"cred.pubId");
STAssertEquals(config.networkType, 2, @"network type");
STAssertEquals(config.priority, 2, @"priority");
STAssertNotNil([config description], @"has description");
STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match");
[config release];
[classWrapper release];
}
- (void) testEmptyConfig {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:nil];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNil(config, @"Bad config dict should yield nil network config");
STAssertNotNil(error, @"Bad config dict should yield error");
STAssertEquals([error localizedDescription],
@"Ad network config has no network type, network id, network name, or priority",
@"Bad config dict error message");
STAssertEquals([error code], AdWhirlConfigDataError,
@"Bad config should give AdWhirlConfigDataError");
}
- (void) testEmptyConfigNilErrorObj {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:nil];
[GTMUnitTestDevLog expectString:@"Ad network config has no network type, network id, network name, or priority"];
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:nil];
STAssertNil(config, @"Bad config dict should yield nil network config");
}
- (void) testNonExistentNetworkType {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"bogus", AWAdNetworkConfigKeyName,
@"50", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"x", AWAdNetworkConfigKeyCred,
@"1000000", AWAdNetworkConfigKeyType,
@"6", AWAdNetworkConfigKeyPriority,
nil];
[[[mockRegistry_ expect] andReturn:nil] adapterClassFor:1000000];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(config, @"Config must be null for non-existent network type");
STAssertNotNil(error, @"Must returned error for non-existent network type");
STAssertEqualStrings([error localizedDescription],
@"Ad network type 1000000 not supported, no adapter found",
@"Non-existent network type error string");
STAssertEquals([error code], AdWhirlConfigDataError,
@"Non-existent network type should give AdWhirlConfigDataError");
}
- (void) testNonExistentNetworkTypeNilErrorObj {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"bogus", AWAdNetworkConfigKeyName,
@"50", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"x", AWAdNetworkConfigKeyCred,
@"1000000", AWAdNetworkConfigKeyType,
@"6", AWAdNetworkConfigKeyPriority,
nil];
[[[mockRegistry_ expect] andReturn:nil] adapterClassFor:1000000];
[GTMUnitTestDevLog expectString:@"Ad network type 1000000 not supported, no adapter found"];
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:nil];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(config, @"Config must be null for non-existent network type");
}
- (void) testNilWeight {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"custom", AWAdNetworkConfigKeyName,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"__CUSTOM__", AWAdNetworkConfigKeyCred,
@"9", AWAdNetworkConfigKeyType,
@"10", AWAdNetworkConfigKeyPriority,
nil];
AdWhirlClassWrapper *classWrapper
= [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]];
[[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(error, @"should have no error parsing ad network config");
STAssertNotNil(config, @"config should be non-nil");
STAssertEqualStrings(config.networkName, @"custom", @"network name");
STAssertEquals(config.trafficPercentage, 0.0, @"percentage should be 0");
STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid");
STAssertNotNil(config.credentials, @"credentials exists");
STAssertEqualStrings(config.pubId, @"__CUSTOM__", @"pubId");
STAssertEquals(config.networkType, 9, @"network type");
STAssertEquals(config.priority, 10, @"priority");
STAssertNotNil([config description], @"has description");
STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match");
[config release];
[classWrapper release];
}
- (void) testNilCred {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"custom", AWAdNetworkConfigKeyName,
@"14.5", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"9", AWAdNetworkConfigKeyType,
@"10", AWAdNetworkConfigKeyPriority,
nil];
AdWhirlClassWrapper *classWrapper
= [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]];
[[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNoThrow([mockRegistry_ verify],
@"Must have called adapterClassFor of the ad network registry");
STAssertNil(error, @"should have no error parsing ad network config");
STAssertNotNil(config, @"config should be non-nil");
STAssertEqualStrings(config.networkName, @"custom", @"network name");
STAssertEquals(config.trafficPercentage, 14.5, @"percentage");
STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid");
STAssertNil(config.credentials, @"credentials exists");
STAssertNil(config.pubId, @"credentials nil");
STAssertEquals(config.networkType, 9, @"network type");
STAssertEquals(config.priority, 10, @"priority");
STAssertNotNil([config description], @"has description");
STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match");
[config release];
[classWrapper release];
}
- (void) testNetworkTypeNotNumber {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"custom", AWAdNetworkConfigKeyName,
@"14.5", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"__CUSTOM__", AWAdNetworkConfigKeyCred,
@"somestring", AWAdNetworkConfigKeyType,
@"10", AWAdNetworkConfigKeyPriority,
nil];
AdWhirlError *error = nil;
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:&error];
STAssertNil(config, @"Non-int network type should yield nil network config");
STAssertNotNil(error, @"Non-int network type should yield error");
STAssertEquals([error localizedDescription],
@"Ad network config has invalid network type, network id, network name or priority",
@"Non-int network type error message");
STAssertEquals([error code], AdWhirlConfigDataError,
@"Non-int network type should give AdWhirlConfigDataError");
}
- (void) testNetworkTypeNotNumberNilErrObj {
NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"custom", AWAdNetworkConfigKeyName,
@"14.5", AWAdNetworkConfigKeyWeight,
@"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID,
@"__CUSTOM__", AWAdNetworkConfigKeyCred,
@"somestring", AWAdNetworkConfigKeyType,
@"10", AWAdNetworkConfigKeyPriority,
nil];
[GTMUnitTestDevLog expectString:@"Ad network config has invalid network type, network id, network name or priority"];
AdWhirlAdNetworkConfig *config
= [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict
adNetworkRegistry:mockRegistry_
error:nil];
STAssertNil(config, @"Non-int network type should yield nil network config");
}
@end