Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Failed Conditions
Pull Request — master (#1018)
by Dan
04:32
created

AbstractSmrShipTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 13
rs 9.9332
c 1
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace SmrTest\lib\DefaultGame;
4
5
use AbstractSmrShip;
6
use AbstractSmrPlayer;
7
8
/**
9
 * This test is expected to not make any changes to the database.
10
 * @covers AbstractSmrShip
11
 */
12
class AbstractSmrShipTest extends \PHPUnit\Framework\TestCase {
13
14
	private $player;
15
16
	protected function setUp() : void {
17
		// Create mock player that will be needed to create any ship
18
		$this->player = $this->createMock(AbstractSmrPlayer::class);
19
		$this->player
20
			->method('getAccountID')
21
			->willReturn(7);
22
		$this->player
23
			->method('getGameID')
24
			->willReturn(3);
25
		// Use Demonica because it's the only ship with all special hardware
26
		$this->player
27
			->method('getShipTypeID')
28
			->willReturn(SHIP_TYPE_DEMONICA);
29
	}
30
31
	public function test_base_ship_properties_are_set_correctly() {
32
		$ship = new AbstractSmrShip($this->player);
33
		self::assertSame('Demonica', $ship->getName());
34
		self::assertSame(SHIP_TYPE_DEMONICA, $ship->getShipTypeID());
35
		self::assertSame(AbstractSmrShip::SHIP_CLASS_HUNTER, $ship->getShipClassID());
36
		self::assertSame(6, $ship->getHardpoints());
37
		self::assertSame(10, $ship->getSpeed());
38
		self::assertSame(0, $ship->getCost());
39
	}
40
41
	public function test_cloak() {
42
		$ship = new AbstractSmrShip($this->player);
43
44
		// ships are initially uncloaked
45
		self::assertFalse($ship->isCloaked());
46
47
		// remain uncloaked when disabled without hardware
48
		$ship->decloak();
49
		self::assertFalse($ship->isCloaked());
50
51
		// add cloak hardware
52
		$ship->increaseHardware(HARDWARE_CLOAK, 1);
53
		self::assertFalse($ship->isCloaked());
54
		// enable
55
		$ship->enableCloak();
56
		self::assertTrue($ship->isCloaked());
57
		// disable
58
		$ship->decloak();
59
		self::assertFalse($ship->isCloaked());
60
	}
61
62
	public function test_cloak_throws_when_missing_hardware() {
63
		$ship = new AbstractSmrShip($this->player);
64
		$this->expectException(\Exception::class);
65
		$this->expectExceptionMessage('Ship does not have the supported hardware!');
66
		$ship->enableCloak();
67
	}
68
69
	public function test_illusion_generator() {
70
		$ship = new AbstractSmrShip($this->player);
71
72
		// ship has no IG initially
73
		self::assertFalse($ship->getIllusionShip());
74
75
		// remain unset when disabled without hardware
76
		$ship->disableIllusion();
77
		self::assertFalse($ship->getIllusionShip());
78
79
		// add IG hardware
80
		$ship->increaseHardware(HARDWARE_ILLUSION, 1);
81
		self::assertFalse($ship->getIllusionShip());
82
		// enable
83
		$ship->setIllusion(SHIP_TYPE_THIEF, 12, 13);
84
		$expected = [
85
			'ID' => SHIP_TYPE_THIEF,
86
			'Attack' => 12,
87
			'Defense' => 13,
88
		];
89
		self::assertSame($expected, $ship->getIllusionShip());
90
		self::assertSame($expected['ID'], $ship->getIllusionShipID());
91
		self::assertSame($expected['Attack'], $ship->getIllusionAttack());
92
		self::assertSame($expected['Defense'], $ship->getIllusionDefense());
93
		self::assertSame('Thief', $ship->getIllusionShipName());
94
		// disable
95
		$ship->disableIllusion();
96
		self::assertFalse($ship->getIllusionShip());
97
	}
98
99
	public function test_illusion_throws_when_missing_hardware() {
100
		$ship = new AbstractSmrShip($this->player);
101
		$this->expectException(\Exception::class);
102
		$this->expectExceptionMessage('Ship does not have the supported hardware!');
103
		$ship->setIllusion(SHIP_TYPE_THIEF, 12, 13);;
104
	}
105
106
	public function test_hardware() {
107
		$ship = new AbstractSmrShip($this->player);
108
109
		// shields
110
		self::assertSame(0, $ship->getShields());
111
		$ship->increaseShields(10);
112
		self::assertSame(10, $ship->getShields());
113
		$ship->increaseShields(5);
114
		self::assertSame(15, $ship->getShields());
115
		$ship->decreaseShields(10);
116
		self::assertSame(5, $ship->getShields());
117
118
		// armour
119
		self::assertSame(0, $ship->getArmour());
120
		$ship->increaseArmour(10);
121
		self::assertSame(10, $ship->getArmour());
122
		$ship->increaseArmour(5);
123
		self::assertSame(15, $ship->getArmour());
124
		$ship->decreaseArmour(10);
125
		self::assertSame(5, $ship->getArmour());
126
127
		// CDs
128
		self::assertSame(0, $ship->getCDs());
129
		$ship->increaseCDs(10);
130
		self::assertSame(10, $ship->getCDs());
131
		$ship->increaseCDs(5);
132
		self::assertSame(15, $ship->getCDs());
133
		$ship->decreaseCDs(10);
134
		self::assertSame(5, $ship->getCDs());
135
136
		// Mines
137
		self::assertSame(0, $ship->getMines());
138
		$ship->increaseMines(10);
139
		self::assertSame(10, $ship->getMines());
140
		$ship->increaseMines(5);
141
		self::assertSame(15, $ship->getMines());
142
		$ship->decreaseMines(10);
143
		self::assertSame(5, $ship->getMines());
144
145
		// SDs
146
		self::assertSame(0, $ship->getSDs());
147
		$ship->increaseSDs(10);
148
		self::assertSame(10, $ship->getSDs());
149
		$ship->increaseSDs(5);
150
		self::assertSame(15, $ship->getSDs());
151
		$ship->decreaseSDs(10);
152
		self::assertSame(5, $ship->getSDs());
153
154
		// Cloak
155
		self::assertTrue($ship->canHaveCloak());
156
		self::assertFalse($ship->hasCloak());
157
		$ship->increaseHardware(HARDWARE_CLOAK, 1);
158
		self::assertTrue($ship->hasCloak());
159
160
		// Illusion
161
		self::assertTrue($ship->canHaveIllusion());
162
		self::assertFalse($ship->hasIllusion());
163
		$ship->increaseHardware(HARDWARE_ILLUSION, 1);
164
		self::assertTrue($ship->hasIllusion());
165
166
		// Jump
167
		self::assertTrue($ship->canHaveJump());
168
		self::assertFalse($ship->hasJump());
169
		$ship->increaseHardware(HARDWARE_JUMP, 1);
170
		self::assertTrue($ship->hasJump());
171
172
		// Scanner
173
		self::assertTrue($ship->canHaveScanner());
174
		self::assertFalse($ship->hasScanner());
175
		$ship->increaseHardware(HARDWARE_SCANNER, 1);
176
		self::assertTrue($ship->hasScanner());
177
178
		// DCs
179
		self::assertTrue($ship->canHaveDCs());
180
		self::assertFalse($ship->hasDCs());
181
		$ship->increaseHardware(HARDWARE_DCS, 1);
182
		self::assertTrue($ship->hasDCs());
183
	}
184
185
}
186