Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit edfe5ba

Browse files
untangled the tests
1 parent 77d8088 commit edfe5ba

20 files changed

+782
-404
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ContainerTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
class ContainerTest extends HTML5TestBase{
15+
16+
public function containerDataProvider(){
17+
return [
18+
['[div]a div[/div]', '<div class="bb-container left">a div</div>'],
19+
['[div align=right]an aligned div[/div]', '<div class="bb-container right">an aligned div</div>'],
20+
['[p]a paragraph[/p]', '<p class="bb-container left">a paragraph</p>'],
21+
['[p align=right]an aligned paragraph[/p]', '<p class="bb-container right">an aligned paragraph</p>'],
22+
['[left]left[/left]', '<p class="bb-container left">left</p>'],
23+
['[left align=right]WAT[/left]', '<p class="bb-container left">WAT</p>'],
24+
['[right]right[/right]', '<p class="bb-container right">right</p>'],
25+
['[center]center[/center]', '<p class="bb-container center">center</p>'],
26+
];
27+
}
28+
29+
/**
30+
* @dataProvider containerDataProvider
31+
*/
32+
public function testContainerModule($bbcode, $expected){
33+
$this->assertEquals($expected, $this->parser->parse($bbcode));
34+
}
35+
36+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ExpanderTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class ExpanderTest
16+
*/
17+
class ExpanderTest extends HTML5TestBase{
18+
19+
public function expanderDataProvider(){
20+
return [
21+
['[expander]expander[/expander]', '<div data-id="abcdef12" title="Expander" class="expander-header expander">Expander</div><div id="abcdef12" class="expander-body" style="display:block">expander</div>'],
22+
['[expander hide=1]expander[/expander]', '<div data-id="abcdef12" title="Expander" class="expander-header expander">Expander</div><div id="abcdef12" class="expander-body" style="display:none">expander</div>'],
23+
['[quote]quote[/quote]', '<div data-id="abcdef12" title="Quote" class="quote-header expander">Quote</div><div id="abcdef12" class="quote-body" style="display:block">quote</div>'],
24+
['[quote name=\'some person\' url=http://www.example.com hide=1]quote[/quote]', '<div data-id="abcdef12" title="Quote: some person, source: http://www.example.com" class="quote-header expander">Quote: some person <small>[<a href="http://www.example.com">source</a>]<small></div><div id="abcdef12" class="quote-body" style="display:none">quote</div>'],
25+
['[spoiler]spoiler[/spoiler]', '<div data-id="abcdef12" title="Spoiler" class="spoiler-header expander">Spoiler</div><div id="abcdef12" class="spoiler-body" style="display:none">spoiler</div>'],
26+
['[spoiler hide=0]spoiler[/spoiler]', '<div data-id="abcdef12" title="Spoiler" class="spoiler-header expander">Spoiler</div><div id="abcdef12" class="spoiler-body" style="display:none">spoiler</div>'],
27+
['[trigger]trigger warning[/trigger]', '<div data-id="abcdef12" title="Trigger warning! The following content may be harmful to sensitive audience!" class="trigger-header expander">Trigger warning! The following content may be harmful to sensitive audience!</div><div id="abcdef12" class="trigger-body" style="display:none">trigger warning</div>'],
28+
['[trigger hide=0]trigger warning[/trigger]', '<div data-id="abcdef12" title="Trigger warning! The following content may be harmful to sensitive audience!" class="trigger-header expander">Trigger warning! The following content may be harmful to sensitive audience!</div><div id="abcdef12" class="trigger-body" style="display:none">trigger warning</div>'],
29+
];
30+
}
31+
32+
/**
33+
* @dataProvider expanderDataProvider
34+
*/
35+
public function testExpanderModule($bbcode, $expected){
36+
$this->assertEquals($expected, preg_replace('/\"([a-f\d]{8})\"/i', '"abcdef12"', $this->parser->parse($bbcode)));
37+
}
38+
39+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource HTML5ModuleTestCritical.php
5+
* @created 11.02.2016
6+
* @package chillerlan\BBCodeTest\normal\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
use chillerlan\bbcode\Modules\Html5\Simpletext;
15+
16+
/**
17+
* Class HTML5ModuleTestCritical
18+
*/
19+
class HTML5ModuleTest extends HTML5TestBase{
20+
21+
public function testSanitizeCoverage(){
22+
$this->assertEquals('<span class="bb-text bold">&amp;</span>', $this->parser->parse('[b]&[/b]'));
23+
}
24+
25+
public function emptyTagDataProvider($tag){
26+
$this->setUp();
27+
return [array_keys($this->parser->getTagmap())];
28+
}
29+
30+
/**
31+
* @dataProvider emptyTagDataProvider
32+
*/
33+
public function testEmptyTags($tag){
34+
$exceptions = ['tr','td','th'];
35+
36+
if(!in_array($tag, $this->parser->getSingle()) && !in_array($tag, $exceptions)){
37+
$this->assertEquals('', $this->parser->parse('['.$tag.'][/'.$tag.']'));
38+
}
39+
else if(in_array($tag, $exceptions)){
40+
$this->assertEquals('<'.$tag.'></'.$tag.'>', $this->parser->parse('['.$tag.'][/'.$tag.']'));
41+
}
42+
else{
43+
$expected = [
44+
'br' => '<br />',
45+
'col' => '<col />',
46+
'hr' => '<hr />',
47+
'xkcd' => '',
48+
'clear' => '<br class="bb-clear both" />',
49+
][$tag];
50+
51+
$this->assertEquals($expected, $this->parser->parse('['.$tag.']'));
52+
}
53+
}
54+
55+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource HTML5TestBase.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
use chillerlan\bbcode\Modules\Html5\Html5BaseModule;
15+
use chillerlan\bbcode\Parser;
16+
use chillerlan\bbcode\ParserOptions;
17+
use chillerlan\BBCodeTest\normal\Modules\ModuleTestBase;
18+
19+
/**
20+
* Class HTML5TestBase
21+
*/
22+
class HTML5TestBase extends ModuleTestBase{
23+
24+
protected function setUp(){
25+
26+
$options = new ParserOptions;
27+
$options->ca_info = self::TESTDIR.'test-cacert.pem';
28+
$options->baseModuleInterface = Html5BaseModule::class;
29+
$options->allow_all = true;
30+
31+
$this->parser = new Parser($options);
32+
}
33+
34+
}

‎tests/normal/Modules/HTML5/LinkTest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource LinkTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class LinkTest
16+
*/
17+
class LinkTest extends HTML5TestBase{
18+
19+
public function linkDataProvider(){
20+
return [
21+
['[url]https://github.com/chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" class="blank">https://github.com/chillerlan/bbcode</a>'],
22+
['[url=https://github.com/chillerlan/bbcode]chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" class="blank">chillerlan/bbcode</a>'],
23+
['[url=https://github.com/chillerlan/bbcode title=\'some stuff\' class=some-css-class]chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" title="some stuff" class="some-css-class blank">chillerlan/bbcode</a>'],
24+
];
25+
}
26+
27+
/**
28+
* @dataProvider linkDataProvider
29+
*/
30+
public function testLinkModule($bbcode, $expected){
31+
$this->assertEquals($expected, $this->parser->parse($bbcode));
32+
}
33+
34+
}

‎tests/normal/Modules/HTML5/ListTest.php

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ListTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class ListTest
16+
*/
17+
class ListTest extends HTML5TestBase{
18+
19+
const INNER_BB = '[*]blah[*]blubb[*]foo[*]bar';
20+
const INNER_HTML = '<li>blah</li><li>blubb</li><li>foo</li><li>bar</li>';
21+
22+
public function orderedListDataProvider(){
23+
return [
24+
['0', 'decimal-leading-zero'],
25+
['1', 'decimal'],
26+
['a', 'lower-alpha'],
27+
['A', 'upper-alpha'],
28+
['i', 'lower-roman'],
29+
['I', 'upper-roman'],
30+
];
31+
}
32+
33+
/**
34+
* @dataProvider orderedListDataProvider
35+
*/
36+
public function testListModuleOrdered($type, $css){
37+
38+
$testdata = [
39+
// type only
40+
'[list type='.$type.']'.self::INNER_BB.'[/list]'
41+
=> '<ol class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
42+
// reversed
43+
'[list type='.$type.' reversed=1]'.self::INNER_BB.'[/list]'
44+
=> '<ol reversed="true" class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
45+
// start
46+
'[list=42 type='.$type.']'.self::INNER_BB.'[/list]'
47+
=> '<ol start="42" class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
48+
// all
49+
'[list=42 type='.$type.' reversed=1 class=foobar title=WAT]'.self::INNER_BB.'[/list]'
50+
=> '<ol start="42" reversed="true" title="WAT" class="foobar bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
51+
];
52+
53+
foreach($testdata as $bbcode => $expected){
54+
$this->assertEquals($expected, $this->parser->parse($bbcode));
55+
}
56+
57+
}
58+
59+
public function unorderedListDataProvider(){
60+
return [
61+
['c', 'circle'],
62+
['d', 'disc'],
63+
['s', 'square'],
64+
];
65+
}
66+
67+
/**
68+
* @dataProvider unorderedListDataProvider
69+
*/
70+
public function testListModuleUnordered($type, $css){
71+
72+
$testdata = [
73+
// type only
74+
'[list type='.$type.']'.self::INNER_BB.'[/list]',
75+
// should not happen...
76+
'[list=42 reversed=1 type='.$type.']'.self::INNER_BB.'[/list]',
77+
];
78+
79+
foreach($testdata as $bbcode){
80+
$this->assertEquals('<ul class="bb-list '.$css.'">'.self::INNER_HTML.'</ul>', $this->parser->parse($bbcode));
81+
}
82+
83+
}
84+
85+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource SimpletextTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
use chillerlan\bbcode\Modules\Html5\Simpletext;
14+
15+
/**
16+
* Class SimpletextTest
17+
*/
18+
class SimpletextTest extends HTML5TestBase{
19+
20+
public function simpletextDataProvider($tag){
21+
$this->setUp();
22+
return [array_keys($this->parser->getTagmap(), Simpletext::class)];
23+
}
24+
25+
/**
26+
* @dataProvider simpletextDataProvider
27+
*/
28+
public function testSimpletextModule($tag){
29+
$expected = '<'.$tag.' class="foobar">WAT</'.$tag.'>';
30+
31+
$this->assertEquals($expected, $this->parser->parse('['.$tag.' class=foobar]WAT[/'.$tag.']'));
32+
}
33+
34+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource SingleTagTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class SingleTagTest
16+
*/
17+
class SingleTagTest extends HTML5TestBase{
18+
19+
public function singletagDataProvider(){
20+
return [
21+
['[br]', '<br />'],
22+
['[hr]', '<hr />'],
23+
['[clear]', '<br class="bb-clear both" />'],
24+
['[col]', '<col />'],
25+
['[xkcd]', ''],
26+
['[xkcd=1530]', '<a href="https://xkcd.com/1530/" class="bb-xkcd">[xkcd 1530]</a>'],
27+
];
28+
}
29+
30+
/**
31+
* @dataProvider singletagDataProvider
32+
*/
33+
public function testSingletagModule($tag, $expected){
34+
$this->assertEquals($expected, $this->parser->parse($tag));
35+
}
36+
37+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /