// // 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