diff options
author | thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-01-09 20:34:30 +0000 |
---|---|---|
committer | thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-01-09 20:34:30 +0000 |
commit | 4fd103b5de98d2f469b982677ea389e7ee7d64b3 (patch) | |
tree | d0eb379fdc78996bc2e201515d26c7521d1fc8dc /AppKit/GTMNSWorkspace+RunningTest.m | |
parent | 84d1232477f398339e48ea504c45048e9328ef9b (diff) |
- turned off _debug framework support in tests since we now capture a lot more
in log validation.
- Added GTM_SUPPORT_GC for controlling the inclusion of GC related code.
- If you are using GTMUnitTestDevLog, it also tries to capture logs from
NSAssert.
- Added GTM_FOREACH_OBJECT/GTM_FOREACH_KEY that uses NSEnumerator and
objectEnumerator/keyEnumerator on 10.4, but on 10.5+/iPhone uses
FastEnumeration.
- GTMNSWorkspace+Running gives a variety of ways of determining the attributes
of running processes.
Diffstat (limited to 'AppKit/GTMNSWorkspace+RunningTest.m')
-rw-r--r-- | AppKit/GTMNSWorkspace+RunningTest.m | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/AppKit/GTMNSWorkspace+RunningTest.m b/AppKit/GTMNSWorkspace+RunningTest.m new file mode 100644 index 0000000..abd20a6 --- /dev/null +++ b/AppKit/GTMNSWorkspace+RunningTest.m @@ -0,0 +1,78 @@ +// +// GTMNSWorkspace+RunningTest.m +// +// Copyright 2007-2008 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 "GTMNSWorkspace+Running.h" +#import <unistd.h> + +@interface GTMNSWorkspace_RunningTest : GTMTestCase +@end + +@implementation GTMNSWorkspace_RunningTest + +- (void)testBasics { + NSWorkspace *ws = [NSWorkspace sharedWorkspace]; + STAssertTrue([ws gtm_isAppWithIdentifierRunning:@"com.apple.finder"], nil); + STAssertFalse([ws gtm_isAppWithIdentifierRunning:@"com.google.nothing"], nil); + + NSDictionary *processInfo = [ws gtm_processInfoDictionary]; + STAssertNotNil(processInfo, nil); + + BOOL wasLaunchedAsLoginItem = [ws gtm_wasLaunchedAsLoginItem]; + STAssertFalse(wasLaunchedAsLoginItem, nil); + + pid_t pid = getpid(); + NSDictionary *processInfo2 = [ws gtm_processInfoDictionaryForPID:pid]; + STAssertNotNil(processInfo2, nil); + STAssertEqualObjects(processInfo, processInfo2, nil); + + ProcessSerialNumber num = { 0, 0 }; + BOOL gotPSN = [ws gtm_processSerialNumber:&num + withBundleID:@"com.apple.finder"]; + STAssertTrue(gotPSN, nil); + STAssertGreaterThan(num.highLongOfPSN + num.lowLongOfPSN, (UInt32)0, nil); + gotPSN = [ws gtm_processSerialNumber:&num + withBundleID:@"bad.bundle.id"]; + STAssertFalse(gotPSN, nil); + + gotPSN = [ws gtm_processSerialNumber:NULL + withBundleID:nil]; + STAssertFalse(gotPSN, nil); + + processInfo = [ws gtm_processInfoDictionaryForActiveApp]; + STAssertNotNil(processInfo, nil); + + NSString *const keys[] = { + kGTMWorkspaceRunningPSN, kGTMWorkspaceRunningParentPSN, + kGTMWorkspaceRunningFlavor, kGTMWorkspaceRunningAttributes, + kGTMWorkspaceRunningFileType, kGTMWorkspaceRunningFileCreator, + kGTMWorkspaceRunningPID, kGTMWorkspaceRunningLSBackgroundOnly, + kGTMWorkspaceRunningLSUIElement, kGTMWorkspaceRunningIsHidden, + kGTMWorkspaceRunningCheckedIn, kGTMWorkspaceRunningBundleIdentifier, + kGTMWorkspaceRunningBundleVersion, kGTMWorkspaceRunningBundleName, + kGTMWorkspaceRunningLSUIPresentationMode, kGTMWorkspaceRunningBundlePath, + kGTMWorkspaceRunningBundleExecutable + }; + for (size_t i = 0; i < sizeof(keys) / sizeof(NSString *); ++i) { + NSString *const key = keys[i]; + STAssertNotNil([processInfo objectForKey:key], + @"Couldn't get %@ from %@", key, processInfo); + } +} + +@end |