-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestUnits.m
79 lines (50 loc) · 2.17 KB
/
TestUnits.m
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
//
// TestUnits.m
// MathWars
//
// Created by Inf on 24.02.10.
// Copyright 2010 Soulteam. All rights reserved.
//
#import <OCMock/OCMock.h>
#import "MapObject.h"
#import "UnitFactory.h"
#import "TestUnits.h"
#define typeof __typeof__
@implementation TestUnits
-(void)testTankFactory {
Unit* unit;
id mockPlayer = [OCMockObject mockForProtocol:@protocol(PlayerProtocol)];
[[mockPlayer expect] assignUnit:(Unit*)[OCMArg any]];
UnitFactory* factory = [[UnitFactory alloc] init];
unit = [factory createUnitOfType:MWUnitTank withOwner:mockPlayer];
STAssertEquals(unit.type, (uint8_t)MWUnitTank, @"Нужен танк");
STAssertEquals(unit.maxHealth, (int8_t)1, @"Жизнь танка должна быть очень низкой");
STAssertEquals(unit.attack, (uint8_t)2, @"Атака танка должна быть низкой");
STAssertEquals(unit.health, unit.maxHealth, @"Здоровье должно быть максимальным");
STAssertEquals(unit.owner, mockPlayer, @"Владелец задан неверно");
STAssertNil(unit.location, @"Начальная локация должна быть пустой");
}
-(void)testMove {
int moveCount=1;
Unit* unit = [[Unit alloc] initWithType:MWUnitTank];
id mockOldLocation = [OCMockObject mockForClass:[MapObject class]];
unit.location = mockOldLocation;
id mockLocation = [OCMockObject mockForClass:[MapObject class]];
id mockPlayer = [OCMockObject mockForProtocol:@protocol(PlayerProtocol)];
id mockObserver = [OCMockObject mockForProtocol:@protocol(UnitObserver)];
[[[mockPlayer stub] andReturnValue:OCMOCK_VALUE(moveCount)] moveCount];
[[mockPlayer stub] assignUnit:unit];
[[mockOldLocation expect] setGuardian:nil];
[[mockObserver expect] unit:unit MovedTo:mockLocation];
[[mockPlayer expect] setMoveCount:0];
[[mockLocation expect] onUnitEnter:unit];
[unit addObserver:mockObserver];
unit.owner = mockPlayer;
[unit tryToMoveTo:mockLocation];
STAssertEquals(unit.location, mockLocation, @"Локация должна измениться");
[mockLocation verify];
[mockPlayer verify];
[mockOldLocation verify];
[mockObserver verify];
}
@end