* @copyright 2015 Smiley * @license MIT */ namespace chillerlan\QRCodeTest\Output; use chillerlan\QRCode\Output\QRString; use chillerlan\QRCode\Output\QRStringOptions; use chillerlan\QRCode\QRCode; class StringTest extends \PHPUnit_Framework_TestCase{ /** * @var \chillerlan\QRCode\Output\QRStringOptions */ protected $options; protected function setUp(){ $this->options = new QRStringOptions; } public function testOptionsInstance(){ $this->assertInstanceOf(QRStringOptions::class, $this->options); $this->assertEquals(QRCode::OUTPUT_STRING_HTML, $this->options->type); } public function stringDataProvider(){ return [ ['foobar', true, QRCode::OUTPUT_STRING_HTML, '

'.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], ['foobar', false, QRCode::OUTPUT_STRING_HTML, '

'.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], ['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]]'], ['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], ]; } /** * @dataProvider stringDataProvider */ public function testStringOutput($data, $omitEndTag, $type, $expected){ $this->options->type = $type; $this->options->htmlOmitEndTag = $omitEndTag; $this->assertEquals($expected, (new QRCode($data, new QRString($this->options)))->output()); } /** * @expectedException \chillerlan\QRCode\Output\QRCodeOutputException * @expectedExceptionMessage Invalid string output type! */ public function testOutputTypeException(){ $this->options->type = 'foo'; new QRString($this->options); } /** * @expectedException \chillerlan\QRCode\Output\QRCodeOutputException * @expectedExceptionMessage Invalid matrix! */ public function testSetMatrixException(){ (new QRString)->setMatrix([]); } }