* @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 [ [QRCode::OUTPUT_STRING_HTML, true, 'foobar', '
'.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], [QRCode::OUTPUT_STRING_HTML, false, 'foobar', '
'.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], [QRCode::OUTPUT_STRING_JSON, false, 'foobar', '[[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]]'], [QRCode::OUTPUT_STRING_TEXT, false, 'foobar', '####### ### #######'.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], [QRCode::OUTPUT_STRING_HTML, true, 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net', '
'.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.'
'.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], [QRCode::OUTPUT_STRING_HTML, false, 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net', '
'.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.'
'.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], [QRCode::OUTPUT_STRING_JSON, false, 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net', '[[true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true],[true,false,false,false,false,false,true,false,false,true,true,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,true,true,true,false,true,false,false,false,false,false,true],[true,false,true,true,true,false,true,false,false,true,true,false,true,false,true,false,false,true,false,true,true,false,false,true,true,false,false,true,true,false,true,false,true,true,true,false,true],[true,false,true,true,true,false,true,false,false,false,true,true,false,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true],[true,false,true,true,true,false,true,false,false,true,false,true,false,false,false,false,true,false,false,true,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true],[true,false,false,false,false,false,true,false,true,false,false,false,true,true,true,false,false,false,false,true,true,false,true,false,false,true,false,true,true,false,true,false,false,false,false,false,true],[true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,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,false,false,true,false,true,false,false,true,true,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false],[true,false,false,true,false,true,true,false,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,true,false,false,false,false,false],[false,false,false,false,true,true,false,false,false,false,true,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,false,false,true,true,false,true],[true,false,false,true,true,false,true,false,true,true,true,false,true,false,true,true,false,true,false,true,false,false,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true],[true,false,true,false,true,true,false,false,false,true,true,true,false,false,false,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,false,false,false],[false,false,true,false,false,false,true,true,true,true,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,true,false,false,true,false,true,false,false,true,false,true,true],[false,false,true,true,true,false,false,true,false,false,false,false,false,false,true,true,false,false,false,false,true,true,false,false,true,false,true,false,true,true,true,false,false,true,true,true,true],[true,false,false,false,false,false,true,true,true,false,true,true,false,false,false,false,true,false,false,false,false,false,true,true,false,false,false,false,true,true,true,false,true,false,true,false,true],[true,false,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,false,false,true,true,true,false,false,true,true],[true,false,false,false,false,true,true,true,false,false,true,false,false,true,false,true,true,false,false,true,true,false,false,false,true,false,false,false,false,true,true,false,false,false,true,true,true],[false,true,false,true,false,true,false,true,true,true,false,false,false,true,true,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,true,true,true,true,false,true,true],[false,false,true,true,true,false,true,false,false,false,true,false,true,false,true,false,false,true,true,true,true,false,false,false,true,true,true,false,true,true,false,false,false,true,false,true,true],[true,false,false,false,true,false,false,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,false,true,false,false,false,true,false,true],[false,true,false,false,true,false,true,false,false,false,false,true,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,false,false,false],[false,false,false,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,false,false,false,false,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true],[true,false,true,false,true,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,true],[false,false,true,true,false,false,false,true,true,false,true,false,false,false,true,true,false,false,true,true,true,false,false,false,true,true,true,true,true,false,false,true,false,false,false,true,false],[true,true,false,true,false,false,true,false,false,false,true,true,true,false,true,true,true,false,true,true,false,false,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true],[false,true,false,false,true,true,false,true,false,true,false,false,false,false,false,true,false,true,true,false,false,true,true,false,true,false,false,false,false,true,true,true,false,true,true,true,true],[true,false,true,false,true,false,true,true,false,false,true,false,false,true,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,false,true,true,false,true,false,false,true],[false,true,false,false,false,true,false,false,true,false,false,false,true,true,true,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,false,false,false,false,false,false,false],[true,true,false,true,false,true,true,false,false,false,false,false,false,false,true,true,true,false,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true],[false,false,false,false,false,false,false,false,true,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,false,false,true,false,false,true,true],[true,true,true,true,true,true,true,false,false,true,true,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,true,false,true,false,true,true,true,false,true],[true,false,false,false,false,false,true,false,true,true,false,false,false,true,false,false,false,false,false,true,false,true,false,false,false,false,false,false,true,false,false,false,true,false,true,true,true],[true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false],[true,false,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,false,true,true,true,true,false,true,false,false,false,true,false,false,true,true,false,false,true,false],[true,false,true,true,true,false,true,false,false,false,false,false,true,true,true,false,true,true,false,false,true,true,false,false,true,false,false,true,true,false,false,false,true,true,false,true,true],[true,false,false,false,false,false,true,false,false,true,false,false,false,true,false,true,false,false,false,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,false,false,false],[true,true,true,true,true,true,true,false,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,false,true,false,true,true,true,true,true,true,false,false,true,true]]'], [QRCode::OUTPUT_STRING_TEXT, false, 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net', '####### #### ### # # ## #######'.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.' ### # ### #### # # # ## # ##'.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($type, $omitEndTag, $data, $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([]); } }