mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
[ticket/11768] This commit integrates s9e\TextFormatter
This commit integrates s9e\TextFormatter as outlined in http://area51.phpbb.com/phpBB/viewtopic.php?f=108&t=44467 PHPBB3-11768
This commit is contained in:
200
tests/text_formatter/s9e/default_formatting_test.php
Normal file
200
tests/text_formatter/s9e/default_formatting_test.php
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions.php';
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions_content.php';
|
||||
|
||||
class phpbb_textformatter_s9e_default_formatting_test extends phpbb_test_case
|
||||
{
|
||||
/**
|
||||
* @dataProvider get_default_formatting_tests
|
||||
*/
|
||||
public function test_default_formatting($original, $expected)
|
||||
{
|
||||
$fixture = __DIR__ . '/fixtures/default_formatting.xml';
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services(null, $fixture);
|
||||
|
||||
$parser = $container->get('text_formatter.parser');
|
||||
$renderer = $container->get('text_formatter.renderer');
|
||||
|
||||
$parsed_text = $parser->parse($original);
|
||||
|
||||
$this->assertSame($expected, $renderer->render($parsed_text));
|
||||
}
|
||||
|
||||
public function get_default_formatting_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'[b]bold[/b]',
|
||||
'<span style="font-weight: bold">bold</span>'
|
||||
),
|
||||
array(
|
||||
'[u]underlined[/u]',
|
||||
'<span style="text-decoration: underline">underlined</span>'
|
||||
),
|
||||
array(
|
||||
'[i]italic[/i]',
|
||||
'<span style="font-style: italic">italic</span>'
|
||||
),
|
||||
array(
|
||||
'[color=#FF0000]colored[/color]',
|
||||
'<span style="color: #FF0000">colored</span>'
|
||||
),
|
||||
array(
|
||||
'[color=red]colored[/color]',
|
||||
'<span style="color: red">colored</span>'
|
||||
),
|
||||
array(
|
||||
'[size=75]smaller[/size]',
|
||||
'<span style="font-size: 75%; line-height: normal">smaller</span>'
|
||||
),
|
||||
array(
|
||||
'[quote]quoted[/quote]',
|
||||
'<blockquote class="uncited"><div>quoted</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
'[quote="username"]quoted[/quote]',
|
||||
'<blockquote><div><cite>username wrote:</cite>quoted</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
'[code]unparsed code[/code]',
|
||||
'<div class="codebox"><p>CODE: <a href="#" onclick="selectCode(this); return false;">Select all</a></p><code>unparsed code</code></div>'
|
||||
),
|
||||
array(
|
||||
'[list]no item[/list]',
|
||||
'<ul></ul>'
|
||||
),
|
||||
array(
|
||||
'[*]unparsed',
|
||||
'[*]unparsed'
|
||||
),
|
||||
array(
|
||||
'[list][*]item[/list]',
|
||||
'<ul><li>item</li></ul>'
|
||||
),
|
||||
array(
|
||||
'[list][*]item[/*][/list]',
|
||||
'<ul><li>item</li></ul>'
|
||||
),
|
||||
array(
|
||||
'[list=1][*]item[/list]',
|
||||
'<ol style="list-style-type: decimal"><li>item</li></ol>'
|
||||
),
|
||||
array(
|
||||
'[list=a][*]item[/list]',
|
||||
'<ol style="list-style-type: lower-alpha"><li>item</li></ol>'
|
||||
),
|
||||
array(
|
||||
'[list=i][*]item[/list]',
|
||||
'<ol style="list-style-type: lower-roman"><li>item</li></ol>'
|
||||
),
|
||||
array(
|
||||
'[list=I][*]item[/list]',
|
||||
'<ol style="list-style-type: upper-roman"><li>item</li></ol>'
|
||||
),
|
||||
array(
|
||||
'[list=disc][*]item[/list]',
|
||||
'<ul style="list-style-type: disc"><li>item</li></ul>'
|
||||
),
|
||||
array(
|
||||
'[list=circle][*]item[/list]',
|
||||
'<ul style="list-style-type: circle"><li>item</li></ul>'
|
||||
),
|
||||
array(
|
||||
'[list=square][*]item[/list]',
|
||||
'<ul style="list-style-type: square"><li>item</li></ul>'
|
||||
),
|
||||
array(
|
||||
'[img]https://area51.phpbb.com/images/area51.png[/img]',
|
||||
'<img src="https://area51.phpbb.com/images/area51.png" alt="Image">'
|
||||
),
|
||||
array(
|
||||
'[url]https://area51.phpbb.com/[/url]',
|
||||
'<a href="https://area51.phpbb.com/" class="postlink">https://area51.phpbb.com/</a>'
|
||||
),
|
||||
array(
|
||||
'[url=https://area51.phpbb.com/]Area51[/url]',
|
||||
'<a href="https://area51.phpbb.com/" class="postlink">Area51</a>'
|
||||
),
|
||||
array(
|
||||
'[email]bbcode-test@phpbb.com[/email]',
|
||||
'<a href="mailto:bbcode-test@phpbb.com">bbcode-test@phpbb.com</a>'
|
||||
),
|
||||
array(
|
||||
'[email=bbcode-test@phpbb.com]Email[/email]',
|
||||
'<a href="mailto:bbcode-test@phpbb.com">Email</a>'
|
||||
),
|
||||
array(
|
||||
'[attachment=0]filename[/attachment]',
|
||||
'<div class="inline-attachment"><!-- ia0 -->filename<!-- ia0 --></div>'
|
||||
),
|
||||
array(
|
||||
// PHPBB3-1401 - correct: parsed
|
||||
'[quote="[test]test"]test [ test[/quote]',
|
||||
'<blockquote><div><cite>[test]test wrote:</cite>test [ test</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
// PHPBB3-6117 - correct: parsed
|
||||
'[quote]test[/quote] test ] and [ test [quote]test[/quote]',
|
||||
'<blockquote class="uncited"><div>test</div></blockquote> test ] and [ test <blockquote class="uncited"><div>test</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
// PHPBB3-6200 - correct: parsed
|
||||
'[quote="["]test[/quote]',
|
||||
'<blockquote><div><cite>[ wrote:</cite>test</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
// PHPBB3-9364 - quoted: "test[/[/b]quote] test" / non-quoted: "[/quote] test" - also failed if layout distorted
|
||||
'[quote]test[/[/b]quote] test [/quote][/quote] test',
|
||||
'<blockquote class="uncited"><div>test[/[/b]quote] test </div></blockquote>[/quote] test'
|
||||
),
|
||||
array(
|
||||
// PHPBB3-8096 - first quote tag parsed, second quote tag unparsed
|
||||
'[quote="a"]a[/quote][quote="a]a[/quote]',
|
||||
'<blockquote><div><cite>a wrote:</cite>a</div></blockquote>[quote="a]a[/quote]'
|
||||
),
|
||||
array(
|
||||
// Allow textual bbcodes in textual bbcodes
|
||||
'[b]bold [i]bold + italic[/i][/b]',
|
||||
'<span style="font-weight: bold">bold <span style="font-style: italic">bold + italic</span></span>'
|
||||
),
|
||||
array(
|
||||
// Allow textual bbcodes in url with description
|
||||
'[url=https://area51.phpbb.com/]Area51 [i]italic[/i][/url]',
|
||||
'<a href="https://area51.phpbb.com/" class="postlink">Area51 <span style="font-style: italic">italic</span></a>'
|
||||
),
|
||||
array(
|
||||
// Allow url with description in textual bbcodes
|
||||
'[i]italic [url=https://area51.phpbb.com/]Area51[/url][/i]',
|
||||
'<span style="font-style: italic">italic <a href="https://area51.phpbb.com/" class="postlink">Area51</a></span>'
|
||||
),
|
||||
array(
|
||||
// Do not parse textual bbcodes in code
|
||||
'[code]unparsed code [b]bold [i]bold + italic[/i][/b][/code]',
|
||||
'<div class="codebox"><p>CODE: <a href="#" onclick="selectCode(this); return false;">Select all</a></p><code>unparsed code [b]bold [i]bold + italic[/i][/b]</code></div>'
|
||||
),
|
||||
array(
|
||||
// Do not parse quote bbcodes in code
|
||||
'[code]unparsed code [quote="username"]quoted[/quote][/code]',
|
||||
'<div class="codebox"><p>CODE: <a href="#" onclick="selectCode(this); return false;">Select all</a></p><code>unparsed code [quote="username"]quoted[/quote]</code></div>'
|
||||
),
|
||||
/*
|
||||
array(
|
||||
// Textual bbcode nesting into textual bbcode
|
||||
'[b]bold [i]bold + italic[/b] italic[/i]',
|
||||
'<span style="font-weight: bold">bold <span style="font-style: italic">bold + italic</span></span><span style="font-style: italic"> italic</span>'
|
||||
),
|
||||
*/
|
||||
array(
|
||||
"[code]\tline1\n line2[/code]",
|
||||
'<div class="codebox"><p>CODE: <a href="#" onclick="selectCode(this); return false;">Select all</a></p><code> line1<br>' . "\n" . ' line2</code></div>'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
182
tests/text_formatter/s9e/factory_test.php
Normal file
182
tests/text_formatter/s9e/factory_test.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions.php';
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions_content.php';
|
||||
require_once __DIR__ . '/../../mock/user.php';
|
||||
require_once __DIR__ . '/../../mock/cache.php';
|
||||
require_once __DIR__ . '/../../test_framework/phpbb_database_test_case.php';
|
||||
|
||||
class phpbb_textformatter_s9e_factory_test extends phpbb_database_test_case
|
||||
{
|
||||
public function getDataSet()
|
||||
{
|
||||
return $this->createXMLDataSet(__DIR__ . '/fixtures/factory.xml');
|
||||
}
|
||||
|
||||
public function get_cache_dir()
|
||||
{
|
||||
return __DIR__ . '/../../tmp/';
|
||||
}
|
||||
|
||||
public function get_factory()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
|
||||
$this->cache = new phpbb_mock_cache;
|
||||
|
||||
$dal = new \phpbb\textformatter\data_access(
|
||||
$this->new_dbal(),
|
||||
'phpbb_bbcodes',
|
||||
'phpbb_smilies',
|
||||
'phpbb_styles',
|
||||
'phpbb_words',
|
||||
$phpbb_root_path . 'styles/'
|
||||
);
|
||||
|
||||
$factory = new \phpbb\textformatter\s9e\factory(
|
||||
$dal,
|
||||
$this->cache,
|
||||
$this->get_cache_dir(),
|
||||
'_foo_parser',
|
||||
'_foo_renderer'
|
||||
);
|
||||
|
||||
return $factory;
|
||||
}
|
||||
|
||||
public function test_get_configurator()
|
||||
{
|
||||
$configurator = $this->get_factory()->get_configurator();
|
||||
|
||||
$this->assertInstanceOf('s9e\\TextFormatter\\Configurator', $configurator);
|
||||
|
||||
$this->assertTrue(isset($configurator->plugins['Autoemail']));
|
||||
$this->assertTrue(isset($configurator->plugins['Autolink']));
|
||||
|
||||
$this->assertTrue(isset($configurator->BBCodes['B']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['CODE']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['COLOR']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['EMAIL']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['FLASH']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['I']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['IMG']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['LIST']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['*']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['QUOTE']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['SIZE']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['U']));
|
||||
$this->assertTrue(isset($configurator->BBCodes['URL']));
|
||||
|
||||
// This custom BBCode should be set
|
||||
$this->assertTrue(isset($configurator->BBCodes['CUSTOM']));
|
||||
|
||||
// This unsafe custom BBCode will trigger an exception and should be ignored
|
||||
$this->assertFalse(isset($configurator->BBCodes['UNSAFE']));
|
||||
|
||||
$this->assertTrue(isset($configurator->Emoticons[':D']));
|
||||
}
|
||||
|
||||
public function test_regenerate()
|
||||
{
|
||||
list($parser, $renderer) = $this->get_factory()->regenerate();
|
||||
|
||||
$this->assertInstanceOf('s9e\\TextFormatter\\Parser', $parser);
|
||||
$this->assertInstanceOf('s9e\\TextFormatter\\Renderer', $renderer);
|
||||
|
||||
$this->assertEquals($parser, $this->cache->get('_foo_parser'), 'The parser was not cached');
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'class' => get_class($renderer),
|
||||
'renderer' => serialize($renderer)
|
||||
),
|
||||
$this->cache->get('_foo_renderer'),
|
||||
'The renderer was not cached'
|
||||
);
|
||||
|
||||
$file = $this->get_cache_dir() . get_class($renderer) . '.php';
|
||||
$this->assertFileExists($file);
|
||||
unlink($file);
|
||||
}
|
||||
|
||||
public function test_tidy()
|
||||
{
|
||||
$factory = $this->get_factory();
|
||||
|
||||
// Create a fake "old" cache file
|
||||
$old_file = $this->get_cache_dir() . 's9e_foo.php';
|
||||
touch($old_file);
|
||||
|
||||
// Create a current renderer
|
||||
list($parser, $renderer) = $factory->regenerate();
|
||||
$new_file = $this->get_cache_dir() . get_class($renderer) . '.php';
|
||||
|
||||
// Tidy the cache
|
||||
$factory->tidy();
|
||||
|
||||
$this->assertFileExists($new_file, 'The current renderer has been deleted');
|
||||
$this->assertFileNotExists($old_file, 'The old renderer has not been deleted');
|
||||
|
||||
unlink($new_file);
|
||||
}
|
||||
|
||||
public function test_local_url()
|
||||
{
|
||||
global $config, $user, $request;
|
||||
|
||||
$config = array(
|
||||
'force_server_vars' => true,
|
||||
'server_protocol' => 'http://',
|
||||
'server_name' => 'path',
|
||||
'server_port' => 80,
|
||||
'script_path' => '/to',
|
||||
'cookie_secure' => false
|
||||
);
|
||||
$user = new phpbb_mock_user;
|
||||
$request = new phpbb_mock_request;
|
||||
|
||||
$fixture = __DIR__ . '/fixtures/local_url.xml';
|
||||
$renderer = $this->get_test_case_helpers()->set_s9e_services(null, $fixture)->get('text_formatter.renderer');
|
||||
|
||||
$this->assertSame(
|
||||
'<a href="http://path/to/foo">http://path/to/foo</a>',
|
||||
$renderer->render('<r><LOCAL content="foo"><s>[local]</s>foo<e>[/local]</e></LOCAL></r>')
|
||||
);
|
||||
}
|
||||
|
||||
public function test_smilies_special_chars()
|
||||
{
|
||||
// Use a smiley that contains every special chars in every field
|
||||
$fixture = __DIR__ . '/fixtures/smilies_special_chars.xml';
|
||||
$renderer = $this->get_test_case_helpers()->set_s9e_services(null, $fixture)->get('text_formatter.renderer');
|
||||
|
||||
$this->assertSame(
|
||||
'<img class="smilies" src="phpBB/images/smilies/%22%27%3C&%3E.png" alt=""\'<&>" title=""\'<&>">',
|
||||
$renderer->render('<r><E>"\'<&></E></r>')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox {INTTEXT} is supported in custom BBCodes
|
||||
*/
|
||||
public function test_inttext_token()
|
||||
{
|
||||
$fixture = __DIR__ . '/fixtures/inttext_token.xml';
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services(null, $fixture);
|
||||
$parser = $container->get('text_formatter.parser');
|
||||
$renderer = $container->get('text_formatter.renderer');
|
||||
|
||||
$original = '[spoiler=ɎɆS]text[/spoiler]';
|
||||
$expected = '<div class="spoiler"><div class="title">ɎɆS</div><div class="content">text</div></div>';
|
||||
$this->assertSame($expected, $renderer->render($parser->parse($original)));
|
||||
|
||||
$original = '[spoiler=N:O:P:E]text[/spoiler]';
|
||||
$expected = $original;
|
||||
$this->assertSame($expected, $renderer->render($parser->parse($original)));
|
||||
}
|
||||
}
|
466
tests/text_formatter/s9e/fixtures/default_formatting.xml
Normal file
466
tests/text_formatter/s9e/fixtures/default_formatting.xml
Normal file
@@ -0,0 +1,466 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_smilies">
|
||||
<column>smiley_id</column>
|
||||
<column>code</column>
|
||||
<column>emotion</column>
|
||||
<column>smiley_url</column>
|
||||
<column>smiley_width</column>
|
||||
<column>smiley_height</column>
|
||||
<column>smiley_order</column>
|
||||
<column>display_on_posting</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>:D</value>
|
||||
<value>Very Happy</value>
|
||||
<value>icon_e_biggrin.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>:-D</value>
|
||||
<value>Very Happy</value>
|
||||
<value>icon_e_biggrin.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3</value>
|
||||
<value>:grin:</value>
|
||||
<value>Very Happy</value>
|
||||
<value>icon_e_biggrin.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>3</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4</value>
|
||||
<value>:)</value>
|
||||
<value>Smile</value>
|
||||
<value>icon_e_smile.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>4</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>5</value>
|
||||
<value>:-)</value>
|
||||
<value>Smile</value>
|
||||
<value>icon_e_smile.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>5</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>6</value>
|
||||
<value>:smile:</value>
|
||||
<value>Smile</value>
|
||||
<value>icon_e_smile.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>6</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7</value>
|
||||
<value>;)</value>
|
||||
<value>Wink</value>
|
||||
<value>icon_e_wink.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>7</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>8</value>
|
||||
<value>;-)</value>
|
||||
<value>Wink</value>
|
||||
<value>icon_e_wink.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>8</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9</value>
|
||||
<value>:wink:</value>
|
||||
<value>Wink</value>
|
||||
<value>icon_e_wink.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>9</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>10</value>
|
||||
<value>:(</value>
|
||||
<value>Sad</value>
|
||||
<value>icon_e_sad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>10</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>11</value>
|
||||
<value>:-(</value>
|
||||
<value>Sad</value>
|
||||
<value>icon_e_sad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>11</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>12</value>
|
||||
<value>:sad:</value>
|
||||
<value>Sad</value>
|
||||
<value>icon_e_sad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>12</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>13</value>
|
||||
<value>:o</value>
|
||||
<value>Surprised</value>
|
||||
<value>icon_e_surprised.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>13</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>14</value>
|
||||
<value>:-o</value>
|
||||
<value>Surprised</value>
|
||||
<value>icon_e_surprised.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>14</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>15</value>
|
||||
<value>:eek:</value>
|
||||
<value>Surprised</value>
|
||||
<value>icon_e_surprised.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>15</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>16</value>
|
||||
<value>:shock:</value>
|
||||
<value>Shocked</value>
|
||||
<value>icon_eek.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>16</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>17</value>
|
||||
<value>:?</value>
|
||||
<value>Confused</value>
|
||||
<value>icon_e_confused.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>17</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>18</value>
|
||||
<value>:-?</value>
|
||||
<value>Confused</value>
|
||||
<value>icon_e_confused.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>18</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>19</value>
|
||||
<value>:???:</value>
|
||||
<value>Confused</value>
|
||||
<value>icon_e_confused.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>19</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>20</value>
|
||||
<value>8-)</value>
|
||||
<value>Cool</value>
|
||||
<value>icon_cool.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>20</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>21</value>
|
||||
<value>:cool:</value>
|
||||
<value>Cool</value>
|
||||
<value>icon_cool.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>21</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>22</value>
|
||||
<value>:lol:</value>
|
||||
<value>Laughing</value>
|
||||
<value>icon_lol.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>22</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>23</value>
|
||||
<value>:x</value>
|
||||
<value>Mad</value>
|
||||
<value>icon_mad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>23</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>24</value>
|
||||
<value>:-x</value>
|
||||
<value>Mad</value>
|
||||
<value>icon_mad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>24</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>25</value>
|
||||
<value>:mad:</value>
|
||||
<value>Mad</value>
|
||||
<value>icon_mad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>25</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>26</value>
|
||||
<value>:P</value>
|
||||
<value>Razz</value>
|
||||
<value>icon_razz.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>26</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>27</value>
|
||||
<value>:-P</value>
|
||||
<value>Razz</value>
|
||||
<value>icon_razz.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>27</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>28</value>
|
||||
<value>:razz:</value>
|
||||
<value>Razz</value>
|
||||
<value>icon_razz.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>28</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>29</value>
|
||||
<value>:oops:</value>
|
||||
<value>Embarrassed</value>
|
||||
<value>icon_redface.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>29</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30</value>
|
||||
<value>:cry:</value>
|
||||
<value>Crying or Very Sad</value>
|
||||
<value>icon_cry.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>30</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>31</value>
|
||||
<value>:evil:</value>
|
||||
<value>Evil or Very Mad</value>
|
||||
<value>icon_evil.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>31</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>32</value>
|
||||
<value>:twisted:</value>
|
||||
<value>Twisted Evil</value>
|
||||
<value>icon_twisted.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>32</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>33</value>
|
||||
<value>:roll:</value>
|
||||
<value>Rolling Eyes</value>
|
||||
<value>icon_rolleyes.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>33</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>34</value>
|
||||
<value>:!:</value>
|
||||
<value>Exclamation</value>
|
||||
<value>icon_exclaim.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>34</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>35</value>
|
||||
<value>:?:</value>
|
||||
<value>Question</value>
|
||||
<value>icon_question.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>35</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>36</value>
|
||||
<value>:idea:</value>
|
||||
<value>Idea</value>
|
||||
<value>icon_idea.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>36</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>37</value>
|
||||
<value>:arrow:</value>
|
||||
<value>Arrow</value>
|
||||
<value>icon_arrow.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>37</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>38</value>
|
||||
<value>:|</value>
|
||||
<value>Neutral</value>
|
||||
<value>icon_neutral.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>38</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>39</value>
|
||||
<value>:-|</value>
|
||||
<value>Neutral</value>
|
||||
<value>icon_neutral.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>39</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>40</value>
|
||||
<value>:mrgreen:</value>
|
||||
<value>Mr. Green</value>
|
||||
<value>icon_mrgreen.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>40</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>41</value>
|
||||
<value>:geek:</value>
|
||||
<value>Geek</value>
|
||||
<value>icon_e_geek.gif</value>
|
||||
<value>17</value>
|
||||
<value>17</value>
|
||||
<value>41</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>42</value>
|
||||
<value>:ugeek:</value>
|
||||
<value>Uber Geek</value>
|
||||
<value>icon_e_ugeek.gif</value>
|
||||
<value>17</value>
|
||||
<value>18</value>
|
||||
<value>42</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
</table>
|
||||
|
||||
<table name="phpbb_styles">
|
||||
<column>style_id</column>
|
||||
<column>style_name</column>
|
||||
<column>style_copyright</column>
|
||||
<column>style_active</column>
|
||||
<column>style_path</column>
|
||||
<column>bbcode_bitfield</column>
|
||||
<column>style_parent_id</column>
|
||||
<column>style_parent_tree</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>prosilver</value>
|
||||
<value>&copy; phpBB Group</value>
|
||||
<value>1</value>
|
||||
<value>prosilver</value>
|
||||
<value>kNg=</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
|
||||
<table name="phpbb_words">
|
||||
<column>word_id</column>
|
||||
<column>word</column>
|
||||
<column>replacement</column>
|
||||
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>apple</value>
|
||||
<value>banana</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
20
tests/text_formatter/s9e/fixtures/default_lang.xml
Normal file
20
tests/text_formatter/s9e/fixtures/default_lang.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_bbcodes">
|
||||
<column>bbcode_id</column>
|
||||
<column>bbcode_tag</column>
|
||||
<column>bbcode_helpline</column>
|
||||
<column>display_on_posting</column>
|
||||
<column>bbcode_match</column>
|
||||
<column>bbcode_tpl</column>
|
||||
|
||||
<row>
|
||||
<value>13</value>
|
||||
<value>foo</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>[foo]{TEXT}[/foo]</value>
|
||||
<value>{L_FOO_BAR}</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
115
tests/text_formatter/s9e/fixtures/factory.xml
Normal file
115
tests/text_formatter/s9e/fixtures/factory.xml
Normal file
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_bbcodes">
|
||||
<column>bbcode_id</column>
|
||||
<column>bbcode_tag</column>
|
||||
<column>bbcode_helpline</column>
|
||||
<column>display_on_posting</column>
|
||||
<column>bbcode_match</column>
|
||||
<column>bbcode_tpl</column>
|
||||
<column>first_pass_match</column>
|
||||
<column>first_pass_replace</column>
|
||||
<column>second_pass_match</column>
|
||||
<column>second_pass_replace</column>
|
||||
|
||||
<row>
|
||||
<value>13</value>
|
||||
<value>custom</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>[custom]{TEXT}[/custom]</value>
|
||||
<value><span style="color:red">{TEXT}</span></value>
|
||||
<value>!\[custom\](.*?)\[/custom\]!ies</value>
|
||||
<value>'[custom:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', '&#39;', '&#40;', '&#41;'), trim('${1}')).'[/custom:$uid]'</value>
|
||||
<value>!\[custom:$uid\](.*?)\[/custom:$uid\]!s</value>
|
||||
<value><span style="color:red">${1}</span></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>14</value>
|
||||
<value>unsafe</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>[unsafe]{TEXT}[/unsafe]</value>
|
||||
<value><script>{TEXT}</script></value>
|
||||
<value>!\[unsafe\](.*?)\[/unsafe\]!ies</value>
|
||||
<value>'[unsafe:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', '&#39;', '&#40;', '&#41;'), trim('${1}')).'[/unsafe:$uid]'</value>
|
||||
<value>!\[unsafe:$uid\](.*?)\[/unsafe:$uid\]!s</value>
|
||||
<value><script>${1}</script></value>
|
||||
</row>
|
||||
</table>
|
||||
|
||||
<table name="phpbb_smilies">
|
||||
<column>smiley_id</column>
|
||||
<column>code</column>
|
||||
<column>emotion</column>
|
||||
<column>smiley_url</column>
|
||||
<column>smiley_width</column>
|
||||
<column>smiley_height</column>
|
||||
<column>smiley_order</column>
|
||||
<column>display_on_posting</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>:D</value>
|
||||
<value>Very Happy</value>
|
||||
<value>icon_e_biggrin.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4</value>
|
||||
<value>:)</value>
|
||||
<value>Smile</value>
|
||||
<value>icon_e_smile.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>4</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>10</value>
|
||||
<value>:(</value>
|
||||
<value>Sad</value>
|
||||
<value>icon_e_sad.gif</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>10</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
</table>
|
||||
|
||||
<table name="phpbb_styles">
|
||||
<column>style_id</column>
|
||||
<column>style_name</column>
|
||||
<column>style_copyright</column>
|
||||
<column>style_active</column>
|
||||
<column>style_path</column>
|
||||
<column>bbcode_bitfield</column>
|
||||
<column>style_parent_id</column>
|
||||
<column>style_parent_tree</column>
|
||||
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>prosilver</value>
|
||||
<value>&copy; phpBB Group</value>
|
||||
<value>1</value>
|
||||
<value>prosilver</value>
|
||||
<value>kNg=</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
|
||||
<table name="phpbb_words">
|
||||
<column>word_id</column>
|
||||
<column>word</column>
|
||||
<column>replacement</column>
|
||||
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>apple</value>
|
||||
<value>banana</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
27
tests/text_formatter/s9e/fixtures/inttext_token.xml
Normal file
27
tests/text_formatter/s9e/fixtures/inttext_token.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_bbcodes">
|
||||
<column>bbcode_id</column>
|
||||
<column>bbcode_tag</column>
|
||||
<column>bbcode_helpline</column>
|
||||
<column>display_on_posting</column>
|
||||
<column>bbcode_match</column>
|
||||
<column>bbcode_tpl</column>
|
||||
<column>first_pass_match</column>
|
||||
<column>first_pass_replace</column>
|
||||
<column>second_pass_match</column>
|
||||
<column>second_pass_replace</column>
|
||||
|
||||
<row>
|
||||
<value>13</value>
|
||||
<value>spoiler=</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>[spoiler={INTTEXT}]{TEXT}[/spoiler]</value>
|
||||
<value><![CDATA[<div class="spoiler"><div class="title">{INTTEXT}</div><div class="content">{TEXT}</div></div>]]></value>
|
||||
<value><![CDATA[!\[spoiler\=([\p{L}\p{N}\-+,_. ]+)\](.*?)\[/spoiler\]!iues]]></value>
|
||||
<value><![CDATA['[spoiler=${1}:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${2}')).'[/spoiler:$uid]']]></value>
|
||||
<value><![CDATA[!\[spoiler\=([\p{L}\p{N}\-+,_. ]+):$uid\](.*?)\[/spoiler:$uid\]!su]]></value><value><![CDATA[<div class="spoiler"><div class="title">${1}</div><div class="content">${2}</div></div>]]></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
28
tests/text_formatter/s9e/fixtures/local_url.xml
Normal file
28
tests/text_formatter/s9e/fixtures/local_url.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_bbcodes">
|
||||
<column>bbcode_id</column>
|
||||
<column>bbcode_tag</column>
|
||||
<column>bbcode_helpline</column>
|
||||
<column>display_on_posting</column>
|
||||
<column>bbcode_match</column>
|
||||
<column>bbcode_tpl</column>
|
||||
<column>first_pass_match</column>
|
||||
<column>first_pass_replace</column>
|
||||
<column>second_pass_match</column>
|
||||
<column>second_pass_replace</column>
|
||||
|
||||
<row>
|
||||
<value>13</value>
|
||||
<value>local</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>[local]{LOCAL_URL}[/local]</value>
|
||||
<value><![CDATA[<a href="{LOCAL_URL}">{LOCAL_URL}</a>]]></value>
|
||||
<value><*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[a-z0-9\-._~\!$&'()*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~\!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:#(?:[a-z0-9\-._~\!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?)\[/local\]!ie]]></value>
|
||||
<value><![CDATA['[local:$uid]'.$this->bbcode_specialchars('${1}').'[/local:$uid]']]></value>
|
||||
<value><((?:[a-z0-9\-._~\!$&'()*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[a-z0-9\-._~\!$&'()*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~\!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:#(?:[a-z0-9\-._~\!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?)(?-i)\[/local:$uid\]!s]]></value>
|
||||
<value><![CDATA[<a href="http://path/to/phpBB/${1}">http://path/to/phpBB/${1}</a>]]></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
23
tests/text_formatter/s9e/fixtures/smilies_special_chars.xml
Normal file
23
tests/text_formatter/s9e/fixtures/smilies_special_chars.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_smilies">
|
||||
<column>smiley_id</column>
|
||||
<column>code</column>
|
||||
<column>emotion</column>
|
||||
<column>smiley_url</column>
|
||||
<column>smiley_width</column>
|
||||
<column>smiley_height</column>
|
||||
<column>smiley_order</column>
|
||||
<column>display_on_posting</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>"'<&></value>
|
||||
<value>"'<&></value>
|
||||
<value>"'<&>.png</value>
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
66
tests/text_formatter/s9e/fixtures/style_inheritance.xml
Normal file
66
tests/text_formatter/s9e/fixtures/style_inheritance.xml
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_styles">
|
||||
<column>style_id</column>
|
||||
<column>style_name</column>
|
||||
<column>style_copyright</column>
|
||||
<column>style_active</column>
|
||||
<column>style_path</column>
|
||||
<column>bbcode_bitfield</column>
|
||||
<column>style_parent_id</column>
|
||||
<column>style_parent_tree</column>
|
||||
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>foo</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>foo</value>
|
||||
<!-- Bitfield for "b" only -->
|
||||
<value>QA==</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>fooplus</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>fooplus</value>
|
||||
<value>QA==</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3</value>
|
||||
<value>fooplusplus</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>fooplusplus</value>
|
||||
<value>QA==</value>
|
||||
<value>2</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4</value>
|
||||
<value>bar</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>bar</value>
|
||||
<!-- Bitfield for "b" only -->
|
||||
<value>QA==</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>5</value>
|
||||
<value>barplus</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>barplus</value>
|
||||
<value>QA==</value>
|
||||
<value>4</value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
36
tests/text_formatter/s9e/fixtures/styles.xml
Normal file
36
tests/text_formatter/s9e/fixtures/styles.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_styles">
|
||||
<column>style_id</column>
|
||||
<column>style_name</column>
|
||||
<column>style_copyright</column>
|
||||
<column>style_active</column>
|
||||
<column>style_path</column>
|
||||
<column>bbcode_bitfield</column>
|
||||
<column>style_parent_id</column>
|
||||
<column>style_parent_tree</column>
|
||||
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>foo</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>foo</value>
|
||||
<!-- Bitfield for "b" only -->
|
||||
<value>QA==</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>bar</value>
|
||||
<value></value>
|
||||
<value>1</value>
|
||||
<value>bar</value>
|
||||
<!-- Bitfield for "b" only -->
|
||||
<value>QA==</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@@ -0,0 +1,40 @@
|
||||
<!-- BEGIN ulist_open --><ul style="list-style-type: {LIST_TYPE}"><!-- END ulist_open -->
|
||||
<!-- BEGIN ulist_open_default --><ul><!-- END ulist_open_default -->
|
||||
<!-- BEGIN ulist_close --></ul><!-- END ulist_close -->
|
||||
|
||||
<!-- BEGIN olist_open --><ol style="list-style-type: {LIST_TYPE}"><!-- END olist_open -->
|
||||
<!-- BEGIN olist_close --></ol><!-- END olist_close -->
|
||||
|
||||
<!-- BEGIN listitem --><li><!-- END listitem -->
|
||||
<!-- BEGIN listitem_close --></li><!-- END listitem_close -->
|
||||
|
||||
<!-- BEGIN quote_username_open --><blockquote><div><cite>{USERNAME} {L_WROTE}{L_COLON}</cite><!-- END quote_username_open -->
|
||||
<!-- BEGIN quote_open --><blockquote class="uncited"><div><!-- END quote_open -->
|
||||
<!-- BEGIN quote_close --></div></blockquote><!-- END quote_close -->
|
||||
|
||||
<!-- BEGIN code_open --><div class="codebox"><p>{L_CODE}{L_COLON} <a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a></p><code><!-- END code_open -->
|
||||
<!-- BEGIN code_close --></code></div><!-- END code_close -->
|
||||
|
||||
<!-- BEGIN inline_attachment_open --><div class="inline-attachment"><!-- END inline_attachment_open -->
|
||||
<!-- BEGIN inline_attachment_close --></div><!-- END inline_attachment_close -->
|
||||
|
||||
<!-- BEGIN b_open --><b><!-- END b_open -->
|
||||
<!-- BEGIN b_close --></b><!-- END b_close -->
|
||||
|
||||
<!-- BEGIN u_open --><span style="text-decoration: underline"><!-- END u_open -->
|
||||
<!-- BEGIN u_close --></span><!-- END u_close -->
|
||||
|
||||
<!-- BEGIN i_open --><em><!-- END i_open -->
|
||||
<!-- BEGIN i_close --></em><!-- END i_close -->
|
||||
|
||||
<!-- BEGIN color --><span style="color: {COLOR}">{TEXT}</span><!-- END color -->
|
||||
|
||||
<!-- BEGIN size --><span style="font-size: {SIZE}%; line-height: 116%;">{TEXT}</span><!-- END size -->
|
||||
|
||||
<!-- BEGIN img --><img src="{URL}" alt="{L_IMAGE}" /><!-- END img -->
|
||||
|
||||
<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->
|
||||
|
||||
<!-- BEGIN email --><a href="mailto:{EMAIL}">{DESCRIPTION}</a><!-- END email -->
|
||||
|
||||
<!-- BEGIN flash --><object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0" width="{WIDTH}" height="{HEIGHT}"><param name="movie" value="{URL}" /><param name="play" value="false" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><embed src="{URL}" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="{WIDTH}" height="{HEIGHT}" play="false" loop="false" quality="high" allowscriptaccess="never" allownetworking="internal"></embed></object><!-- END flash -->
|
@@ -0,0 +1,40 @@
|
||||
<!-- BEGIN ulist_open --><ul style="list-style-type: {LIST_TYPE}"><!-- END ulist_open -->
|
||||
<!-- BEGIN ulist_open_default --><ul><!-- END ulist_open_default -->
|
||||
<!-- BEGIN ulist_close --></ul><!-- END ulist_close -->
|
||||
|
||||
<!-- BEGIN olist_open --><ol style="list-style-type: {LIST_TYPE}"><!-- END olist_open -->
|
||||
<!-- BEGIN olist_close --></ol><!-- END olist_close -->
|
||||
|
||||
<!-- BEGIN listitem --><li><!-- END listitem -->
|
||||
<!-- BEGIN listitem_close --></li><!-- END listitem_close -->
|
||||
|
||||
<!-- BEGIN quote_username_open --><blockquote><div><cite>{USERNAME} {L_WROTE}{L_COLON}</cite><!-- END quote_username_open -->
|
||||
<!-- BEGIN quote_open --><blockquote class="uncited"><div><!-- END quote_open -->
|
||||
<!-- BEGIN quote_close --></div></blockquote><!-- END quote_close -->
|
||||
|
||||
<!-- BEGIN code_open --><div class="codebox"><p>{L_CODE}{L_COLON} <a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a></p><code><!-- END code_open -->
|
||||
<!-- BEGIN code_close --></code></div><!-- END code_close -->
|
||||
|
||||
<!-- BEGIN inline_attachment_open --><div class="inline-attachment"><!-- END inline_attachment_open -->
|
||||
<!-- BEGIN inline_attachment_close --></div><!-- END inline_attachment_close -->
|
||||
|
||||
<!-- BEGIN b_open --><b class="barplus"><!-- END b_open -->
|
||||
<!-- BEGIN b_close --></b><!-- END b_close -->
|
||||
|
||||
<!-- BEGIN u_open --><span style="text-decoration: underline"><!-- END u_open -->
|
||||
<!-- BEGIN u_close --></span><!-- END u_close -->
|
||||
|
||||
<!-- BEGIN i_open --><em><!-- END i_open -->
|
||||
<!-- BEGIN i_close --></em><!-- END i_close -->
|
||||
|
||||
<!-- BEGIN color --><span style="color: {COLOR}">{TEXT}</span><!-- END color -->
|
||||
|
||||
<!-- BEGIN size --><span style="font-size: {SIZE}%; line-height: 116%;">{TEXT}</span><!-- END size -->
|
||||
|
||||
<!-- BEGIN img --><img src="{URL}" alt="{L_IMAGE}" /><!-- END img -->
|
||||
|
||||
<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->
|
||||
|
||||
<!-- BEGIN email --><a href="mailto:{EMAIL}">{DESCRIPTION}</a><!-- END email -->
|
||||
|
||||
<!-- BEGIN flash --><object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0" width="{WIDTH}" height="{HEIGHT}"><param name="movie" value="{URL}" /><param name="play" value="false" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><embed src="{URL}" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="{WIDTH}" height="{HEIGHT}" play="false" loop="false" quality="high" allowscriptaccess="never" allownetworking="internal"></embed></object><!-- END flash -->
|
@@ -0,0 +1,40 @@
|
||||
<!-- BEGIN ulist_open --><ul style="list-style-type: {LIST_TYPE}"><!-- END ulist_open -->
|
||||
<!-- BEGIN ulist_open_default --><ul><!-- END ulist_open_default -->
|
||||
<!-- BEGIN ulist_close --></ul><!-- END ulist_close -->
|
||||
|
||||
<!-- BEGIN olist_open --><ol style="list-style-type: {LIST_TYPE}"><!-- END olist_open -->
|
||||
<!-- BEGIN olist_close --></ol><!-- END olist_close -->
|
||||
|
||||
<!-- BEGIN listitem --><li><!-- END listitem -->
|
||||
<!-- BEGIN listitem_close --></li><!-- END listitem_close -->
|
||||
|
||||
<!-- BEGIN quote_username_open --><blockquote><div><cite>{USERNAME} {L_WROTE}{L_COLON}</cite><!-- END quote_username_open -->
|
||||
<!-- BEGIN quote_open --><blockquote class="uncited"><div><!-- END quote_open -->
|
||||
<!-- BEGIN quote_close --></div></blockquote><!-- END quote_close -->
|
||||
|
||||
<!-- BEGIN code_open --><div class="codebox"><p>{L_CODE}{L_COLON} <a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a></p><code><!-- END code_open -->
|
||||
<!-- BEGIN code_close --></code></div><!-- END code_close -->
|
||||
|
||||
<!-- BEGIN inline_attachment_open --><div class="inline-attachment"><!-- END inline_attachment_open -->
|
||||
<!-- BEGIN inline_attachment_close --></div><!-- END inline_attachment_close -->
|
||||
|
||||
<!-- BEGIN b_open --><strong><!-- END b_open -->
|
||||
<!-- BEGIN b_close --></strong><!-- END b_close -->
|
||||
|
||||
<!-- BEGIN u_open --><span style="text-decoration: underline"><!-- END u_open -->
|
||||
<!-- BEGIN u_close --></span><!-- END u_close -->
|
||||
|
||||
<!-- BEGIN i_open --><em><!-- END i_open -->
|
||||
<!-- BEGIN i_close --></em><!-- END i_close -->
|
||||
|
||||
<!-- BEGIN color --><span style="color: {COLOR}">{TEXT}</span><!-- END color -->
|
||||
|
||||
<!-- BEGIN size --><span style="font-size: {SIZE}%; line-height: 116%;">{TEXT}</span><!-- END size -->
|
||||
|
||||
<!-- BEGIN img --><img src="{URL}" alt="{L_IMAGE}" /><!-- END img -->
|
||||
|
||||
<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->
|
||||
|
||||
<!-- BEGIN email --><a href="mailto:{EMAIL}">{DESCRIPTION}</a><!-- END email -->
|
||||
|
||||
<!-- BEGIN flash --><object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0" width="{WIDTH}" height="{HEIGHT}"><param name="movie" value="{URL}" /><param name="play" value="false" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><embed src="{URL}" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="{WIDTH}" height="{HEIGHT}" play="false" loop="false" quality="high" allowscriptaccess="never" allownetworking="internal"></embed></object><!-- END flash -->
|
162
tests/text_formatter/s9e/parser_test.php
Normal file
162
tests/text_formatter/s9e/parser_test.php
Normal file
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions.php';
|
||||
require_once __DIR__ . '/../../mock/user.php';
|
||||
require_once __DIR__ . '/../../mock/cache.php';
|
||||
|
||||
class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||
{
|
||||
public function test_load_from_cache()
|
||||
{
|
||||
$mock = $this->getMockBuilder('s9e\\TextFormatter\\Parser')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$cache = $this->getMock('phpbb_mock_cache');
|
||||
$cache->expects($this->once())
|
||||
->method('get')
|
||||
->with('_foo_parser')
|
||||
->will($this->returnValue($mock));
|
||||
|
||||
$parser = new \phpbb\textformatter\s9e\parser(
|
||||
$cache,
|
||||
'_foo_parser',
|
||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||
new phpbb_mock_container_builder
|
||||
);
|
||||
}
|
||||
|
||||
public function test_use_from_cache()
|
||||
{
|
||||
$mock = $this->getMockBuilder('s9e\\TextFormatter\\Parser')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('parse')
|
||||
->with('test')
|
||||
->will($this->returnValue('<t>test</t>'));
|
||||
|
||||
$cache = new phpbb_mock_cache;
|
||||
$cache->put('_foo_parser', $mock);
|
||||
|
||||
$parser = new \phpbb\textformatter\s9e\parser(
|
||||
$cache,
|
||||
'_foo_parser',
|
||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||
new phpbb_mock_container_builder
|
||||
);
|
||||
|
||||
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
||||
}
|
||||
|
||||
public function test_regenerate_on_cache_miss()
|
||||
{
|
||||
$mock = $this->getMockBuilder('s9e\\TextFormatter\\Parser')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('parse')
|
||||
->with('test')
|
||||
->will($this->returnValue('<t>test</t>'));
|
||||
|
||||
$factory = $this->getMock('stdClass', array('regenerate'));
|
||||
$factory->expects($this->once())
|
||||
->method('regenerate')
|
||||
->will($this->returnValue(array($mock, false)));
|
||||
|
||||
$container = new phpbb_mock_container_builder;
|
||||
$container->set('text_formatter.s9e.factory', $factory);
|
||||
|
||||
$parser = new \phpbb\textformatter\s9e\parser(
|
||||
new phpbb_mock_cache,
|
||||
'_foo_parser',
|
||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||
$container
|
||||
);
|
||||
|
||||
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_options_tests()
|
||||
*/
|
||||
public function test_options($adapter_method, $adapter_arg, $concrete_method, $concrete_arg)
|
||||
{
|
||||
$mock = $this->getMockBuilder('s9e\\TextFormatter\\Parser')
|
||||
->setMethods(array($concrete_method))
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
foreach ((array) $concrete_arg as $i => $concrete_arg)
|
||||
{
|
||||
$mock->expects($this->at($i))
|
||||
->method($concrete_method)
|
||||
->with($concrete_arg);
|
||||
}
|
||||
|
||||
$cache = new phpbb_mock_cache;
|
||||
$cache->put('_foo_parser', $mock);
|
||||
|
||||
$parser = new \phpbb\textformatter\s9e\parser(
|
||||
$cache,
|
||||
'_foo_parser',
|
||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||
new phpbb_mock_container_builder
|
||||
);
|
||||
|
||||
call_user_func_array(array($parser, $adapter_method), (array) $adapter_arg);
|
||||
}
|
||||
|
||||
public function get_options_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'disable_bbcode', 'url',
|
||||
'disableTag', 'URL'
|
||||
),
|
||||
array(
|
||||
'disable_bbcodes', null,
|
||||
'disablePlugin', 'BBCodes'
|
||||
),
|
||||
array(
|
||||
'disable_censor', null,
|
||||
'disablePlugin', 'Censor'
|
||||
),
|
||||
array(
|
||||
'disable_magic_url', null,
|
||||
'disablePlugin', array('Autoemail', 'Autolink')
|
||||
),
|
||||
array(
|
||||
'disable_smilies', null,
|
||||
'disablePlugin', 'Emoticons'
|
||||
),
|
||||
array(
|
||||
'enable_bbcode', 'url',
|
||||
'enableTag', 'URL'
|
||||
),
|
||||
array(
|
||||
'enable_bbcodes', null,
|
||||
'enablePlugin', 'BBCodes'
|
||||
),
|
||||
array(
|
||||
'enable_censor', null,
|
||||
'enablePlugin', 'Censor'
|
||||
),
|
||||
array(
|
||||
'enable_magic_url', null,
|
||||
'enablePlugin', array('Autoemail', 'Autolink')
|
||||
),
|
||||
array(
|
||||
'enable_smilies', null,
|
||||
'enablePlugin', 'Emoticons'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
355
tests/text_formatter/s9e/renderer_test.php
Normal file
355
tests/text_formatter/s9e/renderer_test.php
Normal file
@@ -0,0 +1,355 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions.php';
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions_content.php';
|
||||
require_once __DIR__ . '/../../mock/cache.php';
|
||||
|
||||
class phpbb_textformatter_s9e_renderer_test extends phpbb_test_case
|
||||
{
|
||||
public function get_cache_dir()
|
||||
{
|
||||
return __DIR__ . '/../../tmp/';
|
||||
}
|
||||
|
||||
public function test_load_from_cache()
|
||||
{
|
||||
// Save a fake renderer class in the cache dir
|
||||
file_put_contents(
|
||||
$this->get_cache_dir() . 'renderer_foo.php',
|
||||
'<?php class renderer_foo { public function setParameter() {} }'
|
||||
);
|
||||
|
||||
$mock = $this->getMockForAbstractClass('s9e\\TextFormatter\\Renderer');
|
||||
|
||||
$cache = $this->getMock('phpbb_mock_cache');
|
||||
$cache->expects($this->once())
|
||||
->method('get')
|
||||
->with('_foo_renderer')
|
||||
->will($this->returnValue(array('class' => 'renderer_foo', 'renderer' => serialize($mock))));
|
||||
|
||||
$container = new phpbb_mock_container_builder;
|
||||
$container->set('text_formatter.s9e.factory', $factory);
|
||||
|
||||
$renderer = new \phpbb\textformatter\s9e\renderer(
|
||||
$cache,
|
||||
$this->get_cache_dir(),
|
||||
'_foo_renderer',
|
||||
$container
|
||||
);
|
||||
}
|
||||
|
||||
public function test_regenerate_on_cache_miss()
|
||||
{
|
||||
$mock = $this->getMockForAbstractClass('s9e\\TextFormatter\\Renderer');
|
||||
|
||||
$cache = $this->getMock('phpbb_mock_cache');
|
||||
$cache->expects($this->once())
|
||||
->method('get')
|
||||
->with('_foo_renderer')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$factory = $this->getMock('stdClass', array('regenerate'));
|
||||
$factory->expects($this->once())
|
||||
->method('regenerate')
|
||||
->will($this->returnValue(array($mock, false)));
|
||||
|
||||
$container = new phpbb_mock_container_builder;
|
||||
$container->set('text_formatter.s9e.factory', $factory);
|
||||
|
||||
$renderer = new \phpbb\textformatter\s9e\renderer(
|
||||
$cache,
|
||||
$this->get_cache_dir(),
|
||||
'_foo_renderer',
|
||||
$container
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_options_cases
|
||||
*/
|
||||
public function test_options($original, $expected, $calls)
|
||||
{
|
||||
$container = new phpbb_mock_container_builder;
|
||||
$this->get_test_case_helpers()->set_s9e_services($container);
|
||||
|
||||
$renderer = $container->get('text_formatter.renderer');
|
||||
|
||||
foreach ($calls as $method => $arg)
|
||||
{
|
||||
$renderer->$method($arg);
|
||||
}
|
||||
|
||||
$this->assertSame($expected, $renderer->render($original));
|
||||
}
|
||||
|
||||
public function get_options_cases()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'banana',
|
||||
array('set_viewcensors' => true)
|
||||
),
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'apple',
|
||||
array('set_viewcensors' => false)
|
||||
),
|
||||
array(
|
||||
'<r><FLASH height="456" url="http://example.org/foo.swf" width="123"><s>[flash=123,456]</s><URL url="http://example.org/foo.swf">http://example.org/foo.swf</URL><e>[/flash]</e></FLASH></r>',
|
||||
'<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0" width="123" height="456"><param name="movie" value="http://example.org/foo.swf"><param name="play" value="false"><param name="loop" value="false"><param name="quality" value="high"><param name="allowScriptAccess" value="never"><param name="allowNetworking" value="internal"><embed src="http://example.org/foo.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="123" height="456" play="false" loop="false" quality="high" allowscriptaccess="never" allownetworking="internal"></object>',
|
||||
array('set_viewflash' => true)
|
||||
),
|
||||
array(
|
||||
'<r><IMG src="http://example.org/foo.png"><s>[img]</s>http://example.org/foo.png<e>[/img]</e></IMG></r>',
|
||||
'<img src="http://example.org/foo.png" alt="Image">',
|
||||
array('set_viewimg' => true)
|
||||
),
|
||||
array(
|
||||
'<r><E>:)</E></r>',
|
||||
'<img class="smilies" src="phpBB/images/smilies/icon_e_smile.gif" alt=":)" title="Smile">',
|
||||
array('set_viewsmilies' => true)
|
||||
),
|
||||
array(
|
||||
'<r><E>:)</E></r>',
|
||||
':)',
|
||||
array('set_viewsmilies' => false)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_default_options_cases
|
||||
*/
|
||||
public function test_default_options($original, $expected, $setup = null)
|
||||
{
|
||||
$container = new phpbb_mock_container_builder;
|
||||
|
||||
if (isset($setup))
|
||||
{
|
||||
$setup($container, $this);
|
||||
}
|
||||
|
||||
$this->get_test_case_helpers()->set_s9e_services($container);
|
||||
|
||||
$this->assertSame($expected, $container->get('text_formatter.renderer')->render($original));
|
||||
}
|
||||
|
||||
public function get_default_options_cases()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'banana'
|
||||
),
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'banana',
|
||||
function ($phpbb_container)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('viewcensors', false);
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'banana',
|
||||
function ($phpbb_container)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('viewcensors', false);
|
||||
|
||||
$config = new \phpbb\config\config(array('allow_nocensors' => true));
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
$phpbb_container->set('config', $config);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
||||
'apple',
|
||||
function ($phpbb_container, $test)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('viewcensors', false);
|
||||
|
||||
$config = new \phpbb\config\config(array('allow_nocensors' => true));
|
||||
|
||||
$auth = $test->getMock('phpbb\\auth\\auth');
|
||||
$auth->expects($test->any())
|
||||
->method('acl_get')
|
||||
->with('u_chgcensors')
|
||||
->will($test->returnValue(true));
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
$phpbb_container->set('config', $config);
|
||||
$phpbb_container->set('auth', $auth);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'<r><FLASH url="http://localhost/foo.swf" width="123" height="456"><s>[flash=123,456]</s>http://localhost/foo.swf<e>[/flash]</e></FLASH></r>',
|
||||
'<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0" width="123" height="456"><param name="movie" value="http://localhost/foo.swf"><param name="play" value="false"><param name="loop" value="false"><param name="quality" value="high"><param name="allowScriptAccess" value="never"><param name="allowNetworking" value="internal"><embed src="http://localhost/foo.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="123" height="456" play="false" loop="false" quality="high" allowscriptaccess="never" allownetworking="internal"></object>'
|
||||
),
|
||||
array(
|
||||
'<r><FLASH url="http://localhost/foo.swf" width="123" height="456"><s>[flash=123,456]</s>http://localhost/foo.swf<e>[/flash]</e></FLASH></r>',
|
||||
'http://localhost/foo.swf',
|
||||
function ($phpbb_container)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('viewflash', false);
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'<r><IMG src="http://localhost/mrgreen.gif"><s>[img]</s><URL url="http://localhost/mrgreen.gif">http://localhost/mrgreen.gif</URL><e>[/img]</e></IMG></r>',
|
||||
'<img src="http://localhost/mrgreen.gif" alt="Image">'
|
||||
),
|
||||
array(
|
||||
'<r><IMG src="http://localhost/mrgreen.gif"><s>[img]</s><URL url="http://localhost/mrgreen.gif">http://localhost/mrgreen.gif</URL><e>[/img]</e></IMG></r>',
|
||||
'<a href="http://localhost/mrgreen.gif" class="postlink">http://localhost/mrgreen.gif</a>',
|
||||
function ($phpbb_container)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('viewimg', false);
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'<r><E>:)</E></r>',
|
||||
'<img class="smilies" src="phpBB/images/smilies/icon_e_smile.gif" alt=":)" title="Smile">'
|
||||
),
|
||||
array(
|
||||
'<r><E>:)</E></r>',
|
||||
':)',
|
||||
function ($phpbb_container)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->optionset('smilies', false);
|
||||
|
||||
$phpbb_container->set('user', $user);
|
||||
}
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function test_default_lang()
|
||||
{
|
||||
global $phpbb_container;
|
||||
$this->get_test_case_helpers()->set_s9e_services($phpbb_container, __DIR__ . '/fixtures/default_lang.xml');
|
||||
|
||||
$renderer = $phpbb_container->get('text_formatter.renderer');
|
||||
|
||||
$this->assertSame('FOO_BAR', $renderer->render('<r><FOO/></r>'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_option_names
|
||||
*/
|
||||
public function test_get_option($option_name)
|
||||
{
|
||||
global $phpbb_container;
|
||||
$this->get_test_case_helpers()->set_s9e_services();
|
||||
|
||||
$renderer = $phpbb_container->get('text_formatter.renderer');
|
||||
|
||||
$renderer->{'set_' . $option_name}(false);
|
||||
$this->assertFalse($renderer->{'get_' . $option_name}());
|
||||
$renderer->{'set_' . $option_name}(true);
|
||||
$this->assertTrue($renderer->{'get_' . $option_name}());
|
||||
}
|
||||
|
||||
public function get_option_names()
|
||||
{
|
||||
return array(
|
||||
array('viewcensors'),
|
||||
array('viewflash'),
|
||||
array('viewimg'),
|
||||
array('viewsmilies')
|
||||
);
|
||||
}
|
||||
|
||||
public function test_styles()
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
$tests = array(
|
||||
1 => '<strong>bold</strong>',
|
||||
2 => '<b>bold</b>'
|
||||
);
|
||||
|
||||
foreach ($tests as $style_id => $expected)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->style = array('style_id' => $style_id);
|
||||
|
||||
$phpbb_container = new phpbb_mock_container_builder;
|
||||
$phpbb_container->set('user', $user);
|
||||
|
||||
$this->get_test_case_helpers()->set_s9e_services($phpbb_container, __DIR__ . '/fixtures/styles.xml', __DIR__ . '/fixtures/styles/');
|
||||
|
||||
$renderer = $phpbb_container->get('text_formatter.renderer');
|
||||
$this->assertSame(
|
||||
$expected,
|
||||
$renderer->render('<r><B><s>[b]</s>bold<e>[/b]</e></B></r>')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_style_inheritance1()
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
// Style 3 inherits from 2 which inherits from 1. Only style 1 has a bbcode.html
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->style = array('style_id' => 3);
|
||||
|
||||
$phpbb_container = new phpbb_mock_container_builder;
|
||||
$phpbb_container->set('user', $user);
|
||||
|
||||
$this->get_test_case_helpers()->set_s9e_services($phpbb_container, __DIR__ . '/fixtures/style_inheritance.xml', __DIR__ . '/fixtures/styles/');
|
||||
|
||||
$renderer = $phpbb_container->get('text_formatter.renderer');
|
||||
$this->assertSame(
|
||||
'<strong>bold</strong>',
|
||||
$renderer->render('<r><B><s>[b]</s>bold<e>[/b]</e></B></r>')
|
||||
);
|
||||
}
|
||||
|
||||
public function test_style_inheritance2()
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
// Style 5 inherits from 4, but both have a bbcode.html
|
||||
$tests = array(
|
||||
4 => '<b>bold</b>',
|
||||
5 => '<b class="barplus">bold</b>'
|
||||
);
|
||||
|
||||
foreach ($tests as $style_id => $expected)
|
||||
{
|
||||
$user = new \phpbb\user('\\phpbb\\datetime');
|
||||
$user->style = array('style_id' => $style_id);
|
||||
|
||||
$phpbb_container = new phpbb_mock_container_builder;
|
||||
$phpbb_container->set('user', $user);
|
||||
|
||||
$this->get_test_case_helpers()->set_s9e_services($phpbb_container, __DIR__ . '/fixtures/style_inheritance.xml', __DIR__ . '/fixtures/styles/');
|
||||
|
||||
$renderer = $phpbb_container->get('text_formatter.renderer');
|
||||
$this->assertSame(
|
||||
$expected,
|
||||
$renderer->render('<r><B><s>[b]</s>bold<e>[/b]</e></B></r>')
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
157
tests/text_formatter/s9e/utils_test.php
Normal file
157
tests/text_formatter/s9e/utils_test.php
Normal file
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions.php';
|
||||
require_once __DIR__ . '/../../../phpBB/includes/functions_content.php';
|
||||
|
||||
class phpbb_textformatter_s9e_utils_test extends phpbb_test_case
|
||||
{
|
||||
/**
|
||||
* @dataProvider get_unparse_tests
|
||||
*/
|
||||
public function test_unparse($original, $expected)
|
||||
{
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services();
|
||||
$utils = $container->get('text_formatter.utils');
|
||||
|
||||
$this->assertSame($expected, $utils->unparse($original));
|
||||
}
|
||||
|
||||
public function get_unparse_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<t>Plain text</t>',
|
||||
'Plain text'
|
||||
),
|
||||
array(
|
||||
"<t>Multi<br/>\nline</t>",
|
||||
"Multi\nline"
|
||||
),
|
||||
array(
|
||||
'<r><B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
'[b]bold[/b]'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_remove_formatting_tests
|
||||
*/
|
||||
public function test_remove_formatting($original, $expected)
|
||||
{
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services();
|
||||
$utils = $container->get('text_formatter.utils');
|
||||
|
||||
$this->assertSame($expected, $utils->remove_formatting($original));
|
||||
}
|
||||
|
||||
public function get_remove_formatting_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<t>Plain text</t>',
|
||||
'Plain text'
|
||||
),
|
||||
array(
|
||||
"<t>Multi<br/>\nline</t>",
|
||||
"Multi\nline"
|
||||
),
|
||||
array(
|
||||
'<r><B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
'bold'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_clean_formatting_tests
|
||||
*/
|
||||
public function test_clean_formatting($original, $expected)
|
||||
{
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services();
|
||||
$utils = $container->get('text_formatter.utils');
|
||||
|
||||
$this->assertSame($expected, $utils->clean_formatting($original));
|
||||
}
|
||||
|
||||
public function get_clean_formatting_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<t>Plain text</t>',
|
||||
'Plain text'
|
||||
),
|
||||
array(
|
||||
"<t>Multi<br/>\nline</t>",
|
||||
"Multi\nline"
|
||||
),
|
||||
array(
|
||||
'<r><B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
' bold '
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider get_remove_bbcode_tests
|
||||
*/
|
||||
public function test_remove_bbcode($original, $name, $depth, $expected)
|
||||
{
|
||||
$container = $this->get_test_case_helpers()->set_s9e_services();
|
||||
$utils = $container->get('text_formatter.utils');
|
||||
|
||||
$this->assertSame($expected, $utils->remove_bbcode($original, $name, $depth));
|
||||
}
|
||||
|
||||
public function get_remove_bbcode_tests()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'<t>Plain text</t>',
|
||||
'b',
|
||||
1,
|
||||
'<t>Plain text</t>'
|
||||
),
|
||||
array(
|
||||
'<r><QUOTE author="u0"><s>[quote="u0"]</s><QUOTE author="u1"><s>[quote="u1"]</s><QUOTE author="u2"><s>[quote="u2"]</s>q2<e>[/quote]</e></QUOTE>
|
||||
q1<e>[/quote]</e></QUOTE>
|
||||
q0<e>[/quote]</e></QUOTE>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
'quote',
|
||||
0,
|
||||
'<r>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>'
|
||||
),
|
||||
array(
|
||||
'<r><QUOTE author="u0"><s>[quote="u0"]</s><QUOTE author="u1"><s>[quote="u1"]</s><QUOTE author="u2"><s>[quote="u2"]</s>q2<e>[/quote]</e></QUOTE>
|
||||
q1<e>[/quote]</e></QUOTE>
|
||||
q0<e>[/quote]</e></QUOTE>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
'quote',
|
||||
1,
|
||||
'<r><QUOTE author="u0"><s>[quote="u0"]</s>
|
||||
q0<e>[/quote]</e></QUOTE>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>'
|
||||
),
|
||||
array(
|
||||
'<r><QUOTE author="u0"><s>[quote="u0"]</s><QUOTE author="u1"><s>[quote="u1"]</s><QUOTE author="u2"><s>[quote="u2"]</s>q2<e>[/quote]</e></QUOTE>
|
||||
q1<e>[/quote]</e></QUOTE>
|
||||
q0<e>[/quote]</e></QUOTE>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>',
|
||||
'quote',
|
||||
2,
|
||||
'<r><QUOTE author="u0"><s>[quote="u0"]</s><QUOTE author="u1"><s>[quote="u1"]</s>
|
||||
q1<e>[/quote]</e></QUOTE>
|
||||
q0<e>[/quote]</e></QUOTE>
|
||||
<B><s>[b]</s>bold<e>[/b]</e></B></r>'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user