aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMGoogleSearchTest.m
diff options
context:
space:
mode:
Diffstat (limited to 'AppKit/GTMGoogleSearchTest.m')
-rw-r--r--AppKit/GTMGoogleSearchTest.m208
1 files changed, 0 insertions, 208 deletions
diff --git a/AppKit/GTMGoogleSearchTest.m b/AppKit/GTMGoogleSearchTest.m
deleted file mode 100644
index 45f7e66..0000000
--- a/AppKit/GTMGoogleSearchTest.m
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-// GTMGoogleSearchTest.m
-//
-// Copyright 2006-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 "GTMGoogleSearch.h"
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
-#import <unistd.h>
-
-@interface GTMGoogleSearchTest : GTMTestCase
-@end
-
-@implementation GTMGoogleSearchTest
-
-- (void)testSearches {
- typedef struct {
- NSString *type;
- NSString *expectedPrefix;
- } TestSearchDesc;
- static TestSearchDesc testSearches[] = {
- { GTMGoogleSearchFroogle, @"http://www.google.xxx/products?" },
- { GTMGoogleSearchGroups, @"http://www.google.xxx/groups?" },
- { GTMGoogleSearchImages, @"http://www.google.xxx/images?"},
- { GTMGoogleSearchLocal, @"http://www.google.xxx/local?"},
- { GTMGoogleSearchNews, @"http://www.google.xxx/news?"},
- { GTMGoogleSearchFinance, @"http://www.google.xxx/finance?"},
- { GTMGoogleSearchBooks, @"http://www.google.xxx/books?"},
- { GTMGoogleSearchWeb, @"http://www.google.xxx/search?"},
- };
-
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
-
- // force the current app values so we aren't at the mercy of the
- // global setting the users locale.
- [googleSearch updatePreferredDomain:@"xxx"
- language:@"yyy"
- currentApplicationOnly:TRUE];
-
- size_t count = sizeof(testSearches) / sizeof(testSearches[0]);
- NSDictionary *globalArgs
- = [NSDictionary dictionaryWithObject:@"f" forKey:@"foo"];
- [googleSearch setGlobalSearchArguments:globalArgs];
- NSDictionary *args = [NSDictionary dictionaryWithObject:@"Baba"
- forKey:@"BaR"];
- NSString *expectedStrings[] = {
- @"oe=UTF-8", @"hl=yyy", @"q=Foobar",
- @"foo=f", @"ie=UTF-8", @"BaR=Baba"
- };
- for (size_t i = 0; i < count; i++) {
- // test building the url
- NSString *urlString = [googleSearch searchURLFor:@"Foobar"
- ofType:testSearches[i].type
- arguments:args];
- STAssertTrue([urlString hasPrefix:testSearches[i].expectedPrefix],
- @"Bad URL? URL:%@ Expected Prefix:%@",
- urlString, testSearches[i].expectedPrefix);
- for (size_t j = 0;
- j < sizeof(expectedStrings) / sizeof(expectedStrings[0]);
- ++j) {
- STAssertGreaterThan([urlString rangeOfString:expectedStrings[j]].length,
- (NSUInteger)0, @"URL: %@ expectedString: %@",
- urlString, expectedStrings[j]);
- }
- }
-
- // clear what we just set for this test
- [googleSearch setGlobalSearchArguments:nil];
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-}
-
-- (void)testBadInputs {
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
- NSDictionary *args = [NSDictionary dictionaryWithObject:@"Ba!ba"
- forKey:@"Ba=R"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Foo bar in argument pair {q,Foo bar } "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Ba=R in argument pair {Ba=R, Ba!ba} "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Ba!ba in argument pair {Ba=R,Ba!ba } "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- NSString *urlString = [googleSearch searchURLFor:@"Foo bar"
- ofType:GTMGoogleSearchFroogle
- arguments:args];
- STAssertNotNil(urlString, nil);
-}
-
-- (void)testPreferredDefaults {
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
-
- // hey, we're a unit test, so start by blowing away what we have at the
- // app level.
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-
- // in theory, we could fetch now and save off what we get to reset at the
- // end of this, but we can't tell if that was an "all apps" setting, or if
- // it was the default, so...hey, we're a unit test, we'll just stomp what's
- // there and clear it out when done...
- [googleSearch clearPreferredDomainAndLanguageForAllApps];
-
- // make sure the individual accessors work...
-
- // since they system level default can be set by any app, we just have to
- // check for non nil here (also the users locale could control what
- // we get if nothing is set).
- NSString *domain;
- NSString *lang;
- // now do a detailed check...
- BOOL areCurrentAppOnly = YES;
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- // should get something for defaults...
- STAssertNotNil(domain, nil);
- STAssertNotNil(lang, nil);
- STAssertFalse(areCurrentAppOnly, nil);
-
- // test it for "all apps"...
- [googleSearch updatePreferredDomain:@"domain"
- language:@"lang"
- currentApplicationOnly:NO];
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domain", nil);
- STAssertEqualObjects(lang, @"lang", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-
- // test it for this app...
- [googleSearch updatePreferredDomain:@"domainThisApp"
- language:@"langThisApp"
- currentApplicationOnly:YES];
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domainThisApp", nil);
- STAssertEqualObjects(lang, @"langThisApp", nil);
- STAssertTrue(areCurrentAppOnly, nil);
-
- // clear what we just set for this app
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-
- // should get back what we set for all apps
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domain", nil);
- STAssertEqualObjects(lang, @"lang", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- // We don't test launching other tasks on the phone since this isn't a valid
- // case until we can support real multiple tasks on the phone.
-
- // try changing the value directly in the plist file (as if another app had
- // done it) and sending our notification.
- [[NSTask launchedTaskWithLaunchPath:@"/usr/bin/defaults"
- arguments:[NSArray arrayWithObjects:@"write",
- @"com.google.GoogleSearchAllApps",
- @"{ \"com.google.PreferredDomain\" = xxx;"
- @"\"com.google.PreferredLanguage\" = yyy; }",
- nil]] waitUntilExit];
- // Sleep for a moment to let things flush
- // (seen rarely as a problem on aharper's machine).
- sleep(1);
- NSDistributedNotificationCenter *distCenter =
- [NSDistributedNotificationCenter defaultCenter];
- [distCenter postNotificationName:@"com.google.GoogleSearchAllApps.prefsWritten"
- object:nil
- userInfo:nil
- options:NSNotificationDeliverImmediately];
-
- // Spin the runloop so the notifications fire.
- NSRunLoop *currentLoop = [NSRunLoop currentRunLoop];
- [currentLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
- // did we get what we expected?
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"xxx", nil);
- STAssertEqualObjects(lang, @"yyy", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-
- // lastly, clean up what we set for all apps to leave the system at the
- // default.
- [googleSearch clearPreferredDomainAndLanguageForAllApps];
-}
-
-@end