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 — main (#1508)
by Dan
04:48
created

TradeGoodTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 35
dl 0
loc 62
rs 10
c 1
b 0
f 0
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A tearDownAfterClass() 0 3 1
A setUpBeforeClass() 0 7 1
A test_getImageHTML() 0 13 2
A test_get() 0 11 1
A test_getAllIDs() 0 16 1
1
<?php declare(strict_types=1);
2
3
namespace SmrTest\lib\DefaultGame;
4
5
use DOMDocument;
6
use PHPUnit\Framework\TestCase;
7
use Smr\TradeGood;
8
9
/**
10
 * @covers Smr\TradeGood
11
 */
12
class TradeGoodTest extends TestCase {
13
14
	private static bool $original_libxml_use_internal_errors;
15
16
	public static function setUpBeforeClass(): void {
17
		// Make sure cache is clear so we can cover the cache population code
18
		TradeGood::clearCache();
19
20
		// Get the original libxml state so we can restore it later
21
		self::$original_libxml_use_internal_errors = libxml_use_internal_errors(true);
22
		libxml_clear_errors();
23
	}
24
25
	public static function tearDownAfterClass(): void {
26
		// Restore the original libxml state
27
		libxml_use_internal_errors(self::$original_libxml_use_internal_errors);
28
	}
29
30
	public function test_getAllIDs(): void {
31
		$expected = [
32
			GOODS_WOOD,
33
			GOODS_FOOD,
34
			GOODS_ORE,
35
			GOODS_PRECIOUS_METALS,
36
			GOODS_SLAVES,
37
			GOODS_TEXTILES,
38
			GOODS_MACHINERY,
39
			GOODS_CIRCUITRY,
40
			GOODS_WEAPONS,
41
			GOODS_COMPUTERS,
42
			GOODS_LUXURY_ITEMS,
43
			GOODS_NARCOTICS,
44
		];
45
		self::assertSame($expected, TradeGood::getAllIDs());
46
	}
47
48
	public function test_get(): void {
49
		// Spot check one of the TradeGoods
50
		$expected = new TradeGood(
51
			id: GOODS_WEAPONS,
52
			name: 'Weapons',
53
			maxPortAmount: 5000,
54
			basePrice: 168,
55
			class: 2,
56
			alignRestriction: -115,
57
		);
58
		self::assertEquals($expected, TradeGood::get(GOODS_WEAPONS));
59
	}
60
61
	public function test_getImageHTML(): void {
62
		foreach (TradeGood::getAll() as $good) {
63
			// Test as both HTML and XML because they each catch different errors
64
			// (loadHTML can validate things like tags, but automatically fixes many
65
			// HTML syntax errors without reporting them; whereas loadXML is more
66
			// strict about syntax, but not all XML is also valid HTML).
67
			$html = $good->getImageHTML();
68
			$dom = new DOMDocument();
69
			$dom->loadHTML($html);
70
			$dom->loadXML($html);
71
			self::assertSame([], libxml_get_errors(), $good->name);
72
			// Clear errors for the next case
73
			libxml_clear_errors();
74
		}
75
	}
76
77
}
78