blob: 434e89033f3129bf4de676de6858e7e16c042a19 [file] [log] [blame]
//
// GTMUILocalizerTest.m
//
// Copyright 2011 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 "GTMUILocalizerTest.h"
#import "GTMSenTestCase.h"
@interface TestUILocalizer : GTMUILocalizer
- (void)localize:(id)object;
@end
@implementation TestUILocalizer
- (NSString *)localizedStringForString:(NSString *)string {
if ([string length] >= 5)
return [string substringFromIndex:5];
else
return string;
}
- (void)localize:(id)object {
[self localizeObject:object recursively:YES];
}
@end
@implementation GTMUILocalizerTestViewController
@synthesize label = label_;
@synthesize button = button_;
@synthesize segmentedControl = segmentedControl_;
@synthesize searchBar = searchBar_;
- (id)init {
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
return [self initWithNibName:@"GTMUILocalizerTest" bundle:bundle];
}
@end
@interface GTMUILocalizerTest : GTMTestCase
- (void)checkValues:(NSString *)value
onController:(GTMUILocalizerTestViewController *)controller;
@end
@implementation GTMUILocalizerTest
- (void)checkValues:(NSString *)value
onController:(GTMUILocalizerTestViewController *)controller {
// Label
XCTAssertEqualStrings(value, [[controller label] text]);
// Button
UIControlState allStates[] = { UIControlStateNormal,
UIControlStateHighlighted,
UIControlStateDisabled,
UIControlStateSelected };
for (size_t idx = 0; idx < (sizeof(allStates)/sizeof(allStates[0])); ++idx) {
UIControlState state = allStates[idx];
XCTAssertEqualStrings(value, [[controller button] titleForState:state]);
}
// SegementedControl
for (NSUInteger i = 0;
i < [[controller segmentedControl] numberOfSegments];
++i) {
XCTAssertEqualStrings(value,
[[controller segmentedControl] titleForSegmentAtIndex:i]);
}
// SearchBar
XCTAssertEqualStrings(value, [[controller searchBar] text]);
XCTAssertEqualStrings(value, [[controller searchBar] placeholder]);
XCTAssertEqualStrings(value, [[controller searchBar] prompt]);
// Accessibility label seems to not be working at all. They always are nil.
// Even when setting those explicitly there, the getter always returns nil.
// This might be because the gobal accessibility switch is not on during the
// tests.
#if 0
XCTAssertEqualStrings(value, [[controller view] accessibilityLabel]);
XCTAssertEqualStrings(value, [[controller view] accessibilityHint]);
XCTAssertEqualStrings(value, [[controller label] accessibilityLabel]);
XCTAssertEqualStrings(value, [[controller label] accessibilityHint]);
#endif
}
- (void)testLocalization {
GTMUILocalizerTestViewController *controller =
[[[GTMUILocalizerTestViewController alloc] init] autorelease];
// Load the view.
[controller view];
[self checkValues:@"^IDS_FOO" onController:controller];
TestUILocalizer *localizer = [[TestUILocalizer alloc] init];
[localizer localize:[controller view]];
[self checkValues:@"FOO" onController:controller];
}
@end