Passed
Branch master (947605)
by smiley
03:06
created

StringTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 7
Bugs 1 Features 4
Metric Value
wmc 6
c 7
b 1
f 4
lcom 1
cbo 4
dl 0
loc 52
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A testOptionsInstance() 0 4 1
A stringDataProvider() 0 8 1
A testStringOutput() 0 5 1
A testOutputTypeException() 0 4 1
A testSetMatrixException() 0 3 1
1
<?php
2
/**
3
 *
4
 * @filesource   StringTest.php
5
 * @created      08.02.2016
6
 * @package      chillerlan\QRCodeTest\Output
7
 * @author       Smiley <[email protected]>
8
 * @copyright    2015 Smiley
9
 * @license      MIT
10
 */
11
12
namespace chillerlan\QRCodeTest\Output;
13
14
use chillerlan\QRCode\Output\QRString;
15
use chillerlan\QRCode\Output\QRStringOptions;
16
use chillerlan\QRCode\QRCode;
17
18
class StringTest extends \PHPUnit_Framework_TestCase{
19
20
	/**
21
	 * @var \chillerlan\QRCode\Output\QRStringOptions
22
	 */
23
	protected $options;
24
25
	protected function setUp(){
26
		$this->options = new QRStringOptions;
27
	}
28
29
	public function testOptionsInstance(){
30
		$this->assertInstanceOf(QRStringOptions::class, $this->options);
31
		$this->assertEquals(QRCode::OUTPUT_STRING_HTML, $this->options->type);
32
	}
33
34
	public function stringDataProvider(){
35
		return [
36
			['foobar', true,  QRCode::OUTPUT_STRING_HTML, '<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><i></i><i></i><b></b><b></b><b></b><i></i><b></b><b></b><b></b><b></b><b></b><b></b><b></b>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><b></b><b></b><b></b><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b><i></i><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><b></b><b></b><b></b><b></b>'.PHP_EOL.'<p><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><b></b><b></b><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i>'.PHP_EOL.'<p><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><b></b><i></i><i></i><i></i><b></b><i></i><i></i><b></b><i></i>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><i></i><i></i><i></i><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b>'.PHP_EOL.'<p><b></b><b></b><i></i><b></b><b></b><b></b><b></b><b></b><i></i><i></i><b></b><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b>'.PHP_EOL.'<p><b></b><b></b><i></i><i></i><b></b><b></b><i></i><i></i><b></b><i></i><b></b><b></b><b></b><b></b><i></i><b></b><b></b><i></i><i></i><b></b><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><i></i><i></i><b></b><b></b>'.PHP_EOL.'<p><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b><b></b><i></i><i></i><b></b><b></b><b></b>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><i></i><b></b><b></b><i></i><b></b><i></i><i></i><i></i><b></b><b></b><i></i><b></b><b></b>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><b></b><b></b><i></i><i></i><i></i><b></b><b></b><b></b><i></i><i></i><b></b><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b><i></i><b></b><i></i>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><b></b><i></i><i></i><i></i><b></b>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><b></b><b></b><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><b></b><i></i><b></b><i></i><i></i><b></b><b></b>'.PHP_EOL],
37
			['foobar', false, QRCode::OUTPUT_STRING_HTML, '<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><i></i><i></i><b></b><b></b><b></b><i></i><b></b><b></b><b></b><b></b><b></b><b></b><b></b></p>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><b></b><b></b><b></b><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b><i></i><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b></p>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b></p>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><b></b><b></b><b></b><b></b></p>'.PHP_EOL.'<p><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><b></b><b></b><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></p>'.PHP_EOL.'<p><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><i></i><i></i><b></b><i></i><i></i><i></i><b></b><i></i><i></i><b></b><i></i></p>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><i></i><i></i><i></i><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b></p>'.PHP_EOL.'<p><b></b><b></b><i></i><b></b><b></b><b></b><b></b><b></b><i></i><i></i><b></b><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b></p>'.PHP_EOL.'<p><b></b><b></b><i></i><i></i><b></b><b></b><i></i><i></i><b></b><i></i><b></b><b></b><b></b><b></b><i></i><b></b><b></b><i></i><i></i><b></b><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><i></i><i></i><b></b><b></b></p>'.PHP_EOL.'<p><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><i></i><b></b><b></b><i></i><i></i><b></b><b></b><b></b></p>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><i></i><b></b><b></b><i></i><b></b><i></i><i></i><i></i><b></b><b></b><i></i><b></b><b></b></p>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><b></b><b></b><i></i><i></i><i></i><b></b><b></b><b></b><i></i><i></i><b></b><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><i></i><b></b><i></i><b></b><i></i><b></b><i></i><i></i><b></b><b></b><i></i><b></b><i></i></p>'.PHP_EOL.'<p><b></b><i></i><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><i></i><b></b><b></b><b></b><b></b><i></i><i></i><i></i><b></b></p>'.PHP_EOL.'<p><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i><i></i><i></i><i></i><b></b><b></b><b></b><i></i><i></i><i></i><i></i><i></i><b></b><i></i></p>'.PHP_EOL.'<p><b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i><b></b><i></i><b></b><b></b><i></i><b></b><b></b><i></i><b></b><i></i><i></i><b></b><b></b></p>'.PHP_EOL],
38
			['foobar', false, QRCode::OUTPUT_STRING_JSON, '[[true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true],[true,false,false,false,false,false,true,false,true,true,true,false,false,false,true,false,false,false,false,false,true],[true,false,true,true,true,false,true,false,false,true,false,false,true,false,true,false,true,true,true,false,true],[true,false,true,true,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,false,true],[true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,true,false,true],[true,false,false,false,false,false,true,false,false,true,false,true,false,false,true,false,false,false,false,false,true],[true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true],[false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false],[true,false,true,false,true,false,true,false,false,true,false,false,true,false,false,false,true,false,false,true,false],[true,true,true,true,true,false,false,false,false,true,true,true,false,true,false,true,false,false,true,true,true],[true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,false,true,true],[true,true,false,false,true,true,false,false,true,false,true,true,true,true,false,true,true,false,false,true,true],[true,false,true,false,false,true,true,true,false,true,false,true,false,true,true,true,false,false,false,true,true],[false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,false,true,true,true],[true,true,true,true,true,true,true,false,false,true,true,false,true,false,false,false,true,true,false,true,true],[true,false,false,false,false,false,true,false,false,true,true,false,false,false,true,true,true,false,false,true,true],[true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,false,true,false,false,true,true],[true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,true,true,false,true,false],[true,false,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,false,false,false,true],[true,false,false,false,false,false,true,false,false,false,false,true,true,true,false,false,false,false,false,true,false],[true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true]]'],
39
			['foobar', false, QRCode::OUTPUT_STRING_TEXT, '#######   ### #######'.PHP_EOL.'#     # ###   #     #'.PHP_EOL.'# ### #  #  # # ### #'.PHP_EOL.'# ### #  ###  # ### #'.PHP_EOL.'# ### # ## ## # ### #'.PHP_EOL.'#     #  # #  #     #'.PHP_EOL.'####### # # # #######'.PHP_EOL.'         ##          '.PHP_EOL.'# # # #  #  #   #  # '.PHP_EOL.'#####    ### # #  ###'.PHP_EOL.'## #####  ## ### # ##'.PHP_EOL.'##  ##  # #### ##  ##'.PHP_EOL.'# #  ### # # ###   ##'.PHP_EOL.'        #     ##  ###'.PHP_EOL.'#######  ## #   ## ##'.PHP_EOL.'#     #  ##   ###  ##'.PHP_EOL.'# ### # ### # # #  ##'.PHP_EOL.'# ### #  # # #  ## # '.PHP_EOL.'# ### # ## # ####   #'.PHP_EOL.'#     #    ###     # '.PHP_EOL.'####### # ## ## #  ##'.PHP_EOL],
40
		];
41
	}
42
43
	/**
44
	 * @dataProvider stringDataProvider
45
	 */
46
	public function testStringOutput($data, $omitEndTag, $type, $expected){
47
		$this->options->type = $type;
48
		$this->options->htmlOmitEndTag = $omitEndTag;
49
		$this->assertEquals($expected, (new QRCode($data, new QRString($this->options)))->output());
50
	}
51
52
	/**
53
	 * @expectedException \chillerlan\QRCode\Output\QRCodeOutputException
54
	 * @expectedExceptionMessage Invalid string output type!
55
	 */
56
	public function testOutputTypeException(){
57
		$this->options->type = 'foo';
58
		new QRString($this->options);
59
	}
60
61
	/**
62
	 * @expectedException \chillerlan\QRCode\Output\QRCodeOutputException
63
	 * @expectedExceptionMessage Invalid matrix!
64
	 */
65
	public function testSetMatrixException(){
66
		(new QRString)->setMatrix([]);
67
	}
68
69
}
70