Skip to content

Commit b3d2939

Browse files
committed
CCPackageInstaller unit tests added.
Unzipped package added to shared resources for those tests.
1 parent 4c6d71b commit b3d2939

File tree

7 files changed

+186
-4
lines changed

7 files changed

+186
-4
lines changed

UnitTests/CCPackageInstallerTests.m

Lines changed: 102 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,126 @@
77
//
88

99
#import <XCTest/XCTest.h>
10+
#import "CCPackage.h"
11+
#import "CCPackageInstallData.h"
12+
#import "CCPackage+InstallData.h"
13+
#import "CCPackageInstaller.h"
14+
#import "CCDirector.h"
15+
#import "CCFileUtils.h"
16+
#import "CCPackageConstants.h"
1017

1118
@interface CCPackageInstallerTests : XCTestCase
1219

20+
@property (nonatomic, strong) CCPackage *package;
21+
@property (nonatomic, strong) CCPackageInstallData *installData;
22+
@property (nonatomic, copy) NSString *installPath;
23+
@property (nonatomic, strong) CCPackageInstaller *installer;
24+
1325
@end
1426

27+
1528
@implementation CCPackageInstallerTests
1629

1730
- (void)setUp
1831
{
1932
[super setUp];
20-
// Put setup code here. This method is called before the invocation of each test method in the class.
33+
34+
self.package = [[CCPackage alloc] initWithName:@"Test"
35+
resolution:@"phonehd"
36+
os:@"iOS"
37+
remoteURL:[NSURL URLWithString:@"http://test.foo"]];
38+
39+
self.installData = [[CCPackageInstallData alloc] initWithPackage:_package];
40+
[_package setInstallData:_installData];
41+
42+
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
43+
self.installPath = [cachesPath stringByAppendingPathComponent:@"tests.Packages"];
44+
45+
self.installer = [[CCPackageInstaller alloc] initWithPackage:_package installPath:_installPath];
46+
47+
48+
[self deleteInstallData];
49+
50+
[self createPackageInstallFolder];
51+
}
52+
53+
- (void)createPackageInstallFolder
54+
{
55+
NSError *error;
56+
NSFileManager *fileManager = [NSFileManager defaultManager];
57+
if (![fileManager createDirectoryAtURL:[NSURL fileURLWithPath:_installPath]
58+
withIntermediateDirectories:YES
59+
attributes:nil
60+
error:&error])
61+
{
62+
NSLog(@"%@", error);
63+
}
2164
}
2265

2366
- (void)tearDown
2467
{
25-
// Put teardown code here. This method is called after the invocation of each test method in the class.
68+
[self deleteInstallData];
69+
2670
[super tearDown];
2771
}
2872

29-
- (void)testExample
73+
- (void)deleteInstallData
74+
{
75+
NSFileManager *fileManager = [NSFileManager defaultManager];
76+
77+
NSError *error;
78+
if (![fileManager removeItemAtPath:_installPath error:&error])
79+
{
80+
// NSLog(@"%@", error);
81+
}
82+
}
83+
84+
- (void)testInstallWithoutEnablingPackage
3085
{
31-
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
86+
[self setupInstallablePackage];
87+
88+
NSError *error;
89+
BOOL success = [_installer installWithError:&error];
90+
XCTAssertTrue(success, @"Installation was unsuccessful: %@", error);
91+
XCTAssertEqual(_package.status, CCPackageStatusInstalledDisabled);
92+
}
93+
94+
- (void)setupInstallablePackage
95+
{
96+
NSString *pathToPackage = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Resources-shared/Packages/testpackage-iOS-phonehd_unzipped"];
97+
98+
_installData.unzipURL = [NSURL fileURLWithPath:pathToPackage];
99+
_installData.folderName = @"testpackage-iOS-phonehd";
100+
_installData.enableOnDownload = NO;
101+
}
102+
103+
- (void)testInstallFailingUnzippedPackageDoesNotExist
104+
{
105+
NSString *pathToPackage = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Resources-shared/Packages/DOES_NOT_EXIST"];
106+
_installData.unzipURL = [NSURL fileURLWithPath:pathToPackage];
107+
108+
NSError *error;
109+
BOOL success = [_installer installWithError:&error];
110+
XCTAssertFalse(success, @"Installation was successful: %@", error);
111+
XCTAssertEqual(_package.status, CCPackageStatusInstallationFailed);
112+
XCTAssertEqual(error.code, PACKAGE_ERROR_INSTALL_UNZIPPED_PACKAGE_NOT_FOUND);
113+
}
114+
115+
- (void)testInstallFailingPackageAlreadyExists
116+
{
117+
[self setupInstallablePackage];
118+
119+
NSFileManager *fileManager = [NSFileManager defaultManager];
120+
[fileManager createDirectoryAtPath:[_installPath stringByAppendingPathComponent:@"testpackage-iOS-phonehd"]
121+
withIntermediateDirectories:YES
122+
attributes:nil
123+
error:nil];
124+
125+
NSError *error;
126+
BOOL success = [_installer installWithError:&error];
127+
XCTAssertFalse(success, @"Installation was successful: %@", error);
128+
XCTAssertEqual(_package.status, CCPackageStatusInstallationFailed);
129+
XCTAssertEqual(error.code, PACKAGE_ERROR_INSTALL_COULD_NOT_MOVE_PACKAGE_TO_INSTALL_FOLDER);
32130
}
33131

34132
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CCSetupScreenMode</key>
6+
<string>CCScreenModeFlexible</string>
7+
<key>CCSetupScreenOrientation</key>
8+
<string>CCScreenOrientationLandscape</string>
9+
<key>CCSetupTabletScale2X</key>
10+
<true/>
11+
</dict>
12+
</plist>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>filenames</key>
6+
<dict/>
7+
<key>metadata</key>
8+
<dict>
9+
<key>version</key>
10+
<integer>1</integer>
11+
</dict>
12+
</dict>
13+
</plist>
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>frames</key>
6+
<dict>
7+
<key>smileys/angrySmiley.png</key>
8+
<dict>
9+
<key>frame</key>
10+
<string>{{1, 29}, {42, 30}}</string>
11+
<key>offset</key>
12+
<string>{1, 2}</string>
13+
<key>rotated</key>
14+
<false/>
15+
<key>sourceColorRect</key>
16+
<string>{{5, 8}, {42, 30}}</string>
17+
<key>sourceSize</key>
18+
<string>{50, 50}</string>
19+
</dict>
20+
<key>smileys/boredSmiley.png</key>
21+
<dict>
22+
<key>frame</key>
23+
<string>{{1, 1}, {44, 26}}</string>
24+
<key>offset</key>
25+
<string>{1, -1}</string>
26+
<key>rotated</key>
27+
<false/>
28+
<key>sourceColorRect</key>
29+
<string>{{4, 13}, {44, 26}}</string>
30+
<key>sourceSize</key>
31+
<string>{50, 50}</string>
32+
</dict>
33+
</dict>
34+
<key>metadata</key>
35+
<dict>
36+
<key>format</key>
37+
<integer>2</integer>
38+
<key>size</key>
39+
<string>{64, 64}</string>
40+
<key>textureFileName</key>
41+
<string>smileys.png</string>
42+
</dict>
43+
</dict>
44+
</plist>
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>metadata</key>
6+
<dict>
7+
<key>version</key>
8+
<integer>1</integer>
9+
</dict>
10+
<key>spriteFrameFiles</key>
11+
<array>
12+
<string>smileys.plist</string>
13+
</array>
14+
</dict>
15+
</plist>

0 commit comments

Comments
 (0)