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
Push — master ( 4cbdc0...b86122 )
by Dan
27s queued 15s
created

test_cloak_throws_when_missing_hardware()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 5
rs 10
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