aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMNSFileManager+CarbonTest.m
blob: 95f881490b2fbbf67ce04619513790785877a117 (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
//
//  GTMNSFileManager+CarbonTest.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 "GTMNSFileManager+Carbon.h"
#import "GTMUnitTestDevLog.h"
#import <CoreServices/CoreServices.h>

@interface GTMNSFileManager_CarbonTest : GTMTestCase
@end
  
@implementation GTMNSFileManager_CarbonTest

- (void)testAliasPathFSRefConversion {
  NSString *path = NSHomeDirectory();
  STAssertNotNil(path, nil);
  NSFileManager *fileManager = [NSFileManager defaultManager];
  FSRef *fsRef = [fileManager gtm_FSRefForPath:path];
  STAssertNotNULL(fsRef, nil);
  AliasHandle alias;
  STAssertNoErr(FSNewAlias(nil, fsRef, &alias), nil);
  STAssertNotNULL(alias, nil);
  NSData *aliasData = [NSData dataWithBytes:*alias 
                                     length:GetAliasSize(alias)];
  STAssertNotNil(aliasData, nil);
  NSString *path2 = [fileManager gtm_pathFromAliasData:aliasData];
  STAssertEqualObjects(path, path2, nil);

  path2 = [fileManager gtm_pathFromAliasData:aliasData
                                     resolve:YES
                                      withUI:NO];
  STAssertEqualObjects(path, path2, nil);
  
  path2 = [fileManager gtm_pathFromAliasData:aliasData
                                     resolve:NO
                                      withUI:NO];
  STAssertEqualObjects(path, path2, nil);

  NSData *aliasData2 = [fileManager gtm_aliasDataForPath:path2];
  STAssertNotNil(aliasData2, nil);
  NSString *path3 = [fileManager gtm_pathFromAliasData:aliasData2];
  STAssertEqualObjects(path2, path3, nil);
  NSString *path4 = [fileManager gtm_pathFromFSRef:fsRef];
  STAssertEqualObjects(path, path4, nil);
  
  // Failure cases
  [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: "
    @"GoogleToolboxForMac: FSPathMakeRef.*"];
  STAssertNULL([fileManager gtm_FSRefForPath:@"/ptah/taht/dosent/esixt/"], 
               nil);

  STAssertNULL([fileManager gtm_FSRefForPath:@""], nil);
  STAssertNULL([fileManager gtm_FSRefForPath:nil], nil);
  STAssertNil([fileManager gtm_pathFromFSRef:nil], nil);
  STAssertNil([fileManager gtm_pathFromAliasData:nil], nil);
  STAssertNil([fileManager gtm_pathFromAliasData:[NSData data]], nil);
  
  [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: "
   @"GoogleToolboxForMac: FSPathMakeRef.*"];
  STAssertNil([fileManager gtm_aliasDataForPath:@"/ptah/taht/dosent/esixt/"], nil);
  STAssertNil([fileManager gtm_aliasDataForPath:@""], nil);
  STAssertNil([fileManager gtm_aliasDataForPath:nil], nil);
}
@end