Completed
Push — master ( d47933...c392d1 )
by smiley
04:38
created

BaseModuleTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 5
c 2
b 0
f 1
lcom 1
cbo 2
dl 0
loc 63
rs 10
1
<?php
2
/**
3
 *
4
 * @filesource   BaseModuleTest.php
5
 * @created      13.02.2016
6
 * @package      normal\Modules
7
 * @author       Smiley <[email protected]>
8
 * @copyright    2015 Smiley
9
 * @license      MIT
10
 */
11
12
namespace chillerlan\BBCodeTest\normal\Modules;
13
14
use chillerlan\bbcode\BBTemp;
15
use chillerlan\bbcode\Modules\BaseModuleInfo;
16
use chillerlan\bbcode\Modules\BaseModuleInterface;
17
use chillerlan\bbcode\Modules\Html5\Html5BaseModule;
18
use chillerlan\bbcode\Modules\Markdown\MarkdownBaseModule;
19
use chillerlan\bbcode\Modules\Markup\MarkupBaseModule;
20
use chillerlan\bbcode\Modules\ModuleInterface;
21
use chillerlan\bbcode\Modules\Text\TextBaseModule;
22
use ReflectionClass;
23
24
class BaseModuleTest extends \PHPUnit_Framework_TestCase{
25
26
	const BASE_MODULES = [
27
		Html5BaseModule::class,
28
		MarkupBaseModule::class,
29
		MarkdownBaseModule::class,
30
		TextBaseModule::class,
31
	];
32
33
	/**
34
	 * @var \chillerlan\bbcode\BBTemp
35
	 */
36
	protected $BBTemp;
37
38
	/**
39
	 * @var \chillerlan\bbcode\Modules\BaseModuleInterface
40
	 */
41
	protected $baseModule;
42
43
	/**
44
	 * @var \chillerlan\bbcode\Modules\BaseModuleInfo
45
	 */
46
	protected $moduleInfo;
47
48
	/**
49
	 * Holds the current encoder module
50
	 *
51
	 * @var \chillerlan\bbcode\Modules\ModuleInterface
52
	 */
53
	protected $module;
54
55
	protected function setUp(){
56
		$this->BBTemp = new BBTemp;
57
	}
58
59
	public function testBaseModules(){
60
		foreach(self::BASE_MODULES as $base_module){
61
			$baseModuleReflection = new ReflectionClass($base_module);
62
			$this->assertEquals(BaseModuleInterface::class, $baseModuleReflection->getInterfaceNames()[0]);
63
64
			$this->baseModule = $baseModuleReflection->newInstance();
65
			$this->moduleInfo = $baseModuleReflection->getMethod('getInfo')->invoke($this->baseModule);
66
			$this->assertInstanceOf(BaseModuleInfo::class, $this->moduleInfo);
67
			$moduleInfoReflection = new ReflectionClass($this->moduleInfo);
68
69
			// mimicking Parser::setOptions() here
70
			$tagmap = [];
71
			foreach($moduleInfoReflection->getProperty('modules')->getValue($this->moduleInfo) as $module){
72
				$moduleReflection = new ReflectionClass($module);
73
				$this->assertEquals(ModuleInterface::class, $moduleReflection->getInterfaceNames()[1]);
74
75
				$this->module = $moduleReflection->newInstanceArgs([$this->BBTemp]);
76
				$tagmapArray = $moduleReflection->getMethod('getTags')->invoke($this->module);
77
78
				foreach($tagmapArray->tags as $tag){
79
					$tagmap[$tag] = $module;
80
				}
81
			}
82
#			var_dump($tagmap);
83
		}
84
	}
85
86
}
87