removed unused jbbcode files
This commit is contained in:
parent
2d8504c104
commit
2cdb68ce7e
16 changed files with 0 additions and 1007 deletions
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
require_once "/path/to/jbbcode/Parser.php";
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
|
||||
$text = "The default codes include: [b]bold[/b], [i]italics[/i], [u]underlining[/u], ";
|
||||
$text .= "[url=http://jbbcode.com]links[/url], [color=red]color![/color] and more.";
|
||||
|
||||
$parser->parse($text);
|
||||
|
||||
print $parser->getAsHtml();
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
require_once "/path/to/jbbcode/Parser.php";
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
|
||||
$text = "The bbcode in here [b]is never closed!";
|
||||
$parser->parse($text);
|
||||
|
||||
print $parser->getAsBBCode();
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
require_once "/path/to/jbbcode/Parser.php";
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
|
||||
$text = "[b][u]There is [i]a lot[/i] of [url=http://en.wikipedia.org/wiki/Markup_language]markup[/url] in this";
|
||||
$text .= "[color=#333333]text[/color]![/u][/b]";
|
||||
$parser->parse($text);
|
||||
|
||||
print $parser->getAsText();
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
require_once "/path/to/jbbcode/Parser.php";
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
|
||||
$parser->addBBCode("quote", '<div class="quote">{param}</div>');
|
||||
$parser->addBBCode("code", '<pre class="code">{param}</pre>', false, false, 1);
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once("../Parser.php");
|
||||
require_once("../visitors/SmileyVisitor.php");
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
|
||||
if (count($argv) < 2) {
|
||||
die("Usage: " . $argv[0] . " \"bbcode string\"\n");
|
||||
}
|
||||
|
||||
$inputText = $argv[1];
|
||||
|
||||
$parser->parse($inputText);
|
||||
|
||||
$smileyVisitor = new \JBBCode\visitors\SmileyVisitor();
|
||||
$parser->accept($smileyVisitor);
|
||||
|
||||
echo $parser->getAsHTML() . "\n";
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once("../Parser.php");
|
||||
require_once("../visitors/TagCountingVisitor.php");
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
|
||||
if (count($argv) < 3) {
|
||||
die("Usage: " . $argv[0] . " \"bbcode string\" <tag name to check>\n");
|
||||
}
|
||||
|
||||
$inputText = $argv[1];
|
||||
$tagName = $argv[2];
|
||||
|
||||
$parser->parse($inputText);
|
||||
|
||||
$tagCountingVisitor = new \JBBCode\visitors\TagCountingVisitor();
|
||||
$parser->accept($tagCountingVisitor);
|
||||
|
||||
echo $tagCountingVisitor->getFrequency($tagName) . "\n";
|
|
@ -1,85 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php');
|
||||
|
||||
/**
|
||||
* Test cases testing the functionality of parsing bbcode and
|
||||
* retrieving a bbcode well-formed bbcode representation.
|
||||
*
|
||||
* @author jbowens
|
||||
*/
|
||||
class BBCodeToBBCodeTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* A utility method for these tests that will evaluate its arguments as bbcode with
|
||||
* a fresh parser loaded with only the default bbcodes. It returns the
|
||||
* bbcode output, which in most cases should be in the input itself.
|
||||
*/
|
||||
private function defaultBBCodeParse($bbcode)
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
return $parser->getAsBBCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the given bbcode matches the given text when
|
||||
* the bbcode is run through defaultBBCodeParse
|
||||
*/
|
||||
private function assertBBCodeOutput($bbcode, $text)
|
||||
{
|
||||
$this->assertEquals($this->defaultBBCodeParse($bbcode), $text);
|
||||
}
|
||||
|
||||
public function testEmptyString()
|
||||
{
|
||||
$this->assertBBCodeOutput('', '');
|
||||
}
|
||||
|
||||
public function testOneTag()
|
||||
{
|
||||
$this->assertBBCodeOutput('[b]this is bold[/b]', '[b]this is bold[/b]');
|
||||
}
|
||||
|
||||
public function testOneTagWithSurroundingText()
|
||||
{
|
||||
$this->assertBBCodeOutput('buffer text [b]this is bold[/b] buffer text',
|
||||
'buffer text [b]this is bold[/b] buffer text');
|
||||
}
|
||||
|
||||
public function testMultipleTags()
|
||||
{
|
||||
$bbcode = 'this is some text with [b]bold tags[/b] and [i]italics[/i] and ' .
|
||||
'things like [u]that[/u].';
|
||||
$bbcodeOutput = 'this is some text with [b]bold tags[/b] and [i]italics[/i] and ' .
|
||||
'things like [u]that[/u].';
|
||||
$this->assertBBCodeOutput($bbcode, $bbcodeOutput);
|
||||
}
|
||||
|
||||
public function testCodeOptions()
|
||||
{
|
||||
$code = 'This contains a [url=http://jbbcode.com]url[/url] which uses an option.';
|
||||
$codeOutput = 'This contains a [url=http://jbbcode.com]url[/url] which uses an option.';
|
||||
$this->assertBBCodeOutput($code, $codeOutput);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCodeOptions
|
||||
*/
|
||||
public function testOmittedOption()
|
||||
{
|
||||
$code = 'This doesn\'t use the url option [url]http://jbbcode.com[/url].';
|
||||
$codeOutput = 'This doesn\'t use the url option [url]http://jbbcode.com[/url].';
|
||||
$this->assertBBCodeOutput($code, $codeOutput);
|
||||
}
|
||||
|
||||
public function testUnclosedTags()
|
||||
{
|
||||
$code = '[b]bold';
|
||||
$codeOutput = '[b]bold[/b]';
|
||||
$this->assertBBCodeOutput($code, $codeOutput);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php');
|
||||
|
||||
/**
|
||||
* Test cases testing the ability to parse bbcode and retrieve a
|
||||
* plain text representation without any markup.
|
||||
*
|
||||
* @author jbowens
|
||||
*/
|
||||
class BBCodeToTextTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* A utility method for these tests that will evaluate
|
||||
* its arguments as bbcode with a fresh parser loaded
|
||||
* with only the default bbcodes. It returns the
|
||||
* text output.
|
||||
*/
|
||||
private function defaultTextParse($bbcode)
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
return $parser->getAsText();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the given bbcode matches the given text when
|
||||
* the bbcode is run through defaultTextParse
|
||||
*/
|
||||
private function assertTextOutput($bbcode, $text)
|
||||
{
|
||||
$this->assertEquals($text, $this->defaultTextParse($bbcode));
|
||||
}
|
||||
|
||||
public function testEmptyString()
|
||||
{
|
||||
$this->assertTextOutput('', '');
|
||||
}
|
||||
|
||||
public function testOneTag()
|
||||
{
|
||||
$this->assertTextOutput('[b]this is bold[/b]', 'this is bold');
|
||||
}
|
||||
|
||||
public function testOneTagWithSurroundingText()
|
||||
{
|
||||
$this->assertTextOutput('buffer text [b]this is bold[/b] buffer text',
|
||||
'buffer text this is bold buffer text');
|
||||
}
|
||||
|
||||
public function testMultipleTags()
|
||||
{
|
||||
$bbcode = 'this is some text with [b]bold tags[/b] and [i]italics[/i] and ' .
|
||||
'things like [u]that[/u].';
|
||||
$text = 'this is some text with bold tags and italics and things like that.';
|
||||
$this->assertTextOutput($bbcode, $text);
|
||||
}
|
||||
|
||||
public function testCodeOptions()
|
||||
{
|
||||
$code = 'This contains a [url=http://jbbcode.com]url[/url] which uses an option.';
|
||||
$text = 'This contains a url which uses an option.';
|
||||
$this->assertTextOutput($code, $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCodeOptions
|
||||
*/
|
||||
public function testOmittedOption()
|
||||
{
|
||||
$code = 'This doesn\'t use the url option [url]http://jbbcode.com[/url].';
|
||||
$text = 'This doesn\'t use the url option http://jbbcode.com.';
|
||||
$this->assertTextOutput($code, $text);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php';
|
||||
|
||||
/**
|
||||
* Test cases for the default bbcode set.
|
||||
*
|
||||
* @author jbowens
|
||||
* @since May 2013
|
||||
*/
|
||||
class DefaultCodesTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Asserts that the given bbcode string produces the given html string
|
||||
* when parsed with the default bbcodes.
|
||||
*/
|
||||
public function assertProduces($bbcode, $html)
|
||||
{
|
||||
$parser = new \JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
$this->assertEquals($html, $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the [b] bbcode.
|
||||
*/
|
||||
public function testBold()
|
||||
{
|
||||
$this->assertProduces('[b]this should be bold[/b]', '<strong>this should be bold</strong>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the [color] bbcode.
|
||||
*/
|
||||
public function testColor()
|
||||
{
|
||||
$this->assertProduces('[color=red]red[/color]', '<span style="color: red">red</span>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the example from the documentation.
|
||||
*/
|
||||
public function testExample()
|
||||
{
|
||||
$text = "The default codes include: [b]bold[/b], [i]italics[/i], [u]underlining[/u], ";
|
||||
$text .= "[url=http://jbbcode.com]links[/url], [color=red]color![/color] and more.";
|
||||
$html = 'The default codes include: <strong>bold</strong>, <em>italics</em>, <u>underlining</u>, ';
|
||||
$html .= '<a href="http://jbbcode.com">links</a>, <span style="color: red">color!</span> and more.';
|
||||
$this->assertProduces($text, $html);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php');
|
||||
|
||||
/**
|
||||
* Test cases testing the HTMLSafe visitor, which escapes all html characters in the source text
|
||||
*
|
||||
* @author astax-t
|
||||
*/
|
||||
class HTMLSafeTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Asserts that the given bbcode string produces the given html string
|
||||
* when parsed with the default bbcodes.
|
||||
*/
|
||||
public function assertProduces($bbcode, $html)
|
||||
{
|
||||
$parser = new \JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
|
||||
$htmlsafer = new JBBCode\visitors\HTMLSafeVisitor();
|
||||
$parser->accept($htmlsafer);
|
||||
|
||||
$this->assertEquals($html, $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping quotes and ampersands in simple text
|
||||
*/
|
||||
public function testQuoteAndAmp()
|
||||
{
|
||||
$this->assertProduces('te"xt te&xt', 'te"xt te&xt');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping quotes and ampersands inside a BBCode tag
|
||||
*/
|
||||
public function testQuoteAndAmpInTag()
|
||||
{
|
||||
$this->assertProduces('[b]te"xt te&xt[/b]', '<strong>te"xt te&xt</strong>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping HTML tags
|
||||
*/
|
||||
public function testHtmlTag()
|
||||
{
|
||||
$this->assertProduces('<b>not bold</b>', '<b>not bold</b>');
|
||||
$this->assertProduces('[b]<b>bold</b>[/b] <hr>', '<strong><b>bold</b></strong> <hr>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping ampersands in URL using [url]...[/url]
|
||||
*/
|
||||
public function testUrlParam()
|
||||
{
|
||||
$this->assertProduces('text [url]http://example.com/?a=b&c=d[/url] more text', 'text <a href="http://example.com/?a=b&c=d">http://example.com/?a=b&c=d</a> more text');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping ampersands in URL using [url=...] tag
|
||||
*/
|
||||
public function testUrlOption()
|
||||
{
|
||||
$this->assertProduces('text [url=http://example.com/?a=b&c=d]this is a "link"[/url]', 'text <a href="http://example.com/?a=b&c=d">this is a "link"</a>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests escaping ampersands in URL using [url=...] tag when URL is in quotes
|
||||
*/
|
||||
public function testUrlOptionQuotes()
|
||||
{
|
||||
$this->assertProduces('text [url="http://example.com/?a=b&c=d"]this is a "link"[/url]', 'text <a href="http://example.com/?a=b&c=d">this is a "link"</a>');
|
||||
}
|
||||
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php';
|
||||
|
||||
/**
|
||||
* Test cases for CodeDefinition nest limits. If an element is nested beyond
|
||||
* its CodeDefinition's nest limit, it should be removed from the parse tree.
|
||||
*
|
||||
* @author jbowens
|
||||
* @since May 2013
|
||||
*/
|
||||
class NestLimitTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Tests that when elements have no nest limits they may be
|
||||
* nested indefinitely.
|
||||
*/
|
||||
public function testIndefiniteNesting()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addBBCode('b', '<strong>{param}</strong>', false, true, -1);
|
||||
$parser->parse('[b][b][b][b][b][b][b][b]bold text[/b][/b][/b][/b][/b][/b][/b][/b]');
|
||||
$this->assertEquals('<strong><strong><strong><strong><strong><strong><strong><strong>' .
|
||||
'bold text' .
|
||||
'</strong></strong></strong></strong></strong></strong></strong></strong>',
|
||||
$parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test over nesting.
|
||||
*/
|
||||
public function testOverNesting()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('quote', '<blockquote>{param}</blockquote>', false, true, 2);
|
||||
$bbcode = '[quote][quote][quote]wut[/quote] huh?[/quote] i don\'t know[/quote]';
|
||||
$parser->parse($bbcode);
|
||||
$expectedBbcode = '[quote][quote] huh?[/quote] i don\'t know[/quote]';
|
||||
$expectedHtml = '<blockquote><blockquote> huh?</blockquote> i don\'t know</blockquote>';
|
||||
$this->assertEquals($expectedBbcode, $parser->getAsBBCode());
|
||||
$this->assertEquals($expectedHtml, $parser->getAsHtml());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php';
|
||||
|
||||
/**
|
||||
* Test cases for the code definition parameter that disallows parsing
|
||||
* of an element's content.
|
||||
*
|
||||
* @author jbowens
|
||||
*/
|
||||
class ParseContentTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Tests that when a bbcode is created with parseContent = false,
|
||||
* its contents actually are not parsed.
|
||||
*/
|
||||
public function testSimpleNoParsing()
|
||||
{
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
|
||||
$parser->parse('[verbatim]plain text[/verbatim]');
|
||||
$this->assertEquals('plain text', $parser->getAsHtml());
|
||||
|
||||
$parser->parse('[verbatim][b]bold[/b][/verbatim]');
|
||||
$this->assertEquals('[b]bold[/b]', $parser->getAsHtml());
|
||||
|
||||
}
|
||||
|
||||
public function testNoParsingWithBufferText()
|
||||
{
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
|
||||
$parser->parse('buffer text[verbatim]buffer text[b]bold[/b]buffer text[/verbatim]buffer text');
|
||||
$this->assertEquals('buffer textbuffer text[b]bold[/b]buffer textbuffer text', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that when a tag is not closed within an unparseable tag,
|
||||
* the BBCode output does not automatically close that tag (because
|
||||
* the contents were not parsed).
|
||||
*/
|
||||
public function testUnclosedTag()
|
||||
{
|
||||
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
|
||||
$parser->parse('[verbatim]i wonder [b]what will happen[/verbatim]');
|
||||
$this->assertEquals('i wonder [b]what will happen', $parser->getAsHtml());
|
||||
$this->assertEquals('[verbatim]i wonder [b]what will happen[/verbatim]', $parser->getAsBBCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that an unclosed tag with parseContent = false ends cleanly.
|
||||
*/
|
||||
public function testUnclosedVerbatimTag()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
|
||||
$parser->parse('[verbatim]yo this [b]text should not be bold[/b]');
|
||||
$this->assertEquals('yo this [b]text should not be bold[/b]', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a malformed closing tag for a verbatim block.
|
||||
*/
|
||||
public function testMalformedVerbatimClosingTag()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
$parser->parse('[verbatim]yo this [b]text should not be bold[/b][/verbatim');
|
||||
$this->assertEquals('yo this [b]text should not be bold[/b][/verbatim', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an immediate end after a verbatim.
|
||||
*/
|
||||
public function testVerbatimThenEof()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addBBCode('verbatim', '{param}', false, false);
|
||||
$parser->parse('[verbatim]');
|
||||
$this->assertEquals('', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php');
|
||||
|
||||
/**
|
||||
* A series of test cases for various potential parsing edge cases. This
|
||||
* includes a lot of tests using brackets for things besides genuine tag
|
||||
* names.
|
||||
*
|
||||
* @author jbowens
|
||||
*
|
||||
*/
|
||||
class ParsingEdgeCaseTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* A utility method for these tests that will evaluate
|
||||
* its arguments as bbcode with a fresh parser loaded
|
||||
* with only the default bbcodes. It returns the
|
||||
* html output.
|
||||
*/
|
||||
private function defaultParse($bbcode)
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
return $parser->getAsHtml();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the given bbcode matches the given html when
|
||||
* the bbcode is run through defaultParse.
|
||||
*/
|
||||
private function assertProduces($bbcode, $html)
|
||||
{
|
||||
$this->assertEquals($html, $this->defaultParse($bbcode));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests attempting to use a code that doesn't exist.
|
||||
*/
|
||||
public function testNonexistentCodeMalformed()
|
||||
{
|
||||
$this->assertProduces('[wat]', '[wat]');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests attempting to use a code that doesn't exist, but this
|
||||
* time in a well-formed fashion.
|
||||
*
|
||||
* @depends testNonexistentCodeMalformed
|
||||
*/
|
||||
public function testNonexistentCodeWellformed()
|
||||
{
|
||||
$this->assertProduces('[wat]something[/wat]', '[wat]something[/wat]');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a whole bunch of meaningless left brackets.
|
||||
*/
|
||||
public function testAllLeftBrackets()
|
||||
{
|
||||
$this->assertProduces('[[[[[[[[', '[[[[[[[[');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a whole bunch of meaningless right brackets.
|
||||
*/
|
||||
public function testAllRightBrackets()
|
||||
{
|
||||
$this->assertProduces(']]]]]', ']]]]]');
|
||||
}
|
||||
|
||||
/**
|
||||
* Intermixes well-formed, meaningful tags with meaningless brackets.
|
||||
*/
|
||||
public function testRandomBracketsInWellformedCode()
|
||||
{
|
||||
$this->assertProduces('[b][[][[i]heh[/i][/b]',
|
||||
'<strong>[[][<em>heh</em></strong>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an unclosed tag within a closed tag.
|
||||
*/
|
||||
public function testUnclosedWithinClosed()
|
||||
{
|
||||
$this->assertProduces('[url=http://jbbcode.com][b]oh yeah[/url]',
|
||||
'<a href="http://jbbcode.com"><strong>oh yeah</strong></a>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests half completed opening tag.
|
||||
*/
|
||||
public function testHalfOpenTag()
|
||||
{
|
||||
$this->assertProduces('[b', '[b');
|
||||
$this->assertProduces('wut [url=http://jbbcode.com',
|
||||
'wut [url=http://jbbcode.com');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests half completed closing tag.
|
||||
*/
|
||||
public function testHalfClosingTag()
|
||||
{
|
||||
$this->assertProduces('[b]this should be bold[/b',
|
||||
'<strong>this should be bold[/b</strong>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests lots of left brackets before the actual tag. For example:
|
||||
* [[[[[[[[b]bold![/b]
|
||||
*/
|
||||
public function testLeftBracketsThenTag()
|
||||
{
|
||||
$this->assertProduces('[[[[[b]bold![/b]',
|
||||
'[[[[<strong>bold!</strong>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a whitespace after left bracket.
|
||||
*/
|
||||
public function testWhitespaceAfterLeftBracketWhithoutTag()
|
||||
{
|
||||
$this->assertProduces('[ ABC ] ',
|
||||
'[ ABC ] ');
|
||||
}
|
||||
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php');
|
||||
|
||||
class SimpleEvaluationTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* A utility method for these tests that will evaluate
|
||||
* its arguments as bbcode with a fresh parser loaded
|
||||
* with only the default bbcodes. It returns the
|
||||
* html output.
|
||||
*/
|
||||
private function defaultParse($bbcode)
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse($bbcode);
|
||||
return $parser->getAsHtml();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the given bbcode matches the given html when
|
||||
* the bbcode is run through defaultParse.
|
||||
*/
|
||||
private function assertProduces($bbcode, $html)
|
||||
{
|
||||
$this->assertEquals($html, $this->defaultParse($bbcode));
|
||||
}
|
||||
|
||||
public function testEmptyString()
|
||||
{
|
||||
$this->assertProduces('', '');
|
||||
}
|
||||
|
||||
public function testOneTag()
|
||||
{
|
||||
$this->assertProduces('[b]this is bold[/b]', '<strong>this is bold</strong>');
|
||||
}
|
||||
|
||||
public function testOneTagWithSurroundingText()
|
||||
{
|
||||
$this->assertProduces('buffer text [b]this is bold[/b] buffer text',
|
||||
'buffer text <strong>this is bold</strong> buffer text');
|
||||
}
|
||||
|
||||
public function testMultipleTags()
|
||||
{
|
||||
$bbcode = <<<EOD
|
||||
this is some text with [b]bold tags[/b] and [i]italics[/i] and
|
||||
things like [u]that[/u].
|
||||
EOD;
|
||||
$html = <<<EOD
|
||||
this is some text with <strong>bold tags</strong> and <em>italics</em> and
|
||||
things like <u>that</u>.
|
||||
EOD;
|
||||
$this->assertProduces($bbcode, $html);
|
||||
}
|
||||
|
||||
public function testCodeOptions()
|
||||
{
|
||||
$code = 'This contains a [url=http://jbbcode.com/?b=2]url[/url] which uses an option.';
|
||||
$html = 'This contains a <a href="http://jbbcode.com/?b=2">url</a> which uses an option.';
|
||||
$this->assertProduces($code, $html);
|
||||
}
|
||||
|
||||
public function testAttributes()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$builder = new JBBCode\CodeDefinitionBuilder('img', '<img src="{param}" height="{height}" alt="{alt}" />');
|
||||
$parser->addCodeDefinition($builder->setUseOption(true)->setParseContent(false)->build());
|
||||
|
||||
$expected = 'Multiple <img src="http://jbbcode.com/img.png" height="50" alt="alt text" /> options.';
|
||||
|
||||
$code = 'Multiple [img height="50" alt="alt text"]http://jbbcode.com/img.png[/img] options.';
|
||||
$parser->parse($code);
|
||||
$result = $parser->getAsHTML();
|
||||
$this->assertEquals($expected, $result);
|
||||
|
||||
$code = 'Multiple [img height=50 alt="alt text"]http://jbbcode.com/img.png[/img] options.';
|
||||
$parser->parse($code);
|
||||
$result = $parser->getAsHTML();
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCodeOptions
|
||||
*/
|
||||
public function testOmittedOption()
|
||||
{
|
||||
$code = 'This doesn\'t use the url option [url]http://jbbcode.com[/url].';
|
||||
$html = 'This doesn\'t use the url option <a href="http://jbbcode.com">http://jbbcode.com</a>.';
|
||||
$this->assertProduces($code, $html);
|
||||
}
|
||||
|
||||
public function testUnclosedTag()
|
||||
{
|
||||
$code = 'hello [b]world';
|
||||
$html = 'hello <strong>world</strong>';
|
||||
$this->assertProduces($code, $html);
|
||||
}
|
||||
|
||||
public function testNestingTags()
|
||||
{
|
||||
$code = '[url=http://jbbcode.com][b]hello [u]world[/u][/b][/url]';
|
||||
$html = '<a href="http://jbbcode.com"><strong>hello <u>world</u></strong></a>';
|
||||
$this->assertProduces($code, $html);
|
||||
}
|
||||
|
||||
public function testBracketInTag()
|
||||
{
|
||||
$this->assertProduces('[b]:-[[/b]', '<strong>:-[</strong>');
|
||||
}
|
||||
|
||||
public function testBracketWithSpaceInTag()
|
||||
{
|
||||
$this->assertProduces('[b]:-[ [/b]', '<strong>:-[ </strong>');
|
||||
}
|
||||
|
||||
public function testBracketWithTextInTag()
|
||||
{
|
||||
$this->assertProduces('[b]:-[ foobar[/b]', '<strong>:-[ foobar</strong>');
|
||||
}
|
||||
|
||||
public function testMultibleBracketsWithTextInTag()
|
||||
{
|
||||
$this->assertProduces('[b]:-[ [fo[o[bar[/b]', '<strong>:-[ [fo[o[bar</strong>');
|
||||
}
|
||||
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Tokenizer.php');
|
||||
|
||||
/**
|
||||
* Test cases testing the functionality of the Tokenizer. The tokenizer
|
||||
* is used by the parser to make parsing simpler.
|
||||
*
|
||||
* @author jbowens
|
||||
*/
|
||||
class TokenizerTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
public function testEmptyString()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('');
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
}
|
||||
|
||||
public function testPlainTextOnly()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('this is some plain text.');
|
||||
$this->assertEquals('this is some plain text.', $tokenizer->next());
|
||||
$this->assertEquals('this is some plain text.', $tokenizer->current());
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
}
|
||||
|
||||
public function testStartingBracket()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('[this has a starting bracket.');
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals('[', $tokenizer->current());
|
||||
$this->assertEquals('this has a starting bracket.', $tokenizer->next());
|
||||
$this->assertEquals('this has a starting bracket.', $tokenizer->current());
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
$this->assertEquals(null, $tokenizer->next());
|
||||
}
|
||||
|
||||
public function testOneTag()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('[b]');
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals('b', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
}
|
||||
|
||||
public function testMatchingTags()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('[url]http://jbbcode.com[/url]');
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals('url', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertEquals('http://jbbcode.com', $tokenizer->next());
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals('/url', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
}
|
||||
|
||||
public function testLotsOfBrackets()
|
||||
{
|
||||
$tokenizer = new JBBCode\Tokenizer('[[][]][');
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertEquals(']', $tokenizer->next());
|
||||
$this->assertEquals('[', $tokenizer->next());
|
||||
$this->assertFalse($tokenizer->hasNext());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,151 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Parser.php';
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'validators' . DIRECTORY_SEPARATOR . 'UrlValidator.php';
|
||||
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'validators' . DIRECTORY_SEPARATOR . 'CssColorValidator.php';
|
||||
|
||||
/**
|
||||
* Test cases for InputValidators.
|
||||
*
|
||||
* @author jbowens
|
||||
* @since May 2013
|
||||
*/
|
||||
class ValidatorTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Tests an invalid url directly on the UrlValidator.
|
||||
*/
|
||||
public function testInvalidUrl()
|
||||
{
|
||||
$urlValidator = new \JBBCode\validators\UrlValidator();
|
||||
$this->assertFalse($urlValidator->validate('#yolo#swag'));
|
||||
$this->assertFalse($urlValidator->validate('giehtiehwtaw352353%3'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a valid url directly on the UrlValidator.
|
||||
*/
|
||||
public function testValidUrl()
|
||||
{
|
||||
$urlValidator = new \JBBCode\validators\UrlValidator();
|
||||
$this->assertTrue($urlValidator->validate('http://google.com'));
|
||||
$this->assertTrue($urlValidator->validate('http://jbbcode.com/docs'));
|
||||
$this->assertTrue($urlValidator->validate('https://www.maps.google.com'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an invalid url as an option to a url bbcode.
|
||||
*
|
||||
* @depends testInvalidUrl
|
||||
*/
|
||||
public function testInvalidOptionUrlBBCode()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse('[url=javascript:alert("HACKED!");]click me[/url]');
|
||||
$this->assertEquals('[url=javascript:alert("HACKED!");]click me[/url]',
|
||||
$parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an invalid url as the body to a url bbcode.
|
||||
*
|
||||
* @depends testInvalidUrl
|
||||
*/
|
||||
public function testInvalidBodyUrlBBCode()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse('[url]javascript:alert("HACKED!");[/url]');
|
||||
$this->assertEquals('[url]javascript:alert("HACKED!");[/url]', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a valid url as the body to a url bbcode.
|
||||
*
|
||||
* @depends testValidUrl
|
||||
*/
|
||||
public function testValidUrlBBCode()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse('[url]http://jbbcode.com[/url]');
|
||||
$this->assertEquals('<a href="http://jbbcode.com">http://jbbcode.com</a>',
|
||||
$parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests valid english CSS color descriptions on the CssColorValidator.
|
||||
*/
|
||||
public function testCssColorEnglish()
|
||||
{
|
||||
$colorValidator = new JBBCode\validators\CssColorValidator();
|
||||
$this->assertTrue($colorValidator->validate('red'));
|
||||
$this->assertTrue($colorValidator->validate('yellow'));
|
||||
$this->assertTrue($colorValidator->validate('LightGoldenRodYellow'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests valid hexadecimal CSS color values on the CssColorValidator.
|
||||
*/
|
||||
public function testCssColorHex()
|
||||
{
|
||||
$colorValidator = new JBBCode\validators\CssColorValidator();
|
||||
$this->assertTrue($colorValidator->validate('#000'));
|
||||
$this->assertTrue($colorValidator->validate('#ff0000'));
|
||||
$this->assertTrue($colorValidator->validate('#aaaaaa'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests valid rgba CSS color values on the CssColorValidator.
|
||||
*/
|
||||
public function testCssColorRgba()
|
||||
{
|
||||
$colorValidator = new JBBCode\validators\CssColorValidator();
|
||||
$this->assertTrue($colorValidator->validate('rgba(255, 0, 0, 0.5)'));
|
||||
$this->assertTrue($colorValidator->validate('rgba(50, 50, 50, 0.0)'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests invalid CSS color values on the CssColorValidator.
|
||||
*/
|
||||
public function testInvalidCssColor()
|
||||
{
|
||||
$colorValidator = new JBBCode\validators\CssColorValidator();
|
||||
$this->assertFalse($colorValidator->validate('" onclick="javascript: alert(\"gotcha!\");'));
|
||||
$this->assertFalse($colorValidator->validate('"><marquee scrollamount="100'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests valid css colors in a color bbcode.
|
||||
*
|
||||
* @depends testCssColorEnglish
|
||||
* @depends testCssColorHex
|
||||
*/
|
||||
public function testValidColorBBCode()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse('[color=red]colorful text[/color]');
|
||||
$this->assertEquals('<span style="color: red">colorful text</span>',
|
||||
$parser->getAsHtml());
|
||||
$parser->parse('[color=#00ff00]green[/color]');
|
||||
$this->assertEquals('<span style="color: #00ff00">green</span>', $parser->getAsHtml());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests invalid css colors in a color bbcode.
|
||||
*
|
||||
* @depends testInvalidCssColor
|
||||
*/
|
||||
public function testInvalidColorBBCode()
|
||||
{
|
||||
$parser = new JBBCode\Parser();
|
||||
$parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
|
||||
$parser->parse('[color=" onclick="alert(\'hey ya!\');]click me[/color]');
|
||||
$this->assertEquals('[color=" onclick="alert(\'hey ya!\');]click me[/color]',
|
||||
$parser->getAsHtml());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue