aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMNSString+FindFolderTest.m
blob: 2f53d76dffc4ee87a66e27f9f96678ebb0be5be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
//  GTMNSString+FindFolderTest.m
//
//  Copyright 2006-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 "GTMNSString+FindFolder.h"

@interface GTMNSString_FindFolderTest : GTMTestCase
@end

@implementation GTMNSString_FindFolderTest

- (void)testStringWithPathForFolder {
  // for gtm_stringWithPathForFolder:inDomain:doCreate:
  // the parameters all get passed through to FSFindFolder so there's no point testing
  // other combinations; our semantics will match FSFindFolder's
  NSString *prefsPath = [NSString gtm_stringWithPathForFolder:kPreferencesFolderType
                                                     inDomain:kUserDomain
                                                     doCreate:NO];
  NSString *realPrefsPath = [@"~/Library/Preferences" stringByExpandingTildeInPath];
  XCTAssertEqualObjects(realPrefsPath, prefsPath, @"Found incorrect prefs path");


  // test the subfolder method; it should return nil if we pass NO and the
  // subfolder doesn't already exist

  NSString *googCacheNoCreatePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
                                                            subfolderName:@"GTMUnitTestDuzntExist"
                                                                 inDomain:kUserDomain
                                                                 doCreate:NO];
  XCTAssertNil(googCacheNoCreatePath, @"Should not exist: %@", googCacheNoCreatePath);

  // test creating ~/Library/Cache/GTMUnitTestCreated

  NSString *folderName = @"GTMUnitTestCreated";
  NSString *gtmCachePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
                                                   subfolderName:folderName
                                                        inDomain:kUserDomain
                                                        doCreate:YES];
  NSString *testPath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
                                                    inDomain:kUserDomain
                                                    doCreate:NO];
  NSString *testPathAppended = [testPath stringByAppendingPathComponent:folderName];
  XCTAssertEqualObjects(gtmCachePath, testPathAppended, @"Unexpected path name");

  NSFileManager* fileMgr = [NSFileManager defaultManager];
  BOOL isDir = NO;
  BOOL pathExists = [fileMgr fileExistsAtPath:gtmCachePath isDirectory:&isDir] && isDir;
  XCTAssertTrue(pathExists, @"Path %@ is not existing like it should", gtmCachePath);

  // test finding it again w/o having to create it
  NSString *gtmCachePath2 = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
                                                    subfolderName:folderName
                                                         inDomain:kUserDomain
                                                         doCreate:NO];
  XCTAssertEqualObjects(gtmCachePath2, gtmCachePath);

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  NSError *error = nil;
  BOOL didRemove = [fileMgr removeItemAtPath:gtmCachePath error:&error];
  XCTAssertTrue(didRemove, @"Error removing %@ (%@)", gtmCachePath, error);
#else
  BOOL didRemove = [fileMgr removeFileAtPath:gtmCachePath
                                     handler:nil];
  XCTAssertTrue(didRemove, @"Error removing %@", gtmCachePath);
#endif  // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
}

@end