aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-08-06 17:00:44 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-08-06 17:00:44 +0000
commit1aac50492d94c282511a6484760405b314d1f1f0 (patch)
tree33a3b3e20f874a77bdff3f0238a5f6d393e562c0 /AppKit/GTMUILocalizerAndLayoutTweakerTest.m
parenteff8351b590bcf190b175e2add2ab87c8e7204ec (diff)
[Author: thomasvl]
Move the nib finding code in GTMUILocalizer to a class methods so it can be called without an instance. Add GTMUILocalizerAndLayoutTweaker getting UI localized and then running through it to auto size UI items that have been marked and also support limited tweaks on other objects based on a group of tweaks. Provide a class method for this sizeToFit fixup of individual objects. Unittests for the new class. R=dmaclach,stuartmorgan DELTA=3161 (3157 added, 0 deleted, 4 changed)
Diffstat (limited to 'AppKit/GTMUILocalizerAndLayoutTweakerTest.m')
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest.m96
1 files changed, 96 insertions, 0 deletions
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest.m b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
new file mode 100644
index 0000000..10e83b1
--- /dev/null
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
@@ -0,0 +1,96 @@
+//
+// GTMUILocalizerAndLayoutTweakerTest.m
+//
+// Copyright 2009 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 "GTMSenTestCase.h"
+#import "GTMUILocalizerAndLayoutTweakerTest.h"
+#import "GTMNSObject+UnitTesting.h"
+#import "GTMUILocalizer.h"
+
+static NSUInteger gTestPass = 0;
+
+@interface GTMUILocalizerAndLayoutTweakerTest : GTMTestCase
+@end
+
+@implementation GTMUILocalizerAndLayoutTweakerTest
+- (void)testWindowLocalization {
+ // Test with nib 1
+ for (gTestPass = 0; gTestPass < 3; ++gTestPass) {
+ GTMUILocalizerAndLayoutTweakerTestWindowController *controller =
+ [[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
+ initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest1"];
+ NSWindow *window = [controller window];
+ STAssertNotNil(window, @"Pass %ld", (long)gTestPass);
+ NSString *imageName =
+ [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest1-%ld",
+ (long)gTestPass];
+ GTMAssertObjectImageEqualToImageNamed(window, imageName,
+ @"Pass %ld", (long)gTestPass);
+ [controller release];
+ }
+ // Test with nib 2
+ for (gTestPass = 0; gTestPass < 3; ++gTestPass) {
+ GTMUILocalizerAndLayoutTweakerTestWindowController *controller =
+ [[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
+ initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest2"];
+ NSWindow *window = [controller window];
+ STAssertNotNil(window, @"Pass %ld", (long)gTestPass);
+ NSString *imageName =
+ [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest2-%ld",
+ (long)gTestPass];
+ GTMAssertObjectImageEqualToImageNamed(window, imageName,
+ @"Pass %ld", (long)gTestPass);
+ [controller release];
+ }
+}
+
+@end
+
+@implementation GTMUILocalizerAndLayoutTweakerTestWindowController
+@end
+
+@implementation GTMUILocalizerAndLayoutTweakerTestLocalizer
+
+- (NSString *)localizedStringForString:(NSString *)string {
+ // "[FRAGMENT]:[COUNT]:[COUNT]"
+ // String is split, fragment is repeated count times, and spaces are then
+ // trimmed. Gives us strings that don't change for the test, but easy to
+ // vary in size. Which count is used, is controled by |gTestPass| so we
+ // can use a nib more then once.
+ NSArray *parts = [string componentsSeparatedByString:@":"];
+ if ([parts count] > (gTestPass + 1)) {
+ NSString *fragment = [parts objectAtIndex:0];
+ NSInteger count = [[parts objectAtIndex:gTestPass + 1] intValue];
+ if (count) {
+ NSMutableString *result =
+ [NSMutableString stringWithCapacity:count * [fragment length]];
+ while (count--) {
+ [result appendString:fragment];
+ }
+ NSCharacterSet *ws = [NSCharacterSet whitespaceCharacterSet];
+ return [result stringByTrimmingCharactersInSet:ws];
+ }
+ }
+ return nil;
+}
+
+- (void)awakeFromNib {
+ // Stop the base one from logging or doing anything since we don't need it
+ // for this test.
+}
+
+@end