13
13
#import " CCPackage_private.h"
14
14
#import " CCPackageConstants.h"
15
15
#import " CCPackageManagerDelegate.h"
16
+ #import " CCUnitTestAssertions.h"
17
+ #import " CCDirector.h"
18
+ #import " AppDelegate.h"
19
+
16
20
17
21
static NSString *const PACKAGE_BASE_URL = @" http://manager.test" ;
18
22
@@ -73,6 +77,7 @@ @interface CCPackageManagerTests : XCTestCase <CCPackageManagerDelegate>
73
77
@property (nonatomic ) BOOL managerReturnedFailed;
74
78
@property (nonatomic , copy ) NSString *customFolderName;
75
79
@property (nonatomic , strong ) NSError *managerReturnedWithError;
80
+ @property (nonatomic , strong ) NSMutableSet *cleanPathsArrayOnTearDown;
76
81
77
82
@end
78
83
@@ -82,9 +87,27 @@ @implementation CCPackageManagerTests
82
87
- (void )setUp
83
88
{
84
89
[super setUp ];
90
+
91
+ [(AppController *)[UIApplication sharedApplication ].delegate configureCocos2d ];
92
+ [[CCDirector sharedDirector ] stopAnimation ];
93
+
85
94
self.packageManager = [[CCPackageManager alloc ] init ];
95
+ _packageManager.delegate = self;
96
+
86
97
self.managerReturnedSuccessfully = NO ;
87
98
self.managerReturnedFailed = NO ;
99
+ self.managerReturnedWithError = nil ;
100
+ self.customFolderName = nil ;
101
+
102
+ // A set of paths to be removed on tear down
103
+ self.cleanPathsArrayOnTearDown = [NSMutableSet set ];
104
+ [_cleanPathsArrayOnTearDown addObject: [NSTemporaryDirectory () stringByAppendingPathComponent: PACKAGE_REL_UNZIP_FOLDER]];
105
+ [_cleanPathsArrayOnTearDown addObject: [NSTemporaryDirectory () stringByAppendingPathComponent: PACKAGE_REL_DOWNLOAD_FOLDER]];
106
+ [_cleanPathsArrayOnTearDown addObject: _packageManager.installedPackagesPath];
107
+
108
+ // Important for the standard identifier of packages which most often determined internally instead
109
+ // of provided by the user. In this case resolution will default to phonehd.
110
+ [CCFileUtils sharedFileUtils ].searchResolutionsOrder = [@[CCFileUtilsSuffixiPhoneHD] mutableCopy ];
88
111
89
112
[[NSUserDefaults standardUserDefaults ] setObject: nil forKey: PACKAGE_STORAGE_USERDEFAULTS_KEY];
90
113
@@ -95,11 +118,11 @@ - (void)tearDown
95
118
{
96
119
[NSURLProtocol unregisterClass: [CCPackageManagerTestURLProtocol class ]];
97
120
98
- // Delete all relevant folders: Download, unzip, install
99
121
NSFileManager *fileManager = [NSFileManager defaultManager ];
100
- [fileManager removeItemAtPath: [NSTemporaryDirectory () stringByAppendingPathComponent: PACKAGE_REL_UNZIP_FOLDER] error: nil ];
101
- [fileManager removeItemAtPath: [NSTemporaryDirectory () stringByAppendingPathComponent: PACKAGE_REL_DOWNLOAD_FOLDER] error: nil ];
102
- [fileManager removeItemAtPath: _packageManager.installedPackagesPath error: nil ];
122
+ for (NSString *path in _cleanPathsArrayOnTearDown)
123
+ {
124
+ [fileManager removeItemAtPath: path error: nil ];
125
+ }
103
126
104
127
[super tearDown ];
105
128
}
@@ -151,23 +174,20 @@ - (void)testSavePackages
151
174
// Note: Persistency of CCPackage is tested in CCPackageTests
152
175
}
153
176
154
- - (void )testLoadPackages
177
+ - (void )testDownloadWithNameAndBaseURLAndUnzipOnCustomQueue
155
178
{
156
- XCTFail (@" Not implemented yet." );
157
- }
158
-
159
- - (void )testDownloadWithNameAndBaseURL
160
- {
161
- [CCFileUtils sharedFileUtils ].searchResolutionsOrder = [@[CCFileUtilsSuffixiPhoneHD] mutableCopy ];
162
-
163
179
_packageManager.baseURL = [NSURL URLWithString: PACKAGE_BASE_URL];
164
- _packageManager. delegate = self;
180
+
165
181
CCPackage *package = [_packageManager downloadPackageWithName: @" testpackage" enableAfterDownload: YES ];
166
182
183
+ dispatch_queue_t queue = dispatch_queue_create (" testqueue" , DISPATCH_QUEUE_CONCURRENT);
184
+ _packageManager.unzippingQueue = queue;
185
+
167
186
[self waitForDelegateToReturn ];
168
187
169
188
XCTAssertNotNil (package);
170
189
XCTAssertTrue (_managerReturnedSuccessfully);
190
+ XCTAssertEqual (package.status , CCPackageStatusInstalledEnabled);
171
191
}
172
192
173
193
- (void )testDownloadWithCustomFolderNameInPackage
@@ -179,7 +199,6 @@ - (void)testDownloadWithCustomFolderNameInPackage
179
199
[CCFileUtils sharedFileUtils ].searchResolutionsOrder = [@[CCFileUtilsSuffixiPhoneHD] mutableCopy ];
180
200
181
201
_packageManager.baseURL = [NSURL URLWithString: PACKAGE_BASE_URL];
182
- _packageManager.delegate = self;
183
202
184
203
self.customFolderName = @" testpackage-iOS-phonehd" ;
185
204
@@ -196,7 +215,6 @@ - (void)testCannotDetermineFolderNameWhenUnzipping
196
215
// Like in testDownloadWithCustomFolderNameInPackage but this time we expect an error and a failing delegate method
197
216
198
217
_packageManager.baseURL = [NSURL URLWithString: PACKAGE_BASE_URL];
199
- _packageManager.delegate = self;
200
218
201
219
CCPackage *package = [_packageManager downloadPackageWithName: @" Foo" enableAfterDownload: YES ];
202
220
@@ -209,7 +227,6 @@ - (void)testCannotDetermineFolderNameWhenUnzipping
209
227
210
228
- (void )testDownloadWithoutBaseURLShouldFail
211
229
{
212
- _packageManager.delegate = self;
213
230
CCPackage *package = [_packageManager downloadPackageWithName: @" testpackage" enableAfterDownload: YES ];
214
231
215
232
[self waitForDelegateToReturn ];
@@ -219,17 +236,59 @@ - (void)testDownloadWithoutBaseURLShouldFail
219
236
XCTAssertEqual (_managerReturnedWithError.code , PACKAGE_ERROR_MANAGER_NO_BASE_URL_SET);
220
237
}
221
238
222
- - (void )testDownloadWithNameAndWithoutBaseURLUnzipOnACustomQueue
239
+ - (void )testSetInstallPath
223
240
{
224
- // Use a custom queue for unzipping
225
- XCTFail (@" Not implemented yet." );
241
+ // Test: set a non existing path
242
+ NSFileManager *fileManager = [NSFileManager defaultManager ];
243
+
244
+ NSString *customInstallPath = [NSTemporaryDirectory () stringByAppendingPathComponent: @" FooBar" ];
245
+ [_cleanPathsArrayOnTearDown addObject: customInstallPath];
246
+
247
+ _packageManager.installedPackagesPath = customInstallPath;
248
+
249
+ XCTAssertTrue ([fileManager fileExistsAtPath: customInstallPath]);
250
+ CCAssertEqualStrings (customInstallPath, _packageManager.installedPackagesPath );
251
+
252
+
253
+ // Test2: set an existing path
254
+ NSString *customInstallPath2 = [NSTemporaryDirectory () stringByAppendingPathComponent: @" FooBar2" ];
255
+ [_cleanPathsArrayOnTearDown addObject: customInstallPath2];
256
+
257
+ [fileManager createDirectoryAtPath: customInstallPath2 withIntermediateDirectories: YES attributes: nil error: nil ];
258
+
259
+ _packageManager.installedPackagesPath = customInstallPath2;
260
+ XCTAssertTrue ([fileManager fileExistsAtPath: customInstallPath]);
261
+ CCAssertEqualStrings (customInstallPath2, _packageManager.installedPackagesPath );
226
262
}
227
263
228
264
- (void )testDownloadOfPackageWithDifferentInstallPath
229
265
{
230
- // add CCPackage and download:package
231
- // use different installPath
266
+ NSString *customInstallPath = [NSTemporaryDirectory () stringByAppendingPathComponent: @" PackagesInstall" ];
267
+
268
+ NSFileManager *fileManager = [NSFileManager defaultManager ];
269
+ [fileManager removeItemAtPath: customInstallPath error: nil ];
270
+ [_cleanPathsArrayOnTearDown addObject: customInstallPath];
232
271
272
+ _packageManager.installedPackagesPath = customInstallPath;
273
+
274
+ CCPackage *package = [[CCPackage alloc ] initWithName: @" testpackage"
275
+ resolution: @" phonehd"
276
+ os: @" iOS"
277
+ remoteURL: [[NSURL URLWithString: PACKAGE_BASE_URL]
278
+ URLByAppendingPathComponent: @" testpackage-iOS-phonehd.zip" ]];
279
+
280
+ [_packageManager downloadPackage: package enableAfterDownload: NO ];
281
+
282
+ [self waitForDelegateToReturn ];
283
+
284
+ XCTAssertNotNil (package);
285
+ XCTAssertTrue (_managerReturnedSuccessfully);
286
+ XCTAssertEqual (package.status , CCPackageStatusInstalledDisabled);
287
+ }
288
+
289
+ /*
290
+ - (void)testLoadPackages
291
+ {
233
292
XCTFail(@"Not implemented yet.");
234
293
}
235
294
@@ -252,6 +311,7 @@ - (void)testCancelDownload
252
311
{
253
312
XCTFail(@"Not implemented yet.");
254
313
}
314
+ */
255
315
256
316
- (void )testAllOtherDownloadRelatedMethods
257
317
{
0 commit comments