From ffd66f8b8d10c428661fe95cb8fbebaddb34423b Mon Sep 17 00:00:00 2001 From: JoshyPHP Date: Fri, 26 Apr 2019 19:59:06 +0200 Subject: [PATCH] Bumped PHP requirements to 7.1 --- .gitattributes | 15 + .travis.yml | 5 +- composer.json | 14 +- docs/testdox.txt | 4852 ++++++++++++++++- scripts/build/release.sh | 4 +- scripts/travis/installComposer.sh | 12 +- scripts/travis/setup.sh | 11 +- scripts/updateTests.php | 85 + tests/BundleTest.php | 2 +- tests/Bundles/AbstractTest.php | 4 +- tests/Configurator/BundleGeneratorTest.php | 22 +- .../Collections/AttributeCollectionTest.php | 10 +- .../Collections/AttributeFilterChainTest.php | 20 +- .../AttributeFilterCollectionTest.php | 15 +- .../AttributePreprocessorCollectionTest.php | 7 +- .../Collections/HostnameListTest.php | 2 +- .../Collections/MinifierListTest.php | 8 +- .../Collections/NormalizedCollectionTest.php | 22 +- .../Collections/NormalizedListTest.php | 17 +- .../Collections/PluginCollectionTest.php | 20 +- .../Collections/RulesGeneratorListTest.php | 5 +- .../Configurator/Collections/RulesetTest.php | 138 +- .../Collections/SchemeListTest.php | 5 +- .../Collections/TagCollectionTest.php | 10 +- .../Collections/TagFilterChainTest.php | 20 +- .../TemplateParameterCollectionTest.php | 3 +- tests/Configurator/Helpers/AVTHelperTest.php | 8 +- .../Configurator/Helpers/ConfigHelperTest.php | 5 +- .../Helpers/ContextSafenessTest.php | 12 +- .../Helpers/RegexpBuilderTest.php | 5 +- .../Configurator/Helpers/RegexpParserTest.php | 25 +- .../Helpers/TemplateHelperTest.php | 4 +- .../Helpers/TemplateLoaderTest.php | 27 +- .../Helpers/TemplateModifierTest.php | 4 +- .../Helpers/TemplateParserTest.php | 15 +- .../Configurator/Helpers/XPathHelperTest.php | 8 +- .../AttributeFilters/ChoiceFilterTest.php | 5 +- .../AttributeFilters/HashmapFilterTest.php | 12 +- .../Items/AttributeFilters/MapFilterTest.php | 17 +- .../AttributeFilters/RangeFilterTest.php | 27 +- .../AttributeFilters/RegexpFilterTest.php | 12 +- .../Items/AttributePreprocessorTest.php | 5 +- .../Items/ProgrammableCallbackTest.php | 10 +- tests/Configurator/Items/RegexpTest.php | 5 +- tests/Configurator/Items/TagTest.php | 27 +- tests/Configurator/Items/TemplateTest.php | 2 +- tests/Configurator/JavaScript/EncoderTest.php | 14 +- .../JavaScript/FunctionProviderTest.php | 7 +- .../JavaScript/HintGeneratorTest.php | 2 +- .../Configurator/JavaScript/MinifierTest.php | 8 +- .../ClosureCompilerApplicationTest.php | 24 +- .../Minifiers/ClosureCompilerServiceTest.php | 26 +- .../Minifiers/FirstAvailableTest.php | 10 +- .../Minifiers/MatthiasMullieMinifyTest.php | 2 +- .../JavaScript/RegexpConvertorTest.php | 20 +- tests/Configurator/JavaScriptTest.php | 57 +- .../RendererGenerators/PHP/QuickTest.php | 12 +- .../RendererGenerators/PHP/SerializerTest.php | 4 +- .../PHP/XPathConvertorTest.php | 4 +- .../RendererGenerators/PHPTest.php | 31 +- .../RendererGenerators/XSLTTest.php | 26 +- tests/Configurator/RenderingTest.php | 5 +- tests/Configurator/TemplateCheckerTest.php | 82 +- .../AbstractDynamicContentCheckTest.php | 49 +- .../DisallowAttributeSetsTest.php | 6 +- .../TemplateChecks/DisallowCopyTest.php | 6 +- .../DisallowDisableOutputEscapingTest.php | 6 +- .../DisallowDynamicAttributeNamesTest.php | 6 +- .../DisallowDynamicElementNamesTest.php | 6 +- .../TemplateChecks/DisallowElementNSTest.php | 11 +- .../TemplateChecks/DisallowElementTest.php | 21 +- .../DisallowFlashFullScreenTest.php | 76 +- .../DisallowNodeByXPathTest.php | 6 +- ...allowObjectParamsWithGeneratedNameTest.php | 11 +- .../TemplateChecks/DisallowPHPTagsTest.php | 38 +- .../DisallowUnsafeCopyOfTest.php | 8 +- .../DisallowUnsafeDynamicCSSTest.php | 56 +- .../DisallowUnsafeDynamicJSTest.php | 56 +- .../DisallowUnsafeDynamicURLTest.php | 89 +- .../DisallowXPathFunctionTest.php | 37 +- .../RestrictFlashNetworkingTest.php | 120 +- .../RestrictFlashScriptAccessTest.php | 112 +- .../AbstractNormalizationTest.php | 3 + .../TemplateNormalizations/AbstractTest.php | 6 +- .../MinifyXPathExpressionsTest.php | 5 +- .../Traits/CollectionProxyTest.php | 2 +- .../Configurator/Traits/ConfigurableTest.php | 26 +- tests/Configurator/UrlConfigTest.php | 19 +- .../Validators/AttributeNameTest.php | 5 +- tests/Configurator/Validators/TagNameTest.php | 5 +- .../Validators/TemplateParameterNameTest.php | 5 +- tests/ConfiguratorTest.php | 22 +- tests/Parser/FilterProcessingTest.php | 1 + tests/Parser/PluginsHandlingTest.php | 5 +- tests/Parser/TagTest.php | 3 +- tests/ParserTest.php | 24 +- .../Configurator/BBCodeCollectionTest.php | 10 +- .../BBCodes/Configurator/BBCodeMonkeyTest.php | 6 +- .../BBCodes/Configurator/BBCodeTest.php | 5 +- .../BBCodes/Configurator/RepositoryTest.php | 18 +- tests/Plugins/BBCodes/ConfiguratorTest.php | 11 +- tests/Plugins/Censor/ConfiguratorTest.php | 3 +- tests/Plugins/ConfiguratorBaseTest.php | 41 +- tests/Plugins/Emoji/ConfiguratorTest.php | 2 +- .../Configurator/EmoticonCollectionTest.php | 13 +- tests/Plugins/Emoticons/ConfiguratorTest.php | 18 +- .../Plugins/HTMLElements/ConfiguratorTest.php | 28 +- tests/Plugins/Litedown/ConfiguratorTest.php | 2 +- .../CachedDefinitionCollectionTest.php | 19 +- .../SiteDefinitionCollectionTest.php | 25 +- .../XmlFileDefinitionCollectionTest.php | 30 +- .../Configurator/TemplateBuilderTest.php | 12 +- tests/Plugins/MediaEmbed/ConfiguratorTest.php | 22 +- tests/Plugins/ParserBaseTest.php | 2 +- tests/Plugins/Preg/ConfiguratorTest.php | 13 +- tests/RendererTest.php | 10 +- tests/RendererTests.php | 16 +- tests/Renderers/PHPTest.php | 34 +- tests/Renderers/UnformattedTest.php | 1 + tests/Renderers/XSLTTest.php | 8 +- tests/Test.php | 19 +- tests/Utils/Http/Clients/AbstractTest.php | 4 +- tests/Utils/Http/Clients/CachedTest.php | 2 +- tests/Utils/XPathTest.php | 4 +- 124 files changed, 6049 insertions(+), 1077 deletions(-) create mode 100644 .gitattributes create mode 100755 scripts/updateTests.php diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..54345fcb6c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +/.coveralls.yml export-ignore +/.gitattributes export-ignore +/.travis.yml export-ignore +/CHANGELOG.md export-ignore +/README.md export-ignore +/composer.lock export-ignore +/docs export-ignore +/mkdocs.yml export-ignore +/phpunit.xml export-ignore +/scripts export-ignore +/src/Configurator/JavaScript/functions export-ignore +/src/Plugins/Litedown/Regexps.md export-ignore +/src/Plugins/MediaEmbed/Configurator/sites export-ignore +/tests export-ignore +/vendor export-ignore \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index e93f58e573..08efdf048b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,11 +5,10 @@ matrix: include: - php: 7.1 env: COVERAGE=1 - - php: 5.4 - dist: precise - - php: 5.6 - php: 7.2 - php: 7.3 + allow_failures: + - php: nightly branches: except: - /^dist/ diff --git a/composer.json b/composer.json index 92ab47a0e7..fb5d1ceb53 100644 --- a/composer.json +++ b/composer.json @@ -1,21 +1,20 @@ { "name": "s9e/text-formatter", - "version": "1.4.4-dev", "type": "library", "description": "Multi-purpose text formatting and markup library. Plugins offer support for BBCodes, Markdown, emoticons, HTML, embedding media (YouTube, etc...), enhanced typography and more.", "homepage": "https://github.com/s9e/TextFormatter/", "keywords": ["bbcode","bbcodes","blog","censor","embed","emoji","emoticons","engine","forum","html","markdown","markup","media","parser","shortcodes"], "license": "MIT", "require": { - "php": ">=5.6.0", + "php": ">=7.1", "ext-dom": "*", "ext-filter": "*", "lib-pcre": ">=7.2" }, "require-dev": { - "matthiasmullie/minify": "*", - "php-coveralls/php-coveralls": "*", - "s9e/regexp-builder": "1.*" + "matthiasmullie/minify": "*", + "phpunit/phpunit": "^7", + "s9e/regexp-builder": "1.*" }, "suggest": { "ext-curl": "Improves the performance of the MediaEmbed plugin and some JavaScript minifiers", @@ -35,5 +34,8 @@ "psr-4": { "s9e\\TextFormatter\\Tests\\": "tests" } + }, + "extra": { + "version": "2.0.0-dev" } -} \ No newline at end of file +} diff --git a/docs/testdox.txt b/docs/testdox.txt index 771f4467b8..f38ce58567 100644 --- a/docs/testdox.txt +++ b/docs/testdox.txt @@ -398,17 +398,69 @@ s9e\TextFormatter\Tests\Configurator\Collections\TemplateParameterCollection s9e\TextFormatter\Tests\Configurator\UnsafeTemplateException [x] getNode() returns the stored node [x] setNode() sets the stored node - [x] highlightNode() returns the template's source formatted and with the stored node highlighted + [x] highlightNode() returns the template's source formatted and with the stored node highlighted with data set #0 + [x] highlightNode() returns the template's source formatted and with the stored node highlighted with data set #1 + [x] highlightNode() returns the template's source formatted and with the stored node highlighted with data set #2 s9e\TextFormatter\Tests\Configurator\Helpers\AVTHelper - [x] parse() tests - [x] serialize() tests - [x] replace() tests - [x] toXSL() tests + [x] parse() tests with data set #0 + [x] parse() tests with data set #1 + [x] parse() tests with data set #2 + [x] parse() tests with data set #3 + [x] parse() tests with data set #4 + [x] parse() tests with data set #5 + [x] parse() tests with data set #6 + [x] parse() tests with data set #7 + [x] parse() tests with data set #8 + [x] parse() tests with data set #9 + [x] parse() tests with data set #10 + [x] parse() tests with data set #11 + [x] serialize() tests with data set #0 + [x] serialize() tests with data set #1 + [x] serialize() tests with data set #2 + [x] serialize() tests with data set #3 + [x] serialize() tests with data set #4 + [x] serialize() tests with data set #5 + [x] replace() tests with data set #0 + [x] replace() tests with data set #1 + [x] replace() tests with data set #2 + [x] toXSL() tests with data set #0 + [x] toXSL() tests with data set #1 + [x] toXSL() tests with data set #2 + [x] toXSL() tests with data set #3 + [x] toXSL() tests with data set #4 + [x] toXSL() tests with data set #5 + [x] toXSL() tests with data set #6 + [x] toXSL() tests with data set #7 + [x] toXSL() tests with data set #8 s9e\TextFormatter\Tests\Configurator\Helpers\CharacterClassBuilder [x] Special characters are properly matched - [x] fromList() tests + [x] fromList() tests with data set #0 + [x] fromList() tests with data set #1 + [x] fromList() tests with data set #2 + [x] fromList() tests with data set #3 + [x] fromList() tests with data set #4 + [x] fromList() tests with data set #5 + [x] fromList() tests with data set #6 + [x] fromList() tests with data set #7 + [x] fromList() tests with data set #8 + [x] fromList() tests with data set #9 + [x] fromList() tests with data set #10 + [x] fromList() tests with data set #11 + [x] fromList() tests with data set #12 + [x] fromList() tests with data set #13 + [x] fromList() tests with data set #14 + [x] fromList() tests with data set #15 + [x] fromList() tests with data set #16 + [x] fromList() tests with data set #17 + [x] fromList() tests with data set #18 + [x] fromList() tests with data set #19 + [x] fromList() tests with data set #20 + [x] fromList() tests with data set #21 + [x] fromList() tests with data set #22 + [x] fromList() tests with data set #23 + [x] fromList() tests with data set #24 s9e\TextFormatter\Tests\Configurator\Helpers\ConfigHelper [x] filterConfig() filters for the right target @@ -438,13 +490,88 @@ s9e\TextFormatter\Tests\Configurator\Helpers\ContextSafeness [x] getDisallowedCharactersInJS() returns a list of strings s9e\TextFormatter\Tests\Configurator\Helpers\ElementInspector - [x] Test cases + [x] Test cases with data set #0 + [x] Test cases with data set #1 + [x] Test cases with data set #2 + [x] Test cases with data set #3 + [x] Test cases with data set #4 + [x] Test cases with data set #5 + [x] Test cases with data set #6 + [x] Test cases with data set #7 + [x] Test cases with data set #8 + [x] Test cases with data set #9 + [x] Test cases with data set #10 + [x] Test cases with data set #11 + [x] Test cases with data set #12 + [x] Test cases with data set #13 + [x] Test cases with data set #14 + [x] Test cases with data set #15 + [x] Test cases with data set #16 + [x] Test cases with data set #17 + [x] Test cases with data set #18 + [x] Test cases with data set #19 + [x] Test cases with data set #20 + [x] Test cases with data set #21 + [x] Test cases with data set #22 + [x] Test cases with data set #23 + [x] Test cases with data set #24 + [x] Test cases with data set #25 + [x] Test cases with data set #26 + [x] Test cases with data set #27 + [x] Test cases with data set #28 s9e\TextFormatter\Tests\Configurator\Helpers\NodeLocator - [x] getObjectParamsByRegexp() tests - [x] getCSSNodes() tests - [x] getJSNodes() tests - [x] getURLNodes() tests + [x] getObjectParamsByRegexp() tests with data set #0 + [x] getObjectParamsByRegexp() tests with data set #1 + [x] getObjectParamsByRegexp() tests with data set #2 + [x] getObjectParamsByRegexp() tests with data set #3 + [x] getObjectParamsByRegexp() tests with data set #4 + [x] getObjectParamsByRegexp() tests with data set #5 + [x] getObjectParamsByRegexp() tests with data set #6 + [x] getObjectParamsByRegexp() tests with data set #7 + [x] getCSSNodes() tests with data set #0 + [x] getCSSNodes() tests with data set #1 + [x] getCSSNodes() tests with data set #2 + [x] getCSSNodes() tests with data set #3 + [x] getCSSNodes() tests with data set #4 + [x] getCSSNodes() tests with data set #5 + [x] getCSSNodes() tests with data set #6 + [x] getCSSNodes() tests with data set #7 + [x] getCSSNodes() tests with data set #8 + [x] getCSSNodes() tests with data set #9 + [x] getJSNodes() tests with data set #0 + [x] getJSNodes() tests with data set #1 + [x] getJSNodes() tests with data set #2 + [x] getJSNodes() tests with data set #3 + [x] getJSNodes() tests with data set #4 + [x] getJSNodes() tests with data set #5 + [x] getJSNodes() tests with data set #6 + [x] getJSNodes() tests with data set #7 + [x] getJSNodes() tests with data set #8 + [x] getJSNodes() tests with data set #9 + [x] getJSNodes() tests with data set #10 + [x] getURLNodes() tests with data set #0 + [x] getURLNodes() tests with data set #1 + [x] getURLNodes() tests with data set #2 + [x] getURLNodes() tests with data set #3 + [x] getURLNodes() tests with data set #4 + [x] getURLNodes() tests with data set #5 + [x] getURLNodes() tests with data set #6 + [x] getURLNodes() tests with data set #7 + [x] getURLNodes() tests with data set #8 + [x] getURLNodes() tests with data set #9 + [x] getURLNodes() tests with data set #10 + [x] getURLNodes() tests with data set #11 + [x] getURLNodes() tests with data set #12 + [x] getURLNodes() tests with data set #13 + [x] getURLNodes() tests with data set #14 + [x] getURLNodes() tests with data set #15 + [x] getURLNodes() tests with data set #16 + [x] getURLNodes() tests with data set #17 + [x] getURLNodes() tests with data set #18 + [x] getURLNodes() tests with data set #19 + [x] getURLNodes() tests with data set #20 + [x] getURLNodes() tests with data set #21 [x] getElementsByRegexp() can return elements created via s9e\TextFormatter\Tests\Configurator\Helpers\RegexpBuilder @@ -602,8 +729,53 @@ s9e\TextFormatter\Tests\Configurator\Helpers\RegexpParser [x] parse() parses lookbehind assertions [x] parse() parses negative lookbehind assertions [x] parse() parses escaped right parentheses - [x] getAllowedCharacterRegexp() works - [x] getCaptureNames() works + [x] getAllowedCharacterRegexp() works with data set #0 + [x] getAllowedCharacterRegexp() works with data set #1 + [x] getAllowedCharacterRegexp() works with data set #2 + [x] getAllowedCharacterRegexp() works with data set #3 + [x] getAllowedCharacterRegexp() works with data set #4 + [x] getAllowedCharacterRegexp() works with data set #5 + [x] getAllowedCharacterRegexp() works with data set #6 + [x] getAllowedCharacterRegexp() works with data set #7 + [x] getAllowedCharacterRegexp() works with data set #8 + [x] getAllowedCharacterRegexp() works with data set #9 + [x] getAllowedCharacterRegexp() works with data set #10 + [x] getAllowedCharacterRegexp() works with data set #11 + [x] getAllowedCharacterRegexp() works with data set #12 + [x] getAllowedCharacterRegexp() works with data set #13 + [x] getAllowedCharacterRegexp() works with data set #14 + [x] getAllowedCharacterRegexp() works with data set #15 + [x] getAllowedCharacterRegexp() works with data set #16 + [x] getAllowedCharacterRegexp() works with data set #17 + [x] getAllowedCharacterRegexp() works with data set #18 + [x] getAllowedCharacterRegexp() works with data set #19 + [x] getAllowedCharacterRegexp() works with data set #20 + [x] getAllowedCharacterRegexp() works with data set #21 + [x] getAllowedCharacterRegexp() works with data set #22 + [x] getAllowedCharacterRegexp() works with data set #23 + [x] getAllowedCharacterRegexp() works with data set #24 + [x] getAllowedCharacterRegexp() works with data set #25 + [x] getAllowedCharacterRegexp() works with data set #26 + [x] getAllowedCharacterRegexp() works with data set #27 + [x] getAllowedCharacterRegexp() works with data set #28 + [x] getAllowedCharacterRegexp() works with data set #29 + [x] getAllowedCharacterRegexp() works with data set #30 + [x] getAllowedCharacterRegexp() works with data set #31 + [x] getAllowedCharacterRegexp() works with data set #32 + [x] getAllowedCharacterRegexp() works with data set #33 + [x] getAllowedCharacterRegexp() works with data set #34 + [x] getAllowedCharacterRegexp() works with data set #35 + [x] getAllowedCharacterRegexp() works with data set #36 + [x] getAllowedCharacterRegexp() works with data set #37 + [x] getAllowedCharacterRegexp() works with data set #38 + [x] getAllowedCharacterRegexp() works with data set #39 + [x] getAllowedCharacterRegexp() works with data set #40 + [x] getAllowedCharacterRegexp() works with data set #41 + [x] getAllowedCharacterRegexp() works with data set #42 + [x] getAllowedCharacterRegexp() works with data set #43 + [x] getCaptureNames() works with data set #0 + [x] getCaptureNames() works with data set #1 + [x] getCaptureNames() works with data set #2 s9e\TextFormatter\Tests\Configurator\Helpers\RulesHelper [x] Works with a single tag @@ -623,13 +795,130 @@ s9e\TextFormatter\Tests\Configurator\Helpers\RulesHelper s9e\TextFormatter\Tests\Configurator\Helpers\TemplateHelper [x] Provides loadTemplate() and saveTemplate() - [x] getParametersFromXSL() tests - [x] highlightNode() tests - [x] replaceHomogeneousTemplates() tests + [x] getParametersFromXSL() tests with data set #0 + [x] getParametersFromXSL() tests with data set #1 + [x] getParametersFromXSL() tests with data set #2 + [x] getParametersFromXSL() tests with data set #3 + [x] getParametersFromXSL() tests with data set #4 + [x] getParametersFromXSL() tests with data set #5 + [x] getParametersFromXSL() tests with data set #6 + [x] getParametersFromXSL() tests with data set #7 + [x] getParametersFromXSL() tests with data set #8 + [x] highlightNode() tests with data set #0 + [x] highlightNode() tests with data set #1 + [x] highlightNode() tests with data set #2 + [x] highlightNode() tests with data set #3 + [x] highlightNode() tests with data set #4 + [x] highlightNode() tests with data set #5 + [x] highlightNode() tests with data set #6 + [x] highlightNode() tests with data set #7 + [x] highlightNode() tests with data set #8 + [x] highlightNode() tests with data set #9 + [x] replaceHomogeneousTemplates() tests with data set #0 + [x] replaceHomogeneousTemplates() tests with data set #1 + [x] replaceHomogeneousTemplates() tests with data set #2 + [x] replaceHomogeneousTemplates() tests with data set #3 + [x] replaceHomogeneousTemplates() tests with data set #4 + [x] replaceHomogeneousTemplates() tests with data set #5 s9e\TextFormatter\Tests\Configurator\Helpers\TemplateInspector [x] evaluate() returns the return value of an XPath expression - [x] Test cases + [x] Test cases with data set #0 + [x] Test cases with data set #1 + [x] Test cases with data set #2 + [x] Test cases with data set #3 + [x] Test cases with data set #4 + [x] Test cases with data set #5 + [x] Test cases with data set #6 + [x] Test cases with data set #7 + [x] Test cases with data set #8 + [x] Test cases with data set #9 + [x] Test cases with data set #10 + [x] Test cases with data set #11 + [x] Test cases with data set #12 + [x] Test cases with data set #13 + [x] Test cases with data set #14 + [x] Test cases with data set #15 + [x] Test cases with data set #16 + [x] Test cases with data set #17 + [x] Test cases with data set #18 + [x] Test cases with data set #19 + [x] Test cases with data set #20 + [x] Test cases with data set #21 + [x] Test cases with data set #22 + [x] Test cases with data set #23 + [x] Test cases with data set #24 + [x] Test cases with data set #25 + [x] Test cases with data set #26 + [x] Test cases with data set #27 + [x] Test cases with data set #28 + [x] Test cases with data set #29 + [x] Test cases with data set #30 + [x] Test cases with data set #31 + [x] Test cases with data set #32 + [x] Test cases with data set #33 + [x] Test cases with data set #34 + [x] Test cases with data set #35 + [x] Test cases with data set #36 + [x] Test cases with data set #37 + [x] Test cases with data set #38 + [x] Test cases with data set #39 + [x] Test cases with data set #40 + [x] Test cases with data set #41 + [x] Test cases with data set #42 + [x] Test cases with data set #43 + [x] Test cases with data set #44 + [x] Test cases with data set #45 + [x] Test cases with data set #46 + [x] Test cases with data set #47 + [x] Test cases with data set #48 + [x] Test cases with data set #49 + [x] Test cases with data set #50 + [x] Test cases with data set #51 + [x] Test cases with data set #52 + [x] Test cases with data set #53 + [x] Test cases with data set #54 + [x] Test cases with data set #55 + [x] Test cases with data set #56 + [x] Test cases with data set #57 + [x] Test cases with data set #58 + [x] Test cases with data set #59 + [x] Test cases with data set #60 + [x] Test cases with data set #61 + [x] Test cases with data set #62 + [x] Test cases with data set #63 + [x] Test cases with data set #64 + [x] Test cases with data set #65 + [x] Test cases with data set #66 + [x] Test cases with data set #67 + [x] Test cases with data set #68 + [x] Test cases with data set #69 + [x] Test cases with data set #70 + [x] Test cases with data set #71 + [x] Test cases with data set #72 + [x] Test cases with data set #73 + [x] Test cases with data set #74 + [x] Test cases with data set #75 + [x] Test cases with data set #76 + [x] Test cases with data set #77 + [x] Test cases with data set #78 + [x] Test cases with data set #79 + [x] Test cases with data set #80 + [x] Test cases with data set #81 + [x] Test cases with data set #82 + [x] Test cases with data set #83 + [x] Test cases with data set #84 + [x] Test cases with data set #85 + [x] Test cases with data set #86 + [x] Test cases with data set #87 + [x] Test cases with data set #88 + [x] Test cases with data set #89 + [x] Test cases with data set #90 + [x] Test cases with data set #91 + [x] Test cases with data set #92 + [x] Test cases with data set #93 + [x] Test cases with data set #94 + [x] Test cases with data set #95 s9e\TextFormatter\Tests\Configurator\Helpers\TemplateLoader [x] load() can load 'foo' @@ -641,6 +930,7 @@ s9e\TextFormatter\Tests\Configurator\Helpers\TemplateLoader [x] save() removes redundant declarations for the xsl namespace [x] load() can load '' [x] load() can load '' + [x] load() can load '' [x] load() accepts unescaped ampersands [x] load() converts HTML entities [x] load() does not break numeric character references @@ -653,20 +943,150 @@ s9e\TextFormatter\Tests\Configurator\Helpers\TemplateLoader [x] load() does not load entities s9e\TextFormatter\Tests\Configurator\Helpers\TemplateModifier - [x] replaceTokens() tests + [x] replaceTokens() tests with data set #0 + [x] replaceTokens() tests with data set #1 + [x] replaceTokens() tests with data set #2 + [x] replaceTokens() tests with data set #3 + [x] replaceTokens() tests with data set #4 + [x] replaceTokens() tests with data set #5 + [x] replaceTokens() tests with data set #6 + [x] replaceTokens() tests with data set #7 + [x] replaceTokens() tests with data set #8 + [x] replaceTokens() tests with data set #9 + [x] replaceTokens() tests with data set #10 + [x] replaceTokens() tests with data set #11 + [x] replaceTokens() tests with data set #12 + [x] replaceTokens() tests with data set #13 + [x] replaceTokens() tests with data set #14 s9e\TextFormatter\Tests\Configurator\Helpers\TemplateParser - [x] parse() tests + [x] parse() tests with data set #0 + [x] parse() tests with data set #1 + [x] parse() tests with data set #2 + [x] parse() tests with data set #3 + [x] parse() tests with data set #4 + [x] parse() tests with data set #5 + [x] parse() tests with data set #6 + [x] parse() tests with data set #7 + [x] parse() tests with data set #8 + [x] parse() tests with data set #9 + [x] parse() tests with data set #10 + [x] parse() tests with data set #11 + [x] parse() tests with data set #12 + [x] parse() tests with data set #13 + [x] parse() tests with data set #14 + [x] parse() tests with data set #15 + [x] parse() tests with data set #16 + [x] parse() tests with data set #17 + [x] parse() tests with data set #18 + [x] parse() tests with data set #19 + [x] parse() tests with data set #20 + [x] parse() tests with data set #21 + [x] parse() tests with data set #22 + [x] parse() tests with data set #23 + [x] parse() tests with data set #24 + [x] parse() tests with data set #25 + [x] parse() tests with data set #26 + [x] parse() tests with data set #27 + [x] parse() tests with data set #28 + [x] parse() tests with data set #29 + [x] parse() tests with data set #30 + [x] parse() tests with data set #31 + [x] parse() tests with data set #32 + [x] parse() tests with data set #33 + [x] parse() tests with data set #34 + [x] parse() tests with data set #35 + [x] parse() tests with data set #36 + [x] parse() tests with data set #37 + [x] parse() tests with data set #38 + [x] parse() tests with data set #39 + [x] parse() tests with data set #40 + [x] parse() tests with data set #41 + [x] parse() tests with data set #42 + [x] parse() tests with data set #43 + [x] parse() tests with data set #44 + [x] parse() tests with data set #45 + [x] parse() tests with data set #46 + [x] parse() tests with data set #47 + [x] parse() tests with data set #48 + [x] parse() tests with data set #49 + [x] parse() tests with data set #50 + [x] parse() tests with data set #51 + [x] parse() tests with data set #52 + [x] parse() tests with data set #53 + [x] parse() tests with data set #54 + [x] parse() tests with data set #55 + [x] parse() tests with data set #56 + [x] parse() tests with data set #57 + [x] parse() tests with data set #58 + [x] parse() tests with data set #59 + [x] parse() tests with data set #60 + [x] parse() tests with data set #61 + [x] parse() tests with data set #62 + [x] parse() tests with data set #63 + [x] parse() tests with data set #64 + [x] parse() tests with data set #65 + [x] parse() tests with data set #66 + [x] parse() tests with data set #67 [x] parse() throws an exception if it encounters a processing instruction in the stylesheet [x] parse() throws an exception if it encounters an unsupported XSL element [x] parse() throws an exception if it encounters an unsupported expression - [x] Parse equality expr + [x] Parse equality expr with data set #0 + [x] Parse equality expr with data set #1 + [x] Parse equality expr with data set #2 + [x] Parse equality expr with data set #3 + [x] Parse equality expr with data set #4 + [x] Parse equality expr with data set #5 + [x] Parse equality expr with data set #6 + [x] Parse equality expr with data set #7 s9e\TextFormatter\Tests\Configurator\Helpers\XPathHelper - [x] getVariables() tests - [x] isExpressionNumeric() tests - [x] minify() tests - [x] Parse equality expr + [x] getVariables() tests with data set #0 + [x] getVariables() tests with data set #1 + [x] getVariables() tests with data set #2 + [x] getVariables() tests with data set #3 + [x] isExpressionNumeric() tests with data set #0 + [x] isExpressionNumeric() tests with data set #1 + [x] isExpressionNumeric() tests with data set #2 + [x] isExpressionNumeric() tests with data set #3 + [x] isExpressionNumeric() tests with data set #4 + [x] isExpressionNumeric() tests with data set #5 + [x] isExpressionNumeric() tests with data set #6 + [x] isExpressionNumeric() tests with data set #7 + [x] isExpressionNumeric() tests with data set #8 + [x] isExpressionNumeric() tests with data set #9 + [x] isExpressionNumeric() tests with data set #10 + [x] isExpressionNumeric() tests with data set #11 + [x] isExpressionNumeric() tests with data set #12 + [x] isExpressionNumeric() tests with data set #13 + [x] isExpressionNumeric() tests with data set #14 + [x] isExpressionNumeric() tests with data set #15 + [x] isExpressionNumeric() tests with data set #16 + [x] isExpressionNumeric() tests with data set #17 + [x] isExpressionNumeric() tests with data set #18 + [x] isExpressionNumeric() tests with data set #19 + [x] minify() tests with data set #0 + [x] minify() tests with data set #1 + [x] minify() tests with data set #2 + [x] minify() tests with data set #3 + [x] minify() tests with data set #4 + [x] minify() tests with data set #5 + [x] minify() tests with data set #6 + [x] minify() tests with data set #7 + [x] minify() tests with data set #8 + [x] minify() tests with data set #9 + [x] minify() tests with data set #10 + [x] minify() tests with data set #11 + [x] minify() tests with data set #12 + [x] minify() tests with data set #13 + [x] Parse equality expr with data set #0 + [x] Parse equality expr with data set #1 + [x] Parse equality expr with data set #2 + [x] Parse equality expr with data set #3 + [x] Parse equality expr with data set #4 + [x] Parse equality expr with data set #5 + [x] Parse equality expr with data set #6 + [x] Parse equality expr with data set #7 s9e\TextFormatter\Tests\Configurator\Items\Attribute [x] An array of options can be passed to the constructor @@ -705,6 +1125,7 @@ s9e\TextFormatter\Tests\Configurator\Items\ProgrammableCallback [x] An array of variables can be set with setVars() or retrieved with getVars() [x] setVars() is chainable [x] A single variable can be set with setVar() without overwriting other variables + [x] setVars() is chainable [x] addParameterByValue() adds a parameter as a value with no name [x] addParameterByValue() is chainable [x] addParameterByName() adds a parameter as a name with no value @@ -981,7 +1402,12 @@ s9e\TextFormatter\Tests\Configurator\Items\TemplateDocument [x] saveChanges() updates the document's original template s9e\TextFormatter\Tests\Configurator\CallbackGenerator - [x] replaceCallbacks() tests + [x] replaceCallbacks() tests with data set #0 + [x] replaceCallbacks() tests with data set #1 + [x] replaceCallbacks() tests with data set #2 + [x] replaceCallbacks() tests with data set #3 + [x] replaceCallbacks() tests with data set #4 + [x] replaceCallbacks() tests with data set #5 s9e\TextFormatter\Tests\Configurator\JavaScript\Code [x] Can be cast as a string @@ -991,7 +1417,13 @@ s9e\TextFormatter\Tests\Configurator\JavaScript\Code s9e\TextFormatter\Tests\Configurator\ConfigOptimizer [x] reset() clears the stored objects - [x] OptimizeObject tests + [x] OptimizeObject tests with data set #0 + [x] OptimizeObject tests with data set #1 + [x] OptimizeObject tests with data set #2 + [x] OptimizeObject tests with data set #3 + [x] OptimizeObject tests with data set #4 + [x] OptimizeObject tests with data set #5 + [x] OptimizeObject tests with data set #6 s9e\TextFormatter\Tests\Configurator\JavaScript\ConfigValue [x] getUseCount() returns 0 by default @@ -1002,6 +1434,7 @@ s9e\TextFormatter\Tests\Configurator\JavaScript\ConfigValue [x] deduplicate() marks the value as deduplicated if the use count is 2 [x] deduplicate() sets the use counter of the instance to 1 [x] deduplicate() decrements the use counter of config values contained in the instance + [x] deduplicate() decrements the use counter of config values contained in the instance s9e\TextFormatter\Tests\Configurator\Dictionary [x] filterConfig('PHP') returns an array @@ -1009,7 +1442,25 @@ s9e\TextFormatter\Tests\Configurator\Dictionary [x] filterConfig('JS') filters the dictionary's content s9e\TextFormatter\Tests\Configurator\Encoder - [x] encode() tests + [x] encode() tests with data set #0 + [x] encode() tests with data set #1 + [x] encode() tests with data set #2 + [x] encode() tests with data set #3 + [x] encode() tests with data set #4 + [x] encode() tests with data set #5 + [x] encode() tests with data set #6 + [x] encode() tests with data set #7 + [x] encode() tests with data set #8 + [x] encode() tests with data set #9 + [x] encode() tests with data set #10 + [x] encode() tests with data set #11 + [x] encode() tests with data set #12 + [x] encode() tests with data set #13 + [x] encode() tests with data set #14 + [x] encode() tests with data set #15 + [x] encode() tests with data set #16 + [x] encode() tests with data set #17 + [x] encode() tests with data set #18 [x] encode() does not quote legal property names [x] encode() quotes illegal property names [x] encode() throws an exception on unsupported types @@ -1158,7 +1609,12 @@ s9e\TextFormatter\Tests\Configurator\JavaScript\Minifiers\Noop [x] getCacheDifferentiator() is constant s9e\TextFormatter\Tests\Configurator\StylesheetCompressor - [x] encode() tests + [x] encode() tests with data set #0 + [x] encode() tests with data set #1 + [x] encode() tests with data set #2 + [x] encode() tests with data set #3 + [x] encode() tests with data set #4 + [x] encode() tests with data set #5 s9e\TextFormatter\Tests\Configurator\Rendering [x] Default engine is XSLT @@ -1246,7 +1702,11 @@ s9e\TextFormatter\Tests\Configurator\RulesGenerators\TrimFirstLineInCodeBlocks s9e\TextFormatter\Tests\Configurator\RulesGenerator [x] Implements ArrayAccess [x] Implements Iterator - [x] Default rules + [x] Default rules with data set #0 + [x] Default rules with data set #1 + [x] Default rules with data set #2 + [x] Default rules with data set #3 + [x] Default rules with data set #4 s9e\TextFormatter\Tests\Configurator\AbstractNormalization [x] Nothing happens if the normalization doesn't override any method or set any query @@ -1260,99 +1720,300 @@ s9e\TextFormatter\Tests\Configurator\AbstractNormalization [x] lowercase() works s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\ConvertCurlyExpressionsInText - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\Custom [x] normalize() calls the user-defined callback with a DOMElement as argument s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\FixUnescapedCurlyBracesInHtmlAttributes - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\FoldArithmeticConstants [ ] Ignores locale - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 + [x] Works with data set #19 + [x] Works with data set #20 + [x] Works with data set #21 + [x] Works with data set #22 + [x] Works with data set #23 + [x] Works with data set #24 + [x] Works with data set #25 + [x] Works with data set #26 + [x] Works with data set #27 + [x] Works with data set #28 + [x] Works with data set #29 + [x] Works with data set #30 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\FoldConstantXPathExpressions - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 + [x] Works with data set #19 + [x] Works with data set #20 + [x] Works with data set #21 + [x] Works with data set #22 + [x] Works with data set #23 + [x] Works with data set #24 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineAttributes - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineCDATA - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineElements - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineInferredValues - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineTextElements - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\InlineXPathLiterals - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\MinifyInlineCSS - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\MinifyXPathExpressions [x] Throws an exception if a string isn't properly closed - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\MergeConsecutiveCopyOf - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\MergeIdenticalConditionalBranches - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\NormalizeAttributeNames - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\NormalizeElementNames - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\NormalizeUrls - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\OptimizeConditionalAttributes - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\OptimizeConditionalValueOf - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\OptimizeNestedConditionals - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\OptimizeChoose - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\OptimizeChooseText - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\PreserveSingleSpaces - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\RemoveComments - [x] Works + [x] Works with data set #0 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\RemoveInterElementWhitespace - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\RemoveLivePreviewAttributes - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\SetRelNoreferrerOnTargetedLinks - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\SortAttributesByName - [x] Works + [x] Works with data set #0 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\TransposeComments - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 s9e\TextFormatter\Tests\Configurator\TemplateNormalizations\UninlineAttributes - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 s9e\TextFormatter\Tests\Configurator\TemplateNormalizer [x] Implements ArrayAccess @@ -1360,7 +2021,29 @@ s9e\TextFormatter\Tests\Configurator\TemplateNormalizer [x] Only executes a normalization once per run if its "onlyOnce" property is true [x] normalizeTag() calls each of the tag's template's normalize() method with itself as argument [x] normalizeTag() does not call normalize() if the template was already normalized - [x] Default normalization rules + [x] Default normalization rules with data set #0 + [x] Default normalization rules with data set #1 + [x] Default normalization rules with data set #2 + [x] Default normalization rules with data set #3 + [x] Default normalization rules with data set #4 + [x] Default normalization rules with data set #5 + [x] Default normalization rules with data set #6 + [x] Default normalization rules with data set #7 + [x] Default normalization rules with data set #8 + [x] Default normalization rules with data set #9 + [x] Default normalization rules with data set #10 + [x] Default normalization rules with data set #11 + [x] Default normalization rules with data set #12 + [x] Default normalization rules with data set #13 + [x] Default normalization rules with data set #14 + [x] Default normalization rules with data set #15 + [x] Default normalization rules with data set #16 + [x] Default normalization rules with data set #17 + [x] Default normalization rules with data set #18 + [x] Default normalization rules with data set #19 + [x] Default normalization rules with data set #20 + [x] Default normalization rules with data set #21 + [x] Default normalization rules with data set #22 s9e\TextFormatter\Tests\Configurator\TemplateChecks\AbstractDynamicContentCheck [x] Stylesheet parameters are considered safe @@ -1442,6 +2125,7 @@ s9e\TextFormatter\Tests\Configurator\TemplateChecks\DisallowNodeByXPath s9e\TextFormatter\Tests\Configurator\TemplateChecks\DisallowObjectParamsWithGeneratedName [x] Allowed: [x] Disallowed: + [x] Disallowed: s9e\TextFormatter\Tests\Configurator\TemplateChecks\DisallowPHPTags [x] Disallowed: @@ -1518,6 +2202,7 @@ s9e\TextFormatter\Tests\Configurator\TemplateChecks\DisallowUnsafeDynamicURL [x] Allowed if #url: ... [x] Disallowed if unknown: ... [x] Allowed even if unknown: http://... + [x] Disallowed if unknown: ... [x] Disallowed if unfiltered: ... [x] Disallowed if unfiltered: ... [x] Disallowed: ... @@ -1553,6 +2238,10 @@ s9e\TextFormatter\Tests\Configurator\TemplateChecks\RestrictFlashNetworking [x] 'internal' disallows [x] 'internal' disallows [x] 'internal' disallows + [x] 'internal' disallows + [x] 'internal' allows + [x] 'internal' allows + [x] 'internal' disallows [x] 'none' disallows [x] 'none' disallows all [x] 'none',true allows @@ -1582,6 +2271,11 @@ s9e\TextFormatter\Tests\Configurator\TemplateChecks\RestrictFlashScriptAccess [x] 'sameDomain' allows [x] 'sameDomain' disallows [x] 'sameDomain' disallows + [x] 'sameDomain' disallows + [x] 'sameDomain' allows + [x] 'sameDomain' allows + [x] 'sameDomain' allows + [x] 'sameDomain' disallows [x] 'never' disallows [x] 'never' disallows always [x] 'never',true allows @@ -1734,8 +2428,17 @@ s9e\TextFormatter\Tests\Configurator\BundleGenerator [x] (before|after)(Parser|Render|Unparse) events are added to the bundle [x] The parserSetup callback is added to the source [x] The rendererSetup callback is added to the source - [x] exportCallback() - [x] exportObject() + [x] exportCallback() with data set #0 + [x] exportCallback() with data set #1 + [x] exportCallback() with data set #2 + [x] exportCallback() with data set #3 + [x] exportCallback() with data set #4 + [x] exportCallback() with data set #5 + [x] exportCallback() with data set #6 + [x] exportCallback() with data set #7 + [x] exportCallback() with data set #8 + [x] exportObject() with data set #0 + [x] exportObject() with data set #1 s9e\TextFormatter\Tests\Configurator\Bundles\Fatdown [x] Features @@ -1919,77 +2622,522 @@ s9e\TextFormatter\Tests\Parser\TagStack [x] addVerbatim() sets the tag's priority s9e\TextFormatter\Tests\Parser\OutputHandling - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 + [x] Works with data set #19 + [x] Works with data set #20 + [x] Works with data set #21 + [x] Works with data set #22 + [x] Works with data set #23 + [x] Works with data set #24 + [x] Works with data set #25 + [x] Works with data set #26 + [x] Works with data set #27 + [x] Works with data set #28 + [x] Works with data set #29 + [x] Works with data set #30 + [x] Works with data set #31 + [x] Works with data set #32 + [x] Works with data set #33 + [x] Works with data set #34 + [x] Works with data set #35 + [x] Works with data set #36 + [x] Works with data set #37 + [x] Works with data set #38 s9e\TextFormatter\Tests\Parser\TagProcessing - [x] Works - [x] JavaScript tests + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 + [x] Works with data set #19 + [x] Works with data set #20 + [x] Works with data set #21 + [x] Works with data set #22 + [x] Works with data set #23 + [x] Works with data set #24 + [x] Works with data set #25 + [x] Works with data set #26 + [x] Works with data set #27 + [x] Works with data set #28 + [x] Works with data set #29 + [x] Works with data set #30 + [x] Works with data set #31 + [x] Works with data set #32 + [x] Works with data set #33 + [x] Works with data set #34 + [x] Works with data set #35 + [x] Works with data set #36 + [x] Works with data set #37 + [x] Works with data set #38 + [x] Works with data set #39 + [x] Works with data set #40 + [x] Works with data set #41 + [x] Works with data set #42 + [x] Works with data set #43 + [x] Works with data set #44 + [x] Works with data set #45 + [x] Works with data set #46 + [x] Works with data set #47 + [x] Works with data set #48 + [x] Works with data set #49 + [x] Works with data set #50 + [x] Works with data set #51 + [x] Works with data set #52 + [x] Works with data set #53 + [x] Works with data set #54 + [x] Works with data set #55 + [x] Works with data set #56 + [x] Works with data set #57 + [x] Works with data set #58 + [x] Works with data set #59 + [x] Works with data set #60 + [x] Works with data set #61 + [x] Works with data set #62 + [x] Works with data set #63 + [x] Works with data set #64 + [x] Works with data set #65 + [x] Works with data set #66 + [x] Works with data set #67 + [x] Works with data set #68 + [x] Works with data set #69 + [x] Works with data set #70 + [x] Works with data set #71 + [x] Works with data set #72 + [x] Works with data set #73 + [x] Works with data set #74 + [x] Works with data set #75 + [x] Works with data set #76 + [x] Works with data set #77 + [x] Works with data set #78 + [x] Works with data set #79 + [x] Works with data set #80 + [x] Works with data set #81 + [x] Works with data set #82 + [x] Works with data set #83 + [x] Works with data set #84 + [x] Works with data set #85 + [x] Works with data set #86 + [x] Works with data set #87 + [x] JavaScript tests with data set #0 + [x] JavaScript tests with data set #1 s9e\TextFormatter\Tests\Parser\RulesHandling - [x] Works + [x] Works with data set #0 + [x] Works with data set #1 + [x] Works with data set #2 + [x] Works with data set #3 + [x] Works with data set #4 + [x] Works with data set #5 + [x] Works with data set #6 + [x] Works with data set #7 + [x] Works with data set #8 + [x] Works with data set #9 + [x] Works with data set #10 + [x] Works with data set #11 + [x] Works with data set #12 + [x] Works with data set #13 + [x] Works with data set #14 + [x] Works with data set #15 + [x] Works with data set #16 + [x] Works with data set #17 + [x] Works with data set #18 + [x] Works with data set #19 + [x] Works with data set #20 + [x] Works with data set #21 + [x] Works with data set #22 + [x] Works with data set #23 + [x] Works with data set #24 + [x] Works with data set #25 s9e\TextFormatter\Tests\Parser\AttributeFilters\AlnumFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 s9e\TextFormatter\Tests\Parser\AttributeFilters\ColorFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] Filter with data set #9 + [x] Filter with data set #10 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 + [x] J s filter with data set #9 + [x] J s filter with data set #10 s9e\TextFormatter\Tests\Parser\AttributeFilters\EmailFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] J s filter with data set #0 + [x] J s filter with data set #1 s9e\TextFormatter\Tests\Parser\AttributeFilters\FalseFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] J s filter with data set #0 + [x] J s filter with data set #1 s9e\TextFormatter\Tests\Parser\AttributeFilters\FontfamilyFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 s9e\TextFormatter\Tests\Parser\AttributeFilters\HashmapFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 s9e\TextFormatter\Tests\Parser\AttributeFilters\IdentifierFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 s9e\TextFormatter\Tests\Parser\AttributeFilters\MapFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 s9e\TextFormatter\Tests\Parser\AttributeFilters\NetworkFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] Filter with data set #9 + [x] Filter with data set #10 + [x] Filter with data set #11 + [x] Filter with data set #12 + [x] Filter with data set #13 + [x] Filter with data set #14 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 + [x] J s filter with data set #9 + [x] J s filter with data set #10 + [x] J s filter with data set #11 + [x] J s filter with data set #12 + [x] J s filter with data set #13 + [x] J s filter with data set #14 s9e\TextFormatter\Tests\Parser\AttributeFilters\NumericFilter - [x] Regression tests - [x] Filter - [x] J s filter + [x] Regression tests with data set #0 + [x] Regression tests with data set #1 + [x] Regression tests with data set #2 + [x] Regression tests with data set #3 + [x] Regression tests with data set #4 + [x] Regression tests with data set #5 + [x] Regression tests with data set #6 + [x] Regression tests with data set #7 + [x] Regression tests with data set #8 + [x] Regression tests with data set #9 + [x] Regression tests with data set #10 + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] Filter with data set #9 + [x] Filter with data set #10 + [x] Filter with data set #11 + [x] Filter with data set #12 + [x] Filter with data set #13 + [x] Filter with data set #14 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 + [x] J s filter with data set #9 + [x] J s filter with data set #10 + [x] J s filter with data set #11 + [x] J s filter with data set #12 + [x] J s filter with data set #13 + [x] J s filter with data set #14 s9e\TextFormatter\Tests\Parser\AttributeFilters\RangeFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 s9e\TextFormatter\Tests\Parser\AttributeFilters\RegexpFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] J s filter with data set #0 + [x] J s filter with data set #1 s9e\TextFormatter\Tests\Parser\AttributeFilters\SimpletextFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 s9e\TextFormatter\Tests\Parser\AttributeFilters\TimestampFilter - [x] Filter - [x] J s filter + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] Filter with data set #9 + [x] Filter with data set #10 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 + [x] J s filter with data set #9 + [x] J s filter with data set #10 s9e\TextFormatter\Tests\Parser\AttributeFilters\UrlFilter [x] filterUrl() can be called without a logger - [x] sanitizeUrl() tests - [x] Filter - [x] J s filter + [x] sanitizeUrl() tests with data set #0 + [x] sanitizeUrl() tests with data set #1 + [x] sanitizeUrl() tests with data set #2 + [x] sanitizeUrl() tests with data set #3 + [x] sanitizeUrl() tests with data set #4 + [x] sanitizeUrl() tests with data set #5 + [x] sanitizeUrl() tests with data set #6 + [x] sanitizeUrl() tests with data set #7 + [x] sanitizeUrl() tests with data set #8 + [x] sanitizeUrl() tests with data set #9 + [x] sanitizeUrl() tests with data set #10 + [x] sanitizeUrl() tests with data set #11 + [x] sanitizeUrl() tests with data set #12 + [x] sanitizeUrl() tests with data set #13 + [x] sanitizeUrl() tests with data set #14 + [x] sanitizeUrl() tests with data set #15 + [x] sanitizeUrl() tests with data set #16 + [x] Filter with data set #0 + [x] Filter with data set #1 + [x] Filter with data set #2 + [x] Filter with data set #3 + [x] Filter with data set #4 + [x] Filter with data set #5 + [x] Filter with data set #6 + [x] Filter with data set #7 + [x] Filter with data set #8 + [x] Filter with data set #9 + [x] Filter with data set #10 + [x] Filter with data set #11 + [x] Filter with data set #12 + [x] Filter with data set #13 + [x] Filter with data set #14 + [x] Filter with data set #15 + [x] Filter with data set #16 + [x] Filter with data set #17 + [x] Filter with data set #18 + [x] Filter with data set #19 + [x] Filter with data set #20 + [x] Filter with data set #21 + [x] Filter with data set #22 + [x] Filter with data set #23 + [x] Filter with data set #24 + [x] Filter with data set #25 + [x] Filter with data set #26 + [x] Filter with data set #27 + [x] Filter with data set #28 + [x] Filter with data set #29 + [x] Filter with data set #30 + [x] Filter with data set #31 + [x] Filter with data set #32 + [x] Filter with data set #33 + [x] Filter with data set #34 + [x] Filter with data set #35 + [x] Filter with data set #36 + [x] Filter with data set #37 + [x] Filter with data set #38 + [x] Filter with data set #39 + [x] Filter with data set #40 + [x] Filter with data set #41 + [x] Filter with data set #42 + [x] Filter with data set #43 + [x] Filter with data set #44 + [x] Filter with data set #45 + [x] Filter with data set #46 + [x] Filter with data set #47 + [x] Filter with data set #48 + [x] Filter with data set #49 + [x] Filter with data set #50 + [x] Filter with data set #51 + [x] Filter with data set #52 + [x] Filter with data set #53 + [x] Filter with data set #54 + [x] Filter with data set #55 + [x] Filter with data set #56 + [x] Filter with data set #57 + [x] J s filter with data set #0 + [x] J s filter with data set #1 + [x] J s filter with data set #2 + [x] J s filter with data set #3 + [x] J s filter with data set #4 + [x] J s filter with data set #5 + [x] J s filter with data set #6 + [x] J s filter with data set #7 + [x] J s filter with data set #8 + [x] J s filter with data set #9 + [x] J s filter with data set #10 + [x] J s filter with data set #11 + [x] J s filter with data set #12 + [x] J s filter with data set #13 + [x] J s filter with data set #14 + [x] J s filter with data set #15 + [x] J s filter with data set #16 + [x] J s filter with data set #17 + [x] J s filter with data set #18 + [x] J s filter with data set #19 + [x] J s filter with data set #20 + [x] J s filter with data set #21 + [x] J s filter with data set #22 + [x] J s filter with data set #23 + [x] J s filter with data set #24 + [x] J s filter with data set #25 + [x] J s filter with data set #26 + [x] J s filter with data set #27 + [x] J s filter with data set #28 + [x] J s filter with data set #29 + [x] J s filter with data set #30 + [x] J s filter with data set #31 + [x] J s filter with data set #32 + [x] J s filter with data set #33 + [x] J s filter with data set #34 + [x] J s filter with data set #35 + [x] J s filter with data set #36 + [x] J s filter with data set #37 + [x] J s filter with data set #38 + [x] J s filter with data set #39 + [x] J s filter with data set #40 + [x] J s filter with data set #41 + [x] J s filter with data set #42 + [x] J s filter with data set #43 + [x] J s filter with data set #44 + [x] J s filter with data set #45 + [x] J s filter with data set #46 + [x] J s filter with data set #47 + [x] J s filter with data set #48 + [x] J s filter with data set #49 + [x] J s filter with data set #50 + [x] J s filter with data set #51 + [x] J s filter with data set #52 + [x] J s filter with data set #53 + [x] J s filter with data set #54 + [x] J s filter with data set #55 + [x] J s filter with data set #56 + [x] J s filter with data set #57 s9e\TextFormatter\Tests\Parser [x] Parser is serializable @@ -2061,9 +3209,19 @@ s9e\TextFormatter\Tests\Plugins\Autoemail\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\Autoemail\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 s9e\TextFormatter\Tests\Plugins\Autoimage\Configurator [x] Automatically creates an "IMG" tag with a "src" attribute with a "#url" filter @@ -2077,9 +3235,27 @@ s9e\TextFormatter\Tests\Plugins\Autoimage\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\Autoimage\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 s9e\TextFormatter\Tests\Plugins\Autolink\Configurator [x] Automatically creates an "URL" tag with an "url" attribute with a "#url" filter @@ -2101,9 +3277,72 @@ s9e\TextFormatter\Tests\Plugins\Autolink\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\Autolink\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 s9e\TextFormatter\Tests\Plugins\Autovideo\Configurator [x] Automatically creates a "VIDEO" tag with a "src" attribute with a "#url" filter @@ -2117,9 +3356,27 @@ s9e\TextFormatter\Tests\Plugins\Autovideo\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\Autovideo\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 s9e\TextFormatter\Tests\Plugins\BBCodes\Configurator\BBCode [x] An array of options can be passed to the constructor @@ -2151,7 +3408,100 @@ s9e\TextFormatter\Tests\Plugins\BBCodes\Configurator\BBCodeMonkey [x] $bbcodeMonkey->allowedFilters is a publicly-accessible list of callbacks [x] create() creates and return a BBCode, its name and its tag [x] create() accepts an instance of UnsafeTemplate as second argument - [x] create() tests + [x] create() tests with data set #0 + [x] create() tests with data set #1 + [x] create() tests with data set #2 + [x] create() tests with data set #3 + [x] create() tests with data set #4 + [x] create() tests with data set #5 + [x] create() tests with data set #6 + [x] create() tests with data set #7 + [x] create() tests with data set #8 + [x] create() tests with data set #9 + [x] create() tests with data set #10 + [x] create() tests with data set #11 + [x] create() tests with data set #12 + [x] create() tests with data set #13 + [x] create() tests with data set #14 + [x] create() tests with data set #15 + [x] create() tests with data set #16 + [x] create() tests with data set #17 + [x] create() tests with data set #18 + [x] create() tests with data set #19 + [x] create() tests with data set #20 + [x] create() tests with data set #21 + [x] create() tests with data set #22 + [x] create() tests with data set #23 + [x] create() tests with data set #24 + [x] create() tests with data set #25 + [x] create() tests with data set #26 + [x] create() tests with data set #27 + [x] create() tests with data set #28 + [x] create() tests with data set #29 + [x] create() tests with data set #30 + [x] create() tests with data set #31 + [x] create() tests with data set #32 + [x] create() tests with data set #33 + [x] create() tests with data set #34 + [x] create() tests with data set #35 + [x] create() tests with data set #36 + [x] create() tests with data set #37 + [x] create() tests with data set #38 + [x] create() tests with data set #39 + [x] create() tests with data set #40 + [x] create() tests with data set #41 + [x] create() tests with data set #42 + [x] create() tests with data set #43 + [x] create() tests with data set #44 + [x] create() tests with data set #45 + [x] create() tests with data set #46 + [x] create() tests with data set #47 + [x] create() tests with data set #48 + [x] create() tests with data set #49 + [x] create() tests with data set #50 + [x] create() tests with data set #51 + [x] create() tests with data set #52 + [x] create() tests with data set #53 + [x] create() tests with data set #54 + [x] create() tests with data set #55 + [x] create() tests with data set #56 + [x] create() tests with data set #57 + [x] create() tests with data set #58 + [x] create() tests with data set #59 + [x] create() tests with data set #60 + [x] create() tests with data set #61 + [x] create() tests with data set #62 + [x] create() tests with data set #63 + [x] create() tests with data set #64 + [x] create() tests with data set #65 + [x] create() tests with data set #66 + [x] create() tests with data set #67 + [x] create() tests with data set #68 + [x] create() tests with data set #69 + [x] create() tests with data set #70 + [x] create() tests with data set #71 + [x] create() tests with data set #72 + [x] create() tests with data set #73 + [x] create() tests with data set #74 + [x] create() tests with data set #75 + [x] create() tests with data set #76 + [x] create() tests with data set #77 + [x] create() tests with data set #78 + [x] create() tests with data set #79 + [x] create() tests with data set #80 + [x] create() tests with data set #81 + [x] create() tests with data set #82 + [x] create() tests with data set #83 + [x] create() tests with data set #84 + [x] create() tests with data set #85 + [x] create() tests with data set #86 + [x] create() tests with data set #87 + [x] create() tests with data set #88 + [x] create() tests with data set #89 + [x] create() tests with data set #90 + [x] create() tests with data set #91 + [x] create() tests with data set #92 + [x] create() tests with data set #93 s9e\TextFormatter\Tests\Plugins\BBCodes\Configurator\Repository [x] __construct() accepts the path to an XML file as argument @@ -2198,13 +3548,350 @@ s9e\TextFormatter\Tests\Plugins\BBCodes\Configurator [x] asConfig() returns BBCodes in a Dictionary s9e\TextFormatter\Tests\Plugins\BBCodes\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests with data set #43 + [x] Parsing tests with data set #44 + [x] Parsing tests with data set #45 + [x] Parsing tests with data set #46 + [x] Parsing tests with data set #47 + [x] Parsing tests with data set #48 + [x] Parsing tests with data set #49 + [x] Parsing tests with data set #50 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing tests (JavaScript) with data set #43 + [x] Parsing tests (JavaScript) with data set #44 + [x] Parsing tests (JavaScript) with data set #45 + [x] Parsing tests (JavaScript) with data set #46 + [x] Parsing tests (JavaScript) with data set #47 + [x] Parsing tests (JavaScript) with data set #48 + [x] Parsing tests (JavaScript) with data set #49 + [x] Parsing tests (JavaScript) with data set #50 s9e\TextFormatter\Tests\Plugins\BBCodes\BBCodes - [x] Examples from BBCodeMonkey.md - [x] BBCodes from repository.xml render nicely - [x] BBCodes from repository.xml are parsed identically by the JavaScript parser + [x] Examples from BBCodeMonkey.md with data set #0 + [x] Examples from BBCodeMonkey.md with data set #1 + [x] Examples from BBCodeMonkey.md with data set #2 + [x] Examples from BBCodeMonkey.md with data set #3 + [x] Examples from BBCodeMonkey.md with data set #4 + [x] Examples from BBCodeMonkey.md with data set #5 + [x] BBCodes from repository.xml render nicely with data set #0 + [x] BBCodes from repository.xml render nicely with data set #1 + [x] BBCodes from repository.xml render nicely with data set #2 + [x] BBCodes from repository.xml render nicely with data set #3 + [x] BBCodes from repository.xml render nicely with data set #4 + [x] BBCodes from repository.xml render nicely with data set #5 + [x] BBCodes from repository.xml render nicely with data set #6 + [x] BBCodes from repository.xml render nicely with data set #7 + [x] BBCodes from repository.xml render nicely with data set #8 + [x] BBCodes from repository.xml render nicely with data set #9 + [x] BBCodes from repository.xml render nicely with data set #10 + [x] BBCodes from repository.xml render nicely with data set #11 + [x] BBCodes from repository.xml render nicely with data set #12 + [x] BBCodes from repository.xml render nicely with data set #13 + [x] BBCodes from repository.xml render nicely with data set #14 + [x] BBCodes from repository.xml render nicely with data set #15 + [x] BBCodes from repository.xml render nicely with data set #16 + [x] BBCodes from repository.xml render nicely with data set #17 + [x] BBCodes from repository.xml render nicely with data set #18 + [x] BBCodes from repository.xml render nicely with data set #19 + [x] BBCodes from repository.xml render nicely with data set #20 + [x] BBCodes from repository.xml render nicely with data set #21 + [x] BBCodes from repository.xml render nicely with data set #22 + [x] BBCodes from repository.xml render nicely with data set #23 + [x] BBCodes from repository.xml render nicely with data set #24 + [x] BBCodes from repository.xml render nicely with data set #25 + [x] BBCodes from repository.xml render nicely with data set #26 + [x] BBCodes from repository.xml render nicely with data set #27 + [x] BBCodes from repository.xml render nicely with data set #28 + [x] BBCodes from repository.xml render nicely with data set #29 + [x] BBCodes from repository.xml render nicely with data set #30 + [x] BBCodes from repository.xml render nicely with data set #31 + [x] BBCodes from repository.xml render nicely with data set #32 + [x] BBCodes from repository.xml render nicely with data set #33 + [x] BBCodes from repository.xml render nicely with data set #34 + [x] BBCodes from repository.xml render nicely with data set #35 + [x] BBCodes from repository.xml render nicely with data set #36 + [x] BBCodes from repository.xml render nicely with data set #37 + [x] BBCodes from repository.xml render nicely with data set #38 + [x] BBCodes from repository.xml render nicely with data set #39 + [x] BBCodes from repository.xml render nicely with data set #40 + [x] BBCodes from repository.xml render nicely with data set #41 + [x] BBCodes from repository.xml render nicely with data set #42 + [x] BBCodes from repository.xml render nicely with data set #43 + [x] BBCodes from repository.xml render nicely with data set #44 + [x] BBCodes from repository.xml render nicely with data set #45 + [x] BBCodes from repository.xml render nicely with data set #46 + [x] BBCodes from repository.xml render nicely with data set #47 + [x] BBCodes from repository.xml render nicely with data set #48 + [x] BBCodes from repository.xml render nicely with data set #49 + [x] BBCodes from repository.xml render nicely with data set #50 + [x] BBCodes from repository.xml render nicely with data set #51 + [x] BBCodes from repository.xml render nicely with data set #52 + [x] BBCodes from repository.xml render nicely with data set #53 + [x] BBCodes from repository.xml render nicely with data set #54 + [x] BBCodes from repository.xml render nicely with data set #55 + [x] BBCodes from repository.xml render nicely with data set #56 + [x] BBCodes from repository.xml render nicely with data set #57 + [x] BBCodes from repository.xml render nicely with data set #58 + [x] BBCodes from repository.xml render nicely with data set #59 + [x] BBCodes from repository.xml render nicely with data set #60 + [x] BBCodes from repository.xml render nicely with data set #61 + [x] BBCodes from repository.xml render nicely with data set #62 + [x] BBCodes from repository.xml render nicely with data set #63 + [x] BBCodes from repository.xml render nicely with data set #64 + [x] BBCodes from repository.xml render nicely with data set #65 + [x] BBCodes from repository.xml render nicely with data set #66 + [x] BBCodes from repository.xml render nicely with data set #67 + [x] BBCodes from repository.xml render nicely with data set #68 + [x] BBCodes from repository.xml render nicely with data set #69 + [x] BBCodes from repository.xml render nicely with data set #70 + [x] BBCodes from repository.xml render nicely with data set #71 + [x] BBCodes from repository.xml render nicely with data set #72 + [x] BBCodes from repository.xml render nicely with data set #73 + [x] BBCodes from repository.xml render nicely with data set #74 + [x] BBCodes from repository.xml render nicely with data set #75 + [x] BBCodes from repository.xml render nicely with data set #76 + [x] BBCodes from repository.xml render nicely with data set #77 + [x] BBCodes from repository.xml render nicely with data set #78 + [x] BBCodes from repository.xml render nicely with data set #79 + [x] BBCodes from repository.xml render nicely with data set #80 + [x] BBCodes from repository.xml render nicely with data set #81 + [x] BBCodes from repository.xml render nicely with data set #82 + [x] BBCodes from repository.xml render nicely with data set #83 + [x] BBCodes from repository.xml render nicely with data set #84 + [x] BBCodes from repository.xml render nicely with data set #85 + [x] BBCodes from repository.xml render nicely with data set #86 + [x] BBCodes from repository.xml render nicely with data set #87 + [x] BBCodes from repository.xml render nicely with data set #88 + [x] BBCodes from repository.xml render nicely with data set #89 + [x] BBCodes from repository.xml render nicely with data set #90 + [x] BBCodes from repository.xml render nicely with data set #91 + [x] BBCodes from repository.xml render nicely with data set #92 + [x] BBCodes from repository.xml render nicely with data set #93 + [x] BBCodes from repository.xml render nicely with data set #94 + [x] BBCodes from repository.xml render nicely with data set #95 + [x] BBCodes from repository.xml render nicely with data set #96 + [x] BBCodes from repository.xml render nicely with data set #97 + [x] BBCodes from repository.xml render nicely with data set #98 + [x] BBCodes from repository.xml render nicely with data set #99 + [x] BBCodes from repository.xml render nicely with data set #100 + [x] BBCodes from repository.xml render nicely with data set #101 + [x] BBCodes from repository.xml render nicely with data set #102 + [x] BBCodes from repository.xml render nicely with data set #103 + [x] BBCodes from repository.xml render nicely with data set #104 + [x] BBCodes from repository.xml render nicely with data set #105 + [x] BBCodes from repository.xml render nicely with data set #106 + [x] BBCodes from repository.xml render nicely with data set #107 + [x] BBCodes from repository.xml render nicely with data set #108 + [x] BBCodes from repository.xml render nicely with data set #109 + [x] BBCodes from repository.xml render nicely with data set #110 + [x] BBCodes from repository.xml render nicely with data set #111 + [x] BBCodes from repository.xml render nicely with data set #112 + [x] BBCodes from repository.xml render nicely with data set #113 + [x] BBCodes from repository.xml render nicely with data set #114 + [x] BBCodes from repository.xml render nicely with data set #115 + [x] BBCodes from repository.xml render nicely with data set #116 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #0 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #1 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #2 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #3 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #4 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #5 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #6 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #7 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #8 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #9 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #10 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #11 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #12 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #13 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #14 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #15 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #16 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #17 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #18 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #19 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #20 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #21 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #22 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #23 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #24 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #25 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #26 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #27 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #28 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #29 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #30 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #31 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #32 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #33 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #34 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #35 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #36 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #37 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #38 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #39 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #40 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #41 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #42 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #43 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #44 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #45 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #46 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #47 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #48 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #49 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #50 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #51 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #52 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #53 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #54 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #55 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #56 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #57 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #58 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #59 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #60 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #61 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #62 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #63 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #64 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #65 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #66 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #67 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #68 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #69 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #70 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #71 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #72 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #73 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #74 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #75 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #76 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #77 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #78 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #79 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #80 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #81 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #82 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #83 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #84 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #85 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #86 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #87 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #88 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #89 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #90 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #91 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #92 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #93 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #94 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #95 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #96 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #97 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #98 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #99 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #100 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #101 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #102 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #103 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #104 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #105 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #106 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #107 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #108 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #109 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #110 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #111 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #112 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #113 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #114 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #115 + [x] BBCodes from repository.xml are parsed identically by the JavaScript parser with data set #116 s9e\TextFormatter\Tests\Plugins\Censor\Configurator [x] Automatically creates a "CENSOR" tag @@ -2258,9 +3945,48 @@ s9e\TextFormatter\Tests\Plugins\Censor\Helper [x] isCensored('word') returns FALSE if '*or*' is censored and 'word' is allowed s9e\TextFormatter\Tests\Plugins\Censor\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 s9e\TextFormatter\Tests\Plugins\Emoji\Configurator [x] Automatically creates an "EMOJI" tag @@ -2282,9 +4008,57 @@ s9e\TextFormatter\Tests\Plugins\Emoji\Configurator [x] getJSHints() returns ['EMOJI_HAS_CUSTOM_QUICKMATCH' => true] if an alias quick match exists s9e\TextFormatter\Tests\Plugins\Emoji\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 s9e\TextFormatter\Tests\Plugins\Emoticons\Configurator [x] Automatically creates an "E" tag @@ -2320,9 +4094,21 @@ s9e\TextFormatter\Tests\Plugins\Emoticons\Configurator\EmoticonCollection [x] Has a customized exception message on uninitialized access s9e\TextFormatter\Tests\Plugins\Emoticons\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 s9e\TextFormatter\Tests\Plugins\Escaper\Configurator [x] By default only escapes the characters !#()*+-.:@[\]^_`{|} @@ -2336,9 +4122,18 @@ s9e\TextFormatter\Tests\Plugins\Escaper\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\Escaper\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 s9e\TextFormatter\Tests\Plugins\FancyPants\Configurator [x] Automatically creates a "FP" tag @@ -2353,9 +4148,130 @@ s9e\TextFormatter\Tests\Plugins\FancyPants\Configurator [x] The config array does not contain a disableQuotes value if the quote pass is re-enabled s9e\TextFormatter\Tests\Plugins\FancyPants\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests with data set #43 + [x] Parsing tests with data set #44 + [x] Parsing tests with data set #45 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing tests (JavaScript) with data set #43 + [x] Parsing tests (JavaScript) with data set #44 + [x] Parsing tests (JavaScript) with data set #45 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 + [x] Parsing+rendering tests with data set #5 + [x] Parsing+rendering tests with data set #6 + [x] Parsing+rendering tests with data set #7 + [x] Parsing+rendering tests with data set #8 + [x] Parsing+rendering tests with data set #9 + [x] Parsing+rendering tests with data set #10 + [x] Parsing+rendering tests with data set #11 + [x] Parsing+rendering tests with data set #12 + [x] Parsing+rendering tests with data set #13 + [x] Parsing+rendering tests with data set #14 + [x] Parsing+rendering tests with data set #15 + [x] Parsing+rendering tests with data set #16 + [x] Parsing+rendering tests with data set #17 + [x] Parsing+rendering tests with data set #18 + [x] Parsing+rendering tests with data set #19 + [x] Parsing+rendering tests with data set #20 + [x] Parsing+rendering tests with data set #21 + [x] Parsing+rendering tests with data set #22 + [x] Parsing+rendering tests with data set #23 + [x] Parsing+rendering tests with data set #24 + [x] Parsing+rendering tests with data set #25 + [x] Parsing+rendering tests with data set #26 + [x] Parsing+rendering tests with data set #27 + [x] Parsing+rendering tests with data set #28 + [x] Parsing+rendering tests with data set #29 + [x] Parsing+rendering tests with data set #30 + [x] Parsing+rendering tests with data set #31 s9e\TextFormatter\Tests\Plugins\HTMLComments\Configurator [x] Automatically creates an "HC" tag @@ -2368,9 +4284,34 @@ s9e\TextFormatter\Tests\Plugins\HTMLComments\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\HTMLComments\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 + [x] Parsing+rendering tests with data set #5 + [x] Parsing+rendering tests with data set #6 + [x] Parsing+rendering tests with data set #7 s9e\TextFormatter\Tests\Plugins\HTMLElements\Configurator [x] aliasElement('A', 'url') creates an alias for HTML element "a" to tag "URL" @@ -2404,9 +4345,43 @@ s9e\TextFormatter\Tests\Plugins\HTMLElements\Configurator [x] getJSHints() returns ['HTMLELEMENTS_HAS_ALIASES' => 1] if any alias is set s9e\TextFormatter\Tests\Plugins\HTMLElements\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 s9e\TextFormatter\Tests\Plugins\HTMLEntities\Configurator [x] Automatically creates an "HE" tag @@ -2419,9 +4394,28 @@ s9e\TextFormatter\Tests\Plugins\HTMLEntities\Configurator [x] getTag() returns the tag that is associated with this plugin s9e\TextFormatter\Tests\Plugins\HTMLEntities\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 + [x] Parsing+rendering tests with data set #5 s9e\TextFormatter\Tests\Plugins\Keywords\Configurator [x] Automatically creates a "KEYWORD" tag @@ -2439,8 +4433,18 @@ s9e\TextFormatter\Tests\Plugins\Keywords\Configurator [x] asConfig() does not return an entry for onlyFirst if it's false s9e\TextFormatter\Tests\Plugins\Keywords\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 s9e\TextFormatter\Tests\Plugins\Litedown\Configurator [x] Turns on automatic paragraph management @@ -2453,53 +4457,600 @@ s9e\TextFormatter\Tests\Plugins\Litedown\Configurator [x] getJSParser() returns a parser s9e\TextFormatter\Tests\Plugins\Litedown\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) + [x] Parsing tests with data set #0 + [x] Parsing tests (JavaScript) with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Blocks - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests with data set #43 + [x] Parsing tests with data set #44 + [x] Parsing tests with data set #45 + [x] Parsing tests with data set #46 + [x] Parsing tests with data set #47 + [x] Parsing tests with data set #48 + [x] Parsing tests with data set #49 + [x] Parsing tests with data set #50 + [x] Parsing tests with data set #51 + [x] Parsing tests with data set #52 + [x] Parsing tests with data set #53 + [x] Parsing tests with data set #54 + [x] Parsing tests with data set #55 + [x] Parsing tests with data set #56 + [x] Parsing tests with data set #57 + [x] Parsing tests with data set #58 + [x] Parsing tests with data set #59 + [x] Parsing tests with data set #60 + [x] Parsing tests with data set #61 + [x] Parsing tests with data set #62 + [x] Parsing tests with data set #63 + [x] Parsing tests with data set #64 + [x] Parsing tests with data set #65 + [x] Parsing tests with data set #66 + [x] Parsing tests with data set #67 + [x] Parsing tests with data set #68 + [x] Parsing tests with data set #69 + [x] Parsing tests with data set #70 + [x] Parsing tests with data set #71 + [x] Parsing tests with data set #72 + [x] Parsing tests with data set #73 + [x] Parsing tests with data set #74 + [x] Parsing tests with data set #75 + [x] Parsing tests with data set #76 + [x] Parsing tests with data set #77 + [x] Parsing tests with data set #78 + [x] Parsing tests with data set #79 + [x] Parsing tests with data set #80 + [x] Parsing tests with data set #81 + [x] Parsing tests with data set #82 + [x] Parsing tests with data set #83 + [x] Parsing tests with data set #84 + [x] Parsing tests with data set #85 + [x] Parsing tests with data set #86 + [x] Parsing tests with data set #87 + [x] Parsing tests with data set #88 + [x] Parsing tests with data set #89 + [x] Parsing tests with data set #90 + [x] Parsing tests with data set #91 + [x] Parsing tests with data set #92 + [x] Parsing tests with data set #93 + [x] Parsing tests with data set #94 + [x] Parsing tests with data set #95 + [x] Parsing tests with data set #96 + [x] Parsing tests with data set #97 + [x] Parsing tests with data set #98 + [x] Parsing tests with data set #99 + [x] Parsing tests with data set #100 + [x] Parsing tests with data set #101 + [x] Parsing tests with data set #102 + [x] Parsing tests with data set #103 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing tests (JavaScript) with data set #43 + [x] Parsing tests (JavaScript) with data set #44 + [x] Parsing tests (JavaScript) with data set #45 + [x] Parsing tests (JavaScript) with data set #46 + [x] Parsing tests (JavaScript) with data set #47 + [x] Parsing tests (JavaScript) with data set #48 + [x] Parsing tests (JavaScript) with data set #49 + [x] Parsing tests (JavaScript) with data set #50 + [x] Parsing tests (JavaScript) with data set #51 + [x] Parsing tests (JavaScript) with data set #52 + [x] Parsing tests (JavaScript) with data set #53 + [x] Parsing tests (JavaScript) with data set #54 + [x] Parsing tests (JavaScript) with data set #55 + [x] Parsing tests (JavaScript) with data set #56 + [x] Parsing tests (JavaScript) with data set #57 + [x] Parsing tests (JavaScript) with data set #58 + [x] Parsing tests (JavaScript) with data set #59 + [x] Parsing tests (JavaScript) with data set #60 + [x] Parsing tests (JavaScript) with data set #61 + [x] Parsing tests (JavaScript) with data set #62 + [x] Parsing tests (JavaScript) with data set #63 + [x] Parsing tests (JavaScript) with data set #64 + [x] Parsing tests (JavaScript) with data set #65 + [x] Parsing tests (JavaScript) with data set #66 + [x] Parsing tests (JavaScript) with data set #67 + [x] Parsing tests (JavaScript) with data set #68 + [x] Parsing tests (JavaScript) with data set #69 + [x] Parsing tests (JavaScript) with data set #70 + [x] Parsing tests (JavaScript) with data set #71 + [x] Parsing tests (JavaScript) with data set #72 + [x] Parsing tests (JavaScript) with data set #73 + [x] Parsing tests (JavaScript) with data set #74 + [x] Parsing tests (JavaScript) with data set #75 + [x] Parsing tests (JavaScript) with data set #76 + [x] Parsing tests (JavaScript) with data set #77 + [x] Parsing tests (JavaScript) with data set #78 + [x] Parsing tests (JavaScript) with data set #79 + [x] Parsing tests (JavaScript) with data set #80 + [x] Parsing tests (JavaScript) with data set #81 + [x] Parsing tests (JavaScript) with data set #82 + [x] Parsing tests (JavaScript) with data set #83 + [x] Parsing tests (JavaScript) with data set #84 + [x] Parsing tests (JavaScript) with data set #85 + [x] Parsing tests (JavaScript) with data set #86 + [x] Parsing tests (JavaScript) with data set #87 + [x] Parsing tests (JavaScript) with data set #88 + [x] Parsing tests (JavaScript) with data set #89 + [x] Parsing tests (JavaScript) with data set #90 + [x] Parsing tests (JavaScript) with data set #91 + [x] Parsing tests (JavaScript) with data set #92 + [x] Parsing tests (JavaScript) with data set #93 + [x] Parsing tests (JavaScript) with data set #94 + [x] Parsing tests (JavaScript) with data set #95 + [x] Parsing tests (JavaScript) with data set #96 + [x] Parsing tests (JavaScript) with data set #97 + [x] Parsing tests (JavaScript) with data set #98 + [x] Parsing tests (JavaScript) with data set #99 + [x] Parsing tests (JavaScript) with data set #100 + [x] Parsing tests (JavaScript) with data set #101 + [x] Parsing tests (JavaScript) with data set #102 + [x] Parsing tests (JavaScript) with data set #103 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 + [x] Parsing+rendering tests with data set #5 + [x] Parsing+rendering tests with data set #6 + [x] Parsing+rendering tests with data set #7 + [x] Parsing+rendering tests with data set #8 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Emphasis - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\ForcedLineBreaks - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Images - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\InlineCode - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Links - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests with data set #43 + [x] Parsing tests with data set #44 + [x] Parsing tests with data set #45 + [x] Parsing tests with data set #46 + [x] Parsing tests with data set #47 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing tests (JavaScript) with data set #43 + [x] Parsing tests (JavaScript) with data set #44 + [x] Parsing tests (JavaScript) with data set #45 + [x] Parsing tests (JavaScript) with data set #46 + [x] Parsing tests (JavaScript) with data set #47 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Strikethrough - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Subscript - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\Litedown\Parser\Passes\Superscript - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing+rendering tests with data set #0 s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator\Collections\CachedDefinitionCollection [x] isset('youtube') returns TRUE @@ -2508,6 +5059,7 @@ s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator\Collections\CachedDefini [x] Is iterable [x] get('youtube') returns a configuration [x] get('unknown') returns FALSE + [x] get('*invalid*') throws an exception [x] Site definitions contain the site's name [x] Site definitions contain the site's tags @@ -2553,10 +5105,19 @@ s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator\TemplateGenerators\Choos [x] getTemplate() with two when / one otherwise s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator\TemplateGenerators\Flash - [x] getTemplate() tests + [x] getTemplate() tests with data set #0 + [x] getTemplate() tests with data set #1 s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator\TemplateGenerators\Iframe - [x] getTemplate() tests + [x] getTemplate() tests with data set #0 + [x] getTemplate() tests with data set #1 + [x] getTemplate() tests with data set #2 + [x] getTemplate() tests with data set #3 + [x] getTemplate() tests with data set #4 + [x] getTemplate() tests with data set #5 + [x] getTemplate() tests with data set #6 + [x] getTemplate() tests with data set #7 + [x] getTemplate() tests with data set #8 s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator [x] MediaEmbed.hosts and MediaEmbed.sites are registered on instantiation @@ -2587,13 +5148,694 @@ s9e\TextFormatter\Tests\Plugins\MediaEmbed\Configurator s9e\TextFormatter\Tests\Plugins\MediaEmbed\Parser [x] The MEDIA tag can be effectively disabled - [x] Abstract tests (not tied to bundled sites) - [x] Scraping tests - [x] Scraping+rendering tests - [x] Legacy rendering tests - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Abstract tests (not tied to bundled sites) with data set #0 + [x] Abstract tests (not tied to bundled sites) with data set #1 + [x] Abstract tests (not tied to bundled sites) with data set #2 + [x] Abstract tests (not tied to bundled sites) with data set #3 + [x] Abstract tests (not tied to bundled sites) with data set #4 + [x] Abstract tests (not tied to bundled sites) with data set #5 + [x] Abstract tests (not tied to bundled sites) with data set #6 + [x] Abstract tests (not tied to bundled sites) with data set #7 + [x] Abstract tests (not tied to bundled sites) with data set #8 + [x] Abstract tests (not tied to bundled sites) with data set #9 + [x] Abstract tests (not tied to bundled sites) with data set #10 + [x] Abstract tests (not tied to bundled sites) with data set #11 + [x] Abstract tests (not tied to bundled sites) with data set #12 + [x] Abstract tests (not tied to bundled sites) with data set #13 + [x] Abstract tests (not tied to bundled sites) with data set #14 + [x] Abstract tests (not tied to bundled sites) with data set #15 + [x] Scraping tests with data set #0 + [x] Scraping tests with data set #1 + [x] Scraping tests with data set #2 + [x] Scraping tests with data set #3 + [x] Scraping tests with data set #4 + [x] Scraping tests with data set #5 + [x] Scraping tests with data set #6 + [x] Scraping tests with data set #7 + [x] Scraping tests with data set #8 + [x] Scraping tests with data set #9 + [x] Scraping tests with data set #10 + [x] Scraping tests with data set #11 + [x] Scraping tests with data set #12 + [x] Scraping tests with data set #13 + [x] Scraping tests with data set #14 + [x] Scraping tests with data set #15 + [x] Scraping tests with data set #16 + [x] Scraping tests with data set #17 + [x] Scraping tests with data set #18 + [x] Scraping tests with data set #19 + [x] Scraping tests with data set #20 + [x] Scraping tests with data set #21 + [x] Scraping tests with data set #22 + [x] Scraping tests with data set #23 + [x] Scraping tests with data set #24 + [x] Scraping tests with data set #25 + [x] Scraping tests with data set #26 + [x] Scraping tests with data set #27 + [x] Scraping tests with data set #28 + [x] Scraping tests with data set #29 + [x] Scraping tests with data set #30 + [x] Scraping tests with data set #31 + [x] Scraping tests with data set #32 + [x] Scraping tests with data set #33 + [x] Scraping tests with data set #34 + [x] Scraping tests with data set #35 + [x] Scraping tests with data set #36 + [x] Scraping tests with data set #37 + [x] Scraping tests with data set #38 + [x] Scraping tests with data set #39 + [x] Scraping tests with data set #40 + [x] Scraping tests with data set #41 + [x] Scraping tests with data set #42 + [x] Scraping tests with data set #43 + [x] Scraping tests with data set #44 + [x] Scraping tests with data set #45 + [x] Scraping tests with data set #46 + [x] Scraping tests with data set #47 + [x] Scraping tests with data set #48 + [x] Scraping tests with data set #49 + [x] Scraping tests with data set #50 + [x] Scraping tests with data set #51 + [x] Scraping tests with data set #52 + [x] Scraping tests with data set #53 + [x] Scraping+rendering tests with data set #0 + [x] Scraping+rendering tests with data set #1 + [x] Scraping+rendering tests with data set #2 + [x] Scraping+rendering tests with data set #3 + [x] Scraping+rendering tests with data set #4 + [x] Scraping+rendering tests with data set #5 + [x] Scraping+rendering tests with data set #6 + [x] Scraping+rendering tests with data set #7 + [x] Scraping+rendering tests with data set #8 + [x] Scraping+rendering tests with data set #9 + [x] Scraping+rendering tests with data set #10 + [x] Legacy rendering tests with data set #0 + [x] Legacy rendering tests with data set #1 + [x] Legacy rendering tests with data set #2 + [x] Legacy rendering tests with data set #3 + [x] Legacy rendering tests with data set #4 + [x] Legacy rendering tests with data set #5 + [x] Legacy rendering tests with data set #6 + [x] Legacy rendering tests with data set #7 + [x] Legacy rendering tests with data set #8 + [x] Legacy rendering tests with data set #9 + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests with data set #22 + [x] Parsing tests with data set #23 + [x] Parsing tests with data set #24 + [x] Parsing tests with data set #25 + [x] Parsing tests with data set #26 + [x] Parsing tests with data set #27 + [x] Parsing tests with data set #28 + [x] Parsing tests with data set #29 + [x] Parsing tests with data set #30 + [x] Parsing tests with data set #31 + [x] Parsing tests with data set #32 + [x] Parsing tests with data set #33 + [x] Parsing tests with data set #34 + [x] Parsing tests with data set #35 + [x] Parsing tests with data set #36 + [x] Parsing tests with data set #37 + [x] Parsing tests with data set #38 + [x] Parsing tests with data set #39 + [x] Parsing tests with data set #40 + [x] Parsing tests with data set #41 + [x] Parsing tests with data set #42 + [x] Parsing tests with data set #43 + [x] Parsing tests with data set #44 + [x] Parsing tests with data set #45 + [x] Parsing tests with data set #46 + [x] Parsing tests with data set #47 + [x] Parsing tests with data set #48 + [x] Parsing tests with data set #49 + [x] Parsing tests with data set #50 + [x] Parsing tests with data set #51 + [x] Parsing tests with data set #52 + [x] Parsing tests with data set #53 + [x] Parsing tests with data set #54 + [x] Parsing tests with data set #55 + [x] Parsing tests with data set #56 + [x] Parsing tests with data set #57 + [x] Parsing tests with data set #58 + [x] Parsing tests with data set #59 + [x] Parsing tests with data set #60 + [x] Parsing tests with data set #61 + [x] Parsing tests with data set #62 + [x] Parsing tests with data set #63 + [x] Parsing tests with data set #64 + [x] Parsing tests with data set #65 + [x] Parsing tests with data set #66 + [x] Parsing tests with data set #67 + [x] Parsing tests with data set #68 + [x] Parsing tests with data set #69 + [x] Parsing tests with data set #70 + [x] Parsing tests with data set #71 + [x] Parsing tests with data set #72 + [x] Parsing tests with data set #73 + [x] Parsing tests with data set #74 + [x] Parsing tests with data set #75 + [x] Parsing tests with data set #76 + [x] Parsing tests with data set #77 + [x] Parsing tests with data set #78 + [x] Parsing tests with data set #79 + [x] Parsing tests with data set #80 + [x] Parsing tests with data set #81 + [x] Parsing tests with data set #82 + [x] Parsing tests with data set #83 + [x] Parsing tests with data set #84 + [x] Parsing tests with data set #85 + [x] Parsing tests with data set #86 + [x] Parsing tests with data set #87 + [x] Parsing tests with data set #88 + [x] Parsing tests with data set #89 + [x] Parsing tests with data set #90 + [x] Parsing tests with data set #91 + [x] Parsing tests with data set #92 + [x] Parsing tests with data set #93 + [x] Parsing tests with data set #94 + [x] Parsing tests with data set #95 + [x] Parsing tests with data set #96 + [x] Parsing tests with data set #97 + [x] Parsing tests with data set #98 + [x] Parsing tests with data set #99 + [x] Parsing tests with data set #100 + [x] Parsing tests with data set #101 + [x] Parsing tests with data set #102 + [x] Parsing tests with data set #103 + [x] Parsing tests with data set #104 + [x] Parsing tests with data set #105 + [x] Parsing tests with data set #106 + [x] Parsing tests with data set #107 + [x] Parsing tests with data set #108 + [x] Parsing tests with data set #109 + [x] Parsing tests with data set #110 + [x] Parsing tests with data set #111 + [x] Parsing tests with data set #112 + [x] Parsing tests with data set #113 + [x] Parsing tests with data set #114 + [x] Parsing tests with data set #115 + [x] Parsing tests with data set #116 + [x] Parsing tests with data set #117 + [x] Parsing tests with data set #118 + [x] Parsing tests with data set #119 + [x] Parsing tests with data set #120 + [x] Parsing tests with data set #121 + [x] Parsing tests with data set #122 + [x] Parsing tests with data set #123 + [x] Parsing tests with data set #124 + [x] Parsing tests with data set #125 + [x] Parsing tests with data set #126 + [x] Parsing tests with data set #127 + [x] Parsing tests with data set #128 + [x] Parsing tests with data set #129 + [x] Parsing tests with data set #130 + [x] Parsing tests with data set #131 + [x] Parsing tests with data set #132 + [x] Parsing tests with data set #133 + [x] Parsing tests with data set #134 + [x] Parsing tests with data set #135 + [x] Parsing tests with data set #136 + [x] Parsing tests with data set #137 + [x] Parsing tests with data set #138 + [x] Parsing tests with data set #139 + [x] Parsing tests with data set #140 + [x] Parsing tests with data set #141 + [x] Parsing tests with data set #142 + [x] Parsing tests with data set #143 + [x] Parsing tests with data set #144 + [x] Parsing tests with data set #145 + [x] Parsing tests with data set #146 + [x] Parsing tests with data set #147 + [x] Parsing tests with data set #148 + [x] Parsing tests with data set #149 + [x] Parsing tests with data set #150 + [x] Parsing tests with data set #151 + [x] Parsing tests with data set #152 + [x] Parsing tests with data set #153 + [x] Parsing tests with data set #154 + [x] Parsing tests with data set #155 + [x] Parsing tests with data set #156 + [x] Parsing tests with data set #157 + [x] Parsing tests with data set #158 + [x] Parsing tests with data set #159 + [x] Parsing tests with data set #160 + [x] Parsing tests with data set #161 + [x] Parsing tests with data set #162 + [x] Parsing tests with data set #163 + [x] Parsing tests with data set #164 + [x] Parsing tests with data set #165 + [x] Parsing tests with data set #166 + [x] Parsing tests with data set #167 + [x] Parsing tests with data set #168 + [x] Parsing tests with data set #169 + [x] Parsing tests with data set #170 + [x] Parsing tests with data set #171 + [x] Parsing tests with data set #172 + [x] Parsing tests with data set #173 + [x] Parsing tests with data set #174 + [x] Parsing tests with data set #175 + [x] Parsing tests with data set #176 + [x] Parsing tests with data set #177 + [x] Parsing tests with data set #178 + [x] Parsing tests with data set #179 + [x] Parsing tests with data set #180 + [x] Parsing tests with data set #181 + [x] Parsing tests with data set #182 + [x] Parsing tests with data set #183 + [x] Parsing tests with data set #184 + [x] Parsing tests with data set #185 + [x] Parsing tests with data set #186 + [x] Parsing tests with data set #187 + [x] Parsing tests with data set #188 + [x] Parsing tests with data set #189 + [x] Parsing tests with data set #190 + [x] Parsing tests with data set #191 + [x] Parsing tests with data set #192 + [x] Parsing tests with data set #193 + [x] Parsing tests with data set #194 + [x] Parsing tests with data set #195 + [x] Parsing tests with data set #196 + [x] Parsing tests with data set #197 + [x] Parsing tests with data set #198 + [x] Parsing tests with data set #199 + [x] Parsing tests with data set #200 + [x] Parsing tests with data set #201 + [x] Parsing tests with data set #202 + [x] Parsing tests with data set #203 + [x] Parsing tests with data set #204 + [x] Parsing tests with data set #205 + [x] Parsing tests with data set #206 + [x] Parsing tests with data set #207 + [x] Parsing tests with data set #208 + [x] Parsing tests with data set #209 + [x] Parsing tests with data set #210 + [x] Parsing tests with data set #211 + [x] Parsing tests with data set #212 + [x] Parsing tests with data set #213 + [x] Parsing tests with data set #214 + [x] Parsing tests with data set #215 + [x] Parsing tests with data set #216 + [x] Parsing tests with data set #217 + [x] Parsing tests with data set #218 + [x] Parsing tests with data set #219 + [x] Parsing tests with data set #220 + [x] Parsing tests with data set #221 + [x] Parsing tests with data set #222 + [x] Parsing tests with data set #223 + [x] Parsing tests with data set #224 + [x] Parsing tests with data set #225 + [x] Parsing tests with data set #226 + [x] Parsing tests with data set #227 + [x] Parsing tests with data set #228 + [x] Parsing tests with data set #229 + [x] Parsing tests with data set #230 + [x] Parsing tests with data set #231 + [x] Parsing tests with data set #232 + [x] Parsing tests with data set #233 + [x] Parsing tests with data set #234 + [x] Parsing tests with data set #235 + [x] Parsing tests with data set #236 + [x] Parsing tests with data set #237 + [x] Parsing tests with data set #238 + [x] Parsing tests with data set #239 + [x] Parsing tests with data set #240 + [x] Parsing tests with data set #241 + [x] Parsing tests with data set #242 + [x] Parsing tests with data set #243 + [x] Parsing tests with data set #244 + [x] Parsing tests with data set #245 + [x] Parsing tests with data set #246 + [x] Parsing tests with data set #247 + [x] Parsing tests with data set #248 + [x] Parsing tests with data set #249 + [x] Parsing tests with data set #250 + [x] Parsing tests with data set #251 + [x] Parsing tests with data set #252 + [x] Parsing tests with data set #253 + [x] Parsing tests with data set #254 + [x] Parsing tests with data set #255 + [x] Parsing tests with data set #256 + [x] Parsing tests with data set #257 + [x] Parsing tests with data set #258 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing tests (JavaScript) with data set #22 + [x] Parsing tests (JavaScript) with data set #23 + [x] Parsing tests (JavaScript) with data set #24 + [x] Parsing tests (JavaScript) with data set #25 + [x] Parsing tests (JavaScript) with data set #26 + [x] Parsing tests (JavaScript) with data set #27 + [x] Parsing tests (JavaScript) with data set #28 + [x] Parsing tests (JavaScript) with data set #29 + [x] Parsing tests (JavaScript) with data set #30 + [x] Parsing tests (JavaScript) with data set #31 + [x] Parsing tests (JavaScript) with data set #32 + [x] Parsing tests (JavaScript) with data set #33 + [x] Parsing tests (JavaScript) with data set #34 + [x] Parsing tests (JavaScript) with data set #35 + [x] Parsing tests (JavaScript) with data set #36 + [x] Parsing tests (JavaScript) with data set #37 + [x] Parsing tests (JavaScript) with data set #38 + [x] Parsing tests (JavaScript) with data set #39 + [x] Parsing tests (JavaScript) with data set #40 + [x] Parsing tests (JavaScript) with data set #41 + [x] Parsing tests (JavaScript) with data set #42 + [x] Parsing tests (JavaScript) with data set #43 + [x] Parsing tests (JavaScript) with data set #44 + [x] Parsing tests (JavaScript) with data set #45 + [x] Parsing tests (JavaScript) with data set #46 + [x] Parsing tests (JavaScript) with data set #47 + [x] Parsing tests (JavaScript) with data set #48 + [x] Parsing tests (JavaScript) with data set #49 + [x] Parsing tests (JavaScript) with data set #50 + [x] Parsing tests (JavaScript) with data set #51 + [x] Parsing tests (JavaScript) with data set #52 + [x] Parsing tests (JavaScript) with data set #53 + [x] Parsing tests (JavaScript) with data set #54 + [x] Parsing tests (JavaScript) with data set #55 + [x] Parsing tests (JavaScript) with data set #56 + [x] Parsing tests (JavaScript) with data set #57 + [x] Parsing tests (JavaScript) with data set #58 + [x] Parsing tests (JavaScript) with data set #59 + [x] Parsing tests (JavaScript) with data set #60 + [x] Parsing tests (JavaScript) with data set #61 + [x] Parsing tests (JavaScript) with data set #62 + [x] Parsing tests (JavaScript) with data set #63 + [x] Parsing tests (JavaScript) with data set #64 + [x] Parsing tests (JavaScript) with data set #65 + [x] Parsing tests (JavaScript) with data set #66 + [x] Parsing tests (JavaScript) with data set #67 + [x] Parsing tests (JavaScript) with data set #68 + [x] Parsing tests (JavaScript) with data set #69 + [x] Parsing tests (JavaScript) with data set #70 + [x] Parsing tests (JavaScript) with data set #71 + [x] Parsing tests (JavaScript) with data set #72 + [x] Parsing tests (JavaScript) with data set #73 + [x] Parsing tests (JavaScript) with data set #74 + [x] Parsing tests (JavaScript) with data set #75 + [x] Parsing tests (JavaScript) with data set #76 + [x] Parsing tests (JavaScript) with data set #77 + [x] Parsing tests (JavaScript) with data set #78 + [x] Parsing tests (JavaScript) with data set #79 + [x] Parsing tests (JavaScript) with data set #80 + [x] Parsing tests (JavaScript) with data set #81 + [x] Parsing tests (JavaScript) with data set #82 + [x] Parsing tests (JavaScript) with data set #83 + [x] Parsing tests (JavaScript) with data set #84 + [x] Parsing tests (JavaScript) with data set #85 + [x] Parsing tests (JavaScript) with data set #86 + [x] Parsing tests (JavaScript) with data set #87 + [x] Parsing tests (JavaScript) with data set #88 + [x] Parsing tests (JavaScript) with data set #89 + [x] Parsing tests (JavaScript) with data set #90 + [x] Parsing tests (JavaScript) with data set #91 + [x] Parsing tests (JavaScript) with data set #92 + [x] Parsing tests (JavaScript) with data set #93 + [x] Parsing tests (JavaScript) with data set #94 + [x] Parsing tests (JavaScript) with data set #95 + [x] Parsing tests (JavaScript) with data set #96 + [x] Parsing tests (JavaScript) with data set #97 + [x] Parsing tests (JavaScript) with data set #98 + [x] Parsing tests (JavaScript) with data set #99 + [x] Parsing tests (JavaScript) with data set #100 + [x] Parsing tests (JavaScript) with data set #101 + [x] Parsing tests (JavaScript) with data set #102 + [x] Parsing tests (JavaScript) with data set #103 + [x] Parsing tests (JavaScript) with data set #104 + [x] Parsing tests (JavaScript) with data set #105 + [x] Parsing tests (JavaScript) with data set #106 + [x] Parsing tests (JavaScript) with data set #107 + [x] Parsing tests (JavaScript) with data set #108 + [x] Parsing tests (JavaScript) with data set #109 + [x] Parsing tests (JavaScript) with data set #110 + [x] Parsing tests (JavaScript) with data set #111 + [x] Parsing tests (JavaScript) with data set #112 + [x] Parsing tests (JavaScript) with data set #113 + [x] Parsing tests (JavaScript) with data set #114 + [x] Parsing tests (JavaScript) with data set #115 + [x] Parsing tests (JavaScript) with data set #116 + [x] Parsing tests (JavaScript) with data set #117 + [x] Parsing tests (JavaScript) with data set #118 + [x] Parsing tests (JavaScript) with data set #119 + [x] Parsing tests (JavaScript) with data set #120 + [x] Parsing tests (JavaScript) with data set #121 + [x] Parsing tests (JavaScript) with data set #122 + [x] Parsing tests (JavaScript) with data set #123 + [x] Parsing tests (JavaScript) with data set #124 + [x] Parsing tests (JavaScript) with data set #125 + [x] Parsing tests (JavaScript) with data set #126 + [x] Parsing tests (JavaScript) with data set #127 + [x] Parsing tests (JavaScript) with data set #128 + [x] Parsing tests (JavaScript) with data set #129 + [x] Parsing tests (JavaScript) with data set #130 + [x] Parsing tests (JavaScript) with data set #131 + [x] Parsing tests (JavaScript) with data set #132 + [x] Parsing tests (JavaScript) with data set #133 + [x] Parsing tests (JavaScript) with data set #134 + [x] Parsing tests (JavaScript) with data set #135 + [x] Parsing tests (JavaScript) with data set #136 + [x] Parsing tests (JavaScript) with data set #137 + [x] Parsing tests (JavaScript) with data set #138 + [x] Parsing tests (JavaScript) with data set #139 + [x] Parsing tests (JavaScript) with data set #140 + [x] Parsing tests (JavaScript) with data set #141 + [x] Parsing tests (JavaScript) with data set #142 + [x] Parsing tests (JavaScript) with data set #143 + [x] Parsing tests (JavaScript) with data set #144 + [x] Parsing tests (JavaScript) with data set #145 + [x] Parsing tests (JavaScript) with data set #146 + [x] Parsing tests (JavaScript) with data set #147 + [x] Parsing tests (JavaScript) with data set #148 + [x] Parsing tests (JavaScript) with data set #149 + [x] Parsing tests (JavaScript) with data set #150 + [x] Parsing tests (JavaScript) with data set #151 + [x] Parsing tests (JavaScript) with data set #152 + [x] Parsing tests (JavaScript) with data set #153 + [x] Parsing tests (JavaScript) with data set #154 + [x] Parsing tests (JavaScript) with data set #155 + [x] Parsing tests (JavaScript) with data set #156 + [x] Parsing tests (JavaScript) with data set #157 + [x] Parsing tests (JavaScript) with data set #158 + [x] Parsing tests (JavaScript) with data set #159 + [x] Parsing tests (JavaScript) with data set #160 + [x] Parsing tests (JavaScript) with data set #161 + [x] Parsing tests (JavaScript) with data set #162 + [x] Parsing tests (JavaScript) with data set #163 + [x] Parsing tests (JavaScript) with data set #164 + [x] Parsing tests (JavaScript) with data set #165 + [x] Parsing tests (JavaScript) with data set #166 + [x] Parsing tests (JavaScript) with data set #167 + [x] Parsing tests (JavaScript) with data set #168 + [x] Parsing tests (JavaScript) with data set #169 + [x] Parsing tests (JavaScript) with data set #170 + [x] Parsing tests (JavaScript) with data set #171 + [x] Parsing tests (JavaScript) with data set #172 + [x] Parsing tests (JavaScript) with data set #173 + [x] Parsing tests (JavaScript) with data set #174 + [x] Parsing tests (JavaScript) with data set #175 + [x] Parsing tests (JavaScript) with data set #176 + [x] Parsing tests (JavaScript) with data set #177 + [x] Parsing tests (JavaScript) with data set #178 + [x] Parsing tests (JavaScript) with data set #179 + [x] Parsing tests (JavaScript) with data set #180 + [x] Parsing tests (JavaScript) with data set #181 + [x] Parsing tests (JavaScript) with data set #182 + [x] Parsing tests (JavaScript) with data set #183 + [x] Parsing tests (JavaScript) with data set #184 + [x] Parsing tests (JavaScript) with data set #185 + [x] Parsing tests (JavaScript) with data set #186 + [x] Parsing tests (JavaScript) with data set #187 + [x] Parsing tests (JavaScript) with data set #188 + [x] Parsing tests (JavaScript) with data set #189 + [x] Parsing tests (JavaScript) with data set #190 + [x] Parsing tests (JavaScript) with data set #191 + [x] Parsing tests (JavaScript) with data set #192 + [x] Parsing tests (JavaScript) with data set #193 + [x] Parsing tests (JavaScript) with data set #194 + [x] Parsing tests (JavaScript) with data set #195 + [x] Parsing tests (JavaScript) with data set #196 + [x] Parsing tests (JavaScript) with data set #197 + [x] Parsing tests (JavaScript) with data set #198 + [x] Parsing tests (JavaScript) with data set #199 + [x] Parsing tests (JavaScript) with data set #200 + [x] Parsing tests (JavaScript) with data set #201 + [x] Parsing tests (JavaScript) with data set #202 + [x] Parsing tests (JavaScript) with data set #203 + [x] Parsing tests (JavaScript) with data set #204 + [x] Parsing tests (JavaScript) with data set #205 + [x] Parsing tests (JavaScript) with data set #206 + [x] Parsing tests (JavaScript) with data set #207 + [x] Parsing tests (JavaScript) with data set #208 + [x] Parsing tests (JavaScript) with data set #209 + [x] Parsing tests (JavaScript) with data set #210 + [x] Parsing tests (JavaScript) with data set #211 + [x] Parsing tests (JavaScript) with data set #212 + [x] Parsing tests (JavaScript) with data set #213 + [x] Parsing tests (JavaScript) with data set #214 + [x] Parsing tests (JavaScript) with data set #215 + [x] Parsing tests (JavaScript) with data set #216 + [x] Parsing tests (JavaScript) with data set #217 + [x] Parsing tests (JavaScript) with data set #218 + [x] Parsing tests (JavaScript) with data set #219 + [x] Parsing tests (JavaScript) with data set #220 + [x] Parsing tests (JavaScript) with data set #221 + [x] Parsing tests (JavaScript) with data set #222 + [x] Parsing tests (JavaScript) with data set #223 + [x] Parsing tests (JavaScript) with data set #224 + [x] Parsing tests (JavaScript) with data set #225 + [x] Parsing tests (JavaScript) with data set #226 + [x] Parsing tests (JavaScript) with data set #227 + [x] Parsing tests (JavaScript) with data set #228 + [x] Parsing tests (JavaScript) with data set #229 + [x] Parsing tests (JavaScript) with data set #230 + [x] Parsing tests (JavaScript) with data set #231 + [x] Parsing tests (JavaScript) with data set #232 + [x] Parsing tests (JavaScript) with data set #233 + [x] Parsing tests (JavaScript) with data set #234 + [x] Parsing tests (JavaScript) with data set #235 + [x] Parsing tests (JavaScript) with data set #236 + [x] Parsing tests (JavaScript) with data set #237 + [x] Parsing tests (JavaScript) with data set #238 + [x] Parsing tests (JavaScript) with data set #239 + [x] Parsing tests (JavaScript) with data set #240 + [x] Parsing tests (JavaScript) with data set #241 + [x] Parsing tests (JavaScript) with data set #242 + [x] Parsing tests (JavaScript) with data set #243 + [x] Parsing tests (JavaScript) with data set #244 + [x] Parsing tests (JavaScript) with data set #245 + [x] Parsing tests (JavaScript) with data set #246 + [x] Parsing tests (JavaScript) with data set #247 + [x] Parsing tests (JavaScript) with data set #248 + [x] Parsing tests (JavaScript) with data set #249 + [x] Parsing tests (JavaScript) with data set #250 + [x] Parsing tests (JavaScript) with data set #251 + [x] Parsing tests (JavaScript) with data set #252 + [x] Parsing tests (JavaScript) with data set #253 + [x] Parsing tests (JavaScript) with data set #254 + [x] Parsing tests (JavaScript) with data set #255 + [x] Parsing tests (JavaScript) with data set #256 + [x] Parsing tests (JavaScript) with data set #257 + [x] Parsing tests (JavaScript) with data set #258 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 + [x] Parsing+rendering tests with data set #4 + [x] Parsing+rendering tests with data set #5 + [x] Parsing+rendering tests with data set #6 + [x] Parsing+rendering tests with data set #7 + [x] Parsing+rendering tests with data set #8 + [x] Parsing+rendering tests with data set #9 + [x] Parsing+rendering tests with data set #10 + [x] Parsing+rendering tests with data set #11 + [x] Parsing+rendering tests with data set #12 + [x] Parsing+rendering tests with data set #13 + [x] Parsing+rendering tests with data set #14 + [x] Parsing+rendering tests with data set #15 + [x] Parsing+rendering tests with data set #16 + [x] Parsing+rendering tests with data set #17 + [x] Parsing+rendering tests with data set #18 + [x] Parsing+rendering tests with data set #19 + [x] Parsing+rendering tests with data set #20 + [x] Parsing+rendering tests with data set #21 + [x] Parsing+rendering tests with data set #22 + [x] Parsing+rendering tests with data set #23 + [x] Parsing+rendering tests with data set #24 + [x] Parsing+rendering tests with data set #25 + [x] Parsing+rendering tests with data set #26 + [x] Parsing+rendering tests with data set #27 + [x] Parsing+rendering tests with data set #28 + [x] Parsing+rendering tests with data set #29 + [x] Parsing+rendering tests with data set #30 + [x] Parsing+rendering tests with data set #31 + [x] Parsing+rendering tests with data set #32 + [x] Parsing+rendering tests with data set #33 + [x] Parsing+rendering tests with data set #34 + [x] Parsing+rendering tests with data set #35 + [x] Parsing+rendering tests with data set #36 + [x] Parsing+rendering tests with data set #37 + [x] Parsing+rendering tests with data set #38 + [x] Parsing+rendering tests with data set #39 + [x] Parsing+rendering tests with data set #40 + [x] Parsing+rendering tests with data set #41 + [x] Parsing+rendering tests with data set #42 + [x] Parsing+rendering tests with data set #43 + [x] Parsing+rendering tests with data set #44 + [x] Parsing+rendering tests with data set #45 + [x] Parsing+rendering tests with data set #46 + [x] Parsing+rendering tests with data set #47 + [x] Parsing+rendering tests with data set #48 + [x] Parsing+rendering tests with data set #49 + [x] Parsing+rendering tests with data set #50 + [x] Parsing+rendering tests with data set #51 + [x] Parsing+rendering tests with data set #52 + [x] Parsing+rendering tests with data set #53 + [x] Parsing+rendering tests with data set #54 + [x] Parsing+rendering tests with data set #55 + [x] Parsing+rendering tests with data set #56 + [x] Parsing+rendering tests with data set #57 + [x] Parsing+rendering tests with data set #58 + [x] Parsing+rendering tests with data set #59 + [x] Parsing+rendering tests with data set #60 + [x] Parsing+rendering tests with data set #61 + [x] Parsing+rendering tests with data set #62 + [x] Parsing+rendering tests with data set #63 + [x] Parsing+rendering tests with data set #64 + [x] Parsing+rendering tests with data set #65 + [x] Parsing+rendering tests with data set #66 + [x] Parsing+rendering tests with data set #67 + [x] Parsing+rendering tests with data set #68 + [x] Parsing+rendering tests with data set #69 + [x] Parsing+rendering tests with data set #70 + [x] Parsing+rendering tests with data set #71 + [x] Parsing+rendering tests with data set #72 + [x] Parsing+rendering tests with data set #73 + [x] Parsing+rendering tests with data set #74 + [x] Parsing+rendering tests with data set #75 + [x] Parsing+rendering tests with data set #76 + [x] Parsing+rendering tests with data set #77 + [x] Parsing+rendering tests with data set #78 s9e\TextFormatter\Tests\Plugins\PipeTables\Configurator [x] Creates TABLE, TBODY, TD, TH, THEAD and TR tags @@ -2604,9 +5846,54 @@ s9e\TextFormatter\Tests\Plugins\PipeTables\Configurator [x] asConfig() sets overwriteMarkdown to true if the Litedown plugin is loaded s9e\TextFormatter\Tests\Plugins\PipeTables\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests with data set #11 + [x] Parsing tests with data set #12 + [x] Parsing tests with data set #13 + [x] Parsing tests with data set #14 + [x] Parsing tests with data set #15 + [x] Parsing tests with data set #16 + [x] Parsing tests with data set #17 + [x] Parsing tests with data set #18 + [x] Parsing tests with data set #19 + [x] Parsing tests with data set #20 + [x] Parsing tests with data set #21 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing tests (JavaScript) with data set #11 + [x] Parsing tests (JavaScript) with data set #12 + [x] Parsing tests (JavaScript) with data set #13 + [x] Parsing tests (JavaScript) with data set #14 + [x] Parsing tests (JavaScript) with data set #15 + [x] Parsing tests (JavaScript) with data set #16 + [x] Parsing tests (JavaScript) with data set #17 + [x] Parsing tests (JavaScript) with data set #18 + [x] Parsing tests (JavaScript) with data set #19 + [x] Parsing tests (JavaScript) with data set #20 + [x] Parsing tests (JavaScript) with data set #21 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 s9e\TextFormatter\Tests\Plugins\Preg\Configurator [x] replace() generates a tag name automatically @@ -2632,6 +5919,7 @@ s9e\TextFormatter\Tests\Plugins\Preg\Configurator [x] replace() interprets \$1 in the template as a literal $1 [x] replace() replaces $0 with the whole match [x] replace() interprets a (.*?) capture used in template's text as a passthrough + [x] replace() interprets a (.*?) capture used in template's text as a passthrough [x] replace() doesn't set a passthrough if there are multiple candidates [x] A capture used as a URL can also be used as a passthrough, in which case it will used the filtered attribute when used in an attribute, and the normal passthrough when used in text [x] Captures from non-existent subpattern are removed from the template @@ -2646,37 +5934,292 @@ s9e\TextFormatter\Tests\Plugins\Preg\Configurator [x] getJSHints() returns ['PREG_HAS_PASSTHROUGH' => true] if any replacement is passthrough s9e\TextFormatter\Tests\Plugins\Preg\Parser - [x] Parsing tests - [x] Parsing tests (JavaScript) - [x] Parsing+rendering tests + [x] Parsing tests with data set #0 + [x] Parsing tests with data set #1 + [x] Parsing tests with data set #2 + [x] Parsing tests with data set #3 + [x] Parsing tests with data set #4 + [x] Parsing tests with data set #5 + [x] Parsing tests with data set #6 + [x] Parsing tests with data set #7 + [x] Parsing tests with data set #8 + [x] Parsing tests with data set #9 + [x] Parsing tests with data set #10 + [x] Parsing tests (JavaScript) with data set #0 + [x] Parsing tests (JavaScript) with data set #1 + [x] Parsing tests (JavaScript) with data set #2 + [x] Parsing tests (JavaScript) with data set #3 + [x] Parsing tests (JavaScript) with data set #4 + [x] Parsing tests (JavaScript) with data set #5 + [x] Parsing tests (JavaScript) with data set #6 + [x] Parsing tests (JavaScript) with data set #7 + [x] Parsing tests (JavaScript) with data set #8 + [x] Parsing tests (JavaScript) with data set #9 + [x] Parsing tests (JavaScript) with data set #10 + [x] Parsing+rendering tests with data set #0 + [x] Parsing+rendering tests with data set #1 + [x] Parsing+rendering tests with data set #2 + [x] Parsing+rendering tests with data set #3 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\XPathConvertor - [x] convertXPath() basic tests - [x] convertXPath() advanced tests (PCRE >= 8.13) - [x] convertXPath() advanced tests (PCRE < 8.13) - [x] convertXPath() mbstring tests - [x] convertCondition() basic tests - [x] convertCondition() advanced tests (PCRE >= 8.13) - [x] convertCondition() advanced tests (PCRE < 8.13) + [x] convertXPath() basic tests with data set #0 + [x] convertXPath() basic tests with data set #1 + [x] convertXPath() basic tests with data set #2 + [x] convertXPath() basic tests with data set #3 + [x] convertXPath() basic tests with data set #4 + [x] convertXPath() basic tests with data set #5 + [x] convertXPath() basic tests with data set #6 + [x] convertXPath() basic tests with data set #7 + [x] convertXPath() basic tests with data set #8 + [x] convertXPath() basic tests with data set #9 + [x] convertXPath() basic tests with data set #10 + [x] convertXPath() basic tests with data set #11 + [x] convertXPath() basic tests with data set #12 + [x] convertXPath() basic tests with data set #13 + [x] convertXPath() basic tests with data set #14 + [x] convertXPath() basic tests with data set #15 + [x] convertXPath() basic tests with data set #16 + [x] convertXPath() basic tests with data set #17 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #0 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #1 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #2 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #3 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #4 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #5 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #6 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #7 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #8 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #9 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #10 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #11 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #12 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #13 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #14 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #15 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #16 + [x] convertXPath() advanced tests (PCRE >= 8.13) with data set #17 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #0 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #1 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #2 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #3 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #4 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #5 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #6 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #7 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #8 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #9 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #10 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #11 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #12 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #13 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #14 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #15 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #16 + [x] convertXPath() advanced tests (PCRE < 8.13) with data set #17 + [x] convertXPath() mbstring tests with data set #0 + [x] convertXPath() mbstring tests with data set #1 + [x] convertXPath() mbstring tests with data set #2 + [x] convertXPath() mbstring tests with data set #3 + [x] convertXPath() mbstring tests with data set #4 + [x] convertXPath() mbstring tests with data set #5 + [x] convertXPath() mbstring tests with data set #6 + [x] convertCondition() basic tests with data set #0 + [x] convertCondition() basic tests with data set #1 + [x] convertCondition() basic tests with data set #2 + [x] convertCondition() basic tests with data set #3 + [x] convertCondition() basic tests with data set #4 + [x] convertCondition() basic tests with data set #5 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #0 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #1 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #2 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #3 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #4 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #5 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #6 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #7 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #8 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #9 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #10 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #11 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #12 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #13 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #14 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #15 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #16 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #17 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #18 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #19 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #20 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #21 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #22 + [x] convertCondition() advanced tests (PCRE >= 8.13) with data set #23 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #0 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #1 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #2 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #3 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #4 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #5 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #6 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #7 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #8 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #9 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #10 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #11 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #12 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #13 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #14 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #15 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #16 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #17 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #18 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #19 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #20 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #21 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #22 + [x] convertCondition() advanced tests (PCRE < 8.13) with data set #23 [x] Covering test for convertXPath() s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\BranchOutputOptimizer - [x] optimize() tests + [x] optimize() tests with data set #0 + [x] optimize() tests with data set #1 + [x] optimize() tests with data set #2 + [x] optimize() tests with data set #3 + [x] optimize() tests with data set #4 + [x] optimize() tests with data set #5 + [x] optimize() tests with data set #6 + [x] optimize() tests with data set #7 + [x] optimize() tests with data set #8 + [x] optimize() tests with data set #9 + [x] optimize() tests with data set #10 + [x] optimize() tests with data set #11 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\ControlStructuresOptimizer - [x] optimize() tests + [x] optimize() tests with data set #0 + [x] optimize() tests with data set #1 + [x] optimize() tests with data set #2 + [x] optimize() tests with data set #3 + [x] optimize() tests with data set #4 + [x] optimize() tests with data set #5 + [x] optimize() tests with data set #6 + [x] optimize() tests with data set #7 + [x] optimize() tests with data set #8 + [x] optimize() tests with data set #9 + [x] optimize() tests with data set #10 + [x] optimize() tests with data set #11 + [x] optimize() tests with data set #12 + [x] optimize() tests with data set #13 + [x] optimize() tests with data set #14 + [x] optimize() tests with data set #15 + [x] optimize() tests with data set #16 + [x] optimize() tests with data set #17 + [x] optimize() tests with data set #18 + [x] optimize() tests with data set #19 + [x] optimize() tests with data set #20 + [x] optimize() tests with data set #21 + [x] optimize() tests with data set #22 + [x] optimize() tests with data set #23 + [x] optimize() tests with data set #24 + [x] optimize() tests with data set #25 + [x] optimize() tests with data set #26 + [x] optimize() tests with data set #27 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\Optimizer - [x] optimize() tests + [x] optimize() tests with data set #0 + [x] optimize() tests with data set #1 + [x] optimize() tests with data set #2 + [x] optimize() tests with data set #3 + [x] optimize() tests with data set #4 + [x] optimize() tests with data set #5 + [x] optimize() tests with data set #6 + [x] optimize() tests with data set #7 + [x] optimize() tests with data set #8 + [x] optimize() tests with data set #9 + [x] optimize() tests with data set #10 + [x] optimize() tests with data set #11 + [x] optimize() tests with data set #12 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\Quick [x] The quick renderer can handle unknown tags [x] The quick renderer can handle unknown self-closing tags [x] The quick renderer can handle comments [x] The quick renderer can handle processing instructions - [x] Rendering - [x] Rendering strategy - [x] Source + [x] Rendering with data set #0 + [x] Rendering with data set #1 + [x] Rendering with data set #2 + [x] Rendering with data set #3 + [x] Rendering with data set #4 + [x] Rendering with data set #5 + [x] Rendering with data set #6 + [x] Rendering with data set #7 + [x] Rendering with data set #8 + [x] Rendering with data set #9 + [x] Rendering with data set #10 + [x] Rendering with data set #11 + [x] Rendering with data set #12 + [x] Rendering with data set #13 + [x] Rendering with data set #14 + [x] Rendering with data set #15 + [x] Rendering with data set #16 + [x] Rendering with data set #17 + [x] Rendering with data set #18 + [x] Rendering with data set #19 + [x] Rendering with data set #20 + [x] Rendering with data set #21 + [x] Rendering with data set #22 + [x] Rendering with data set #23 + [x] Rendering strategy with data set #0 + [x] Rendering strategy with data set #1 + [x] Rendering strategy with data set #2 + [x] Rendering strategy with data set #3 + [x] Rendering strategy with data set #4 + [x] Rendering strategy with data set #5 + [x] Rendering strategy with data set #6 + [x] Rendering strategy with data set #7 + [x] Rendering strategy with data set #8 + [x] Rendering strategy with data set #9 + [x] Rendering strategy with data set #10 + [x] Rendering strategy with data set #11 + [x] Rendering strategy with data set #12 + [x] Rendering strategy with data set #13 + [x] Rendering strategy with data set #14 + [x] Rendering strategy with data set #15 + [x] Rendering strategy with data set #16 + [x] Rendering strategy with data set #17 + [x] Rendering strategy with data set #18 + [x] Rendering strategy with data set #19 + [x] Rendering strategy with data set #20 + [x] Rendering strategy with data set #21 + [x] Rendering strategy with data set #22 + [x] Rendering strategy with data set #23 + [x] Rendering strategy with data set #24 + [x] Rendering strategy with data set #25 + [x] Rendering strategy with data set #26 + [x] Rendering strategy with data set #27 + [x] Rendering strategy with data set #28 + [x] Source with data set #0 + [x] Source with data set #1 + [x] Source with data set #2 + [x] Source with data set #3 + [x] Source with data set #4 + [x] Source with data set #5 + [x] Source with data set #6 + [x] Source with data set #7 + [x] Source with data set #8 + [x] Source with data set #9 + [x] Source with data set #10 + [x] Source with data set #11 + [x] Source with data set #12 + [x] Source with data set #13 + [x] Source with data set #14 + [x] Source with data set #15 + [x] Source with data set #16 + [x] Source with data set #17 + [x] Source with data set #18 + [x] Source with data set #19 + [x] Source with data set #20 + [x] Source with data set #21 + [x] Source with data set #22 + [x] Source with data set #23 [x] Renders plain text [x] Renders multi-line text [x] Renders rich text @@ -2703,10 +6246,18 @@ s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\Quick s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\Serializer [x] serialize() ignores text nodes in source tree - [x] serialize() tests + [x] serialize() tests with data set #0 + [x] serialize() tests with data set #1 + [x] serialize() tests with data set #2 + [x] serialize() tests with data set #3 + [x] serialize() tests with data set #4 + [x] serialize() tests with data set #5 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP\SwitchStatement - [x] generate() tests + [x] generate() tests with data set #0 + [x] generate() tests with data set #1 + [x] generate() tests with data set #2 + [x] generate() tests with data set #3 s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP [x] Returns an instance of Renderer @@ -2727,20 +6278,761 @@ s9e\TextFormatter\Tests\Configurator\RendererGenerators\PHP [x] Throws an exception if a template contains a processing instruction [x] Throws an exception when encountering unsupported XSL elements [x] Throws an exception on that does not copy an attribute - [x] Matches the reference rendering in edge cases - [x] Matches the reference rendering in edge cases (quick renderer) - [x] XPath expressions are inlined as PHP whenever possible + [x] Matches the reference rendering in edge cases with data set #0 + [x] Matches the reference rendering in edge cases with data set #1 + [x] Matches the reference rendering in edge cases with data set #2 + [x] Matches the reference rendering in edge cases with data set #3 + [x] Matches the reference rendering in edge cases with data set #4 + [x] Matches the reference rendering in edge cases with data set #5 + [x] Matches the reference rendering in edge cases with data set #6 + [x] Matches the reference rendering in edge cases with data set #7 + [x] Matches the reference rendering in edge cases with data set #8 + [x] Matches the reference rendering in edge cases with data set #9 + [x] Matches the reference rendering in edge cases with data set #10 + [x] Matches the reference rendering in edge cases with data set #11 + [x] Matches the reference rendering in edge cases with data set #12 + [x] Matches the reference rendering in edge cases with data set #13 + [x] Matches the reference rendering in edge cases with data set #14 + [x] Matches the reference rendering in edge cases with data set #15 + [x] Matches the reference rendering in edge cases with data set #16 + [x] Matches the reference rendering in edge cases with data set #17 + [x] Matches the reference rendering in edge cases with data set #18 + [x] Matches the reference rendering in edge cases with data set #19 + [x] Matches the reference rendering in edge cases with data set #20 + [x] Matches the reference rendering in edge cases with data set #21 + [x] Matches the reference rendering in edge cases with data set #22 + [x] Matches the reference rendering in edge cases with data set #23 + [x] Matches the reference rendering in edge cases with data set #24 + [x] Matches the reference rendering in edge cases with data set #25 + [x] Matches the reference rendering in edge cases with data set #26 + [x] Matches the reference rendering in edge cases with data set #27 + [x] Matches the reference rendering in edge cases with data set #28 + [x] Matches the reference rendering in edge cases with data set #29 + [x] Matches the reference rendering in edge cases with data set #30 + [x] Matches the reference rendering in edge cases with data set #31 + [x] Matches the reference rendering in edge cases with data set #32 + [x] Matches the reference rendering in edge cases with data set #33 + [x] Matches the reference rendering in edge cases with data set #34 + [x] Matches the reference rendering in edge cases with data set #35 + [x] Matches the reference rendering in edge cases with data set #36 + [x] Matches the reference rendering in edge cases with data set #37 + [x] Matches the reference rendering in edge cases with data set #38 + [x] Matches the reference rendering in edge cases with data set #39 + [x] Matches the reference rendering in edge cases with data set #40 + [x] Matches the reference rendering in edge cases with data set #41 + [x] Matches the reference rendering in edge cases with data set #42 + [x] Matches the reference rendering in edge cases with data set #43 + [x] Matches the reference rendering in edge cases with data set #44 + [x] Matches the reference rendering in edge cases with data set #45 + [x] Matches the reference rendering in edge cases with data set #46 + [x] Matches the reference rendering in edge cases with data set #47 + [x] Matches the reference rendering in edge cases with data set #48 + [x] Matches the reference rendering in edge cases with data set #49 + [x] Matches the reference rendering in edge cases with data set #50 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #0 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #1 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #2 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #3 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #4 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #5 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #6 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #7 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #8 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #9 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #10 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #11 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #12 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #13 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #14 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #15 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #16 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #17 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #18 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #19 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #20 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #21 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #22 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #23 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #24 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #25 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #26 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #27 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #28 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #29 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #30 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #31 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #32 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #33 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #34 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #35 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #36 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #37 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #38 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #39 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #40 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #41 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #42 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #43 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #44 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #45 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #46 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #47 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #48 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #49 + [x] Matches the reference rendering in edge cases (quick renderer) with data set #50 + [x] XPath expressions are inlined as PHP whenever possible with data set #0 + [x] XPath expressions are inlined as PHP whenever possible with data set #1 + [x] XPath expressions are inlined as PHP whenever possible with data set #2 + [x] XPath expressions are inlined as PHP whenever possible with data set #3 + [x] XPath expressions are inlined as PHP whenever possible with data set #4 + [x] XPath expressions are inlined as PHP whenever possible with data set #5 + [x] XPath expressions are inlined as PHP whenever possible with data set #6 + [x] XPath expressions are inlined as PHP whenever possible with data set #7 + [x] XPath expressions are inlined as PHP whenever possible with data set #8 + [x] XPath expressions are inlined as PHP whenever possible with data set #9 + [x] XPath expressions are inlined as PHP whenever possible with data set #10 + [x] XPath expressions are inlined as PHP whenever possible with data set #11 [x] useMultibyteStringFunctions is set to TRUE if mbstring is available [x] mbstring functions are not used if $useMultibyteStringFunctions is FALSE [x] Calls the optimizer's optimize() method if applicable [x] Can run without an optimizer [x] Calls the control structures optimizer's optimize() method if applicable [x] Can run without a control structures optimizer - [x] Code optimization tests - [x] HTML rendering - [x] Rendering of void and empty elements in HTML - [x] Tests from plugins - [x] Tests from plugins (Quick renderer) + [x] Code optimization tests with data set #0 + [x] Code optimization tests with data set #1 + [x] Code optimization tests with data set #2 + [x] Code optimization tests with data set #3 + [x] Code optimization tests with data set #4 + [x] Code optimization tests with data set #5 + [x] Code optimization tests with data set #6 + [x] Code optimization tests with data set #7 + [x] Code optimization tests with data set #8 + [x] Code optimization tests with data set #9 + [x] Code optimization tests with data set #10 + [x] Code optimization tests with data set #11 + [x] Code optimization tests with data set #12 + [x] Code optimization tests with data set #13 + [x] Code optimization tests with data set #14 + [x] Code optimization tests with data set #15 + [x] HTML rendering with data set #0 + [x] HTML rendering with data set #1 + [x] HTML rendering with data set #2 + [x] HTML rendering with data set #3 + [x] HTML rendering with data set #4 + [x] HTML rendering with data set #5 + [x] HTML rendering with data set #6 + [x] HTML rendering with data set #7 + [x] HTML rendering with data set #8 + [x] HTML rendering with data set #9 + [x] HTML rendering with data set #10 + [x] HTML rendering with data set #11 + [x] HTML rendering with data set #12 + [x] HTML rendering with data set #13 + [x] HTML rendering with data set #14 + [x] HTML rendering with data set #15 + [x] HTML rendering with data set #16 + [x] HTML rendering with data set #17 + [x] HTML rendering with data set #18 + [x] HTML rendering with data set #19 + [x] HTML rendering with data set #20 + [x] HTML rendering with data set #21 + [x] HTML rendering with data set #22 + [x] HTML rendering with data set #23 + [x] HTML rendering with data set #24 + [x] HTML rendering with data set #25 + [x] HTML rendering with data set #26 + [x] HTML rendering with data set #27 + [x] HTML rendering with data set #28 + [x] HTML rendering with data set #29 + [x] HTML rendering with data set #30 + [x] HTML rendering with data set #31 + [x] HTML rendering with data set #32 + [x] HTML rendering with data set #33 + [x] HTML rendering with data set #34 + [x] Rendering of void and empty elements in HTML with data set #0 + [x] Rendering of void and empty elements in HTML with data set #1 + [x] Rendering of void and empty elements in HTML with data set #2 + [x] Rendering of void and empty elements in HTML with data set #3 + [x] Rendering of void and empty elements in HTML with data set #4 + [x] Rendering of void and empty elements in HTML with data set #5 + [x] Rendering of void and empty elements in HTML with data set #6 + [x] Rendering of void and empty elements in HTML with data set #7 + [x] Rendering of void and empty elements in HTML with data set #8 + [x] Rendering of void and empty elements in HTML with data set #9 + [x] Rendering of void and empty elements in HTML with data set #10 + [x] Rendering of void and empty elements in HTML with data set #11 + [x] Rendering of void and empty elements in HTML with data set #12 + [x] Rendering of void and empty elements in HTML with data set #13 + [x] Rendering of void and empty elements in HTML with data set #14 + [x] Rendering of void and empty elements in HTML with data set #15 + [x] Tests from plugins with data set #0 + [x] Tests from plugins with data set #1 + [x] Tests from plugins with data set #2 + [x] Tests from plugins with data set #3 + [x] Tests from plugins with data set #4 + [x] Tests from plugins with data set #5 + [x] Tests from plugins with data set #6 + [x] Tests from plugins with data set #7 + [x] Tests from plugins with data set #8 + [x] Tests from plugins with data set #9 + [x] Tests from plugins with data set #10 + [x] Tests from plugins with data set #11 + [x] Tests from plugins with data set #12 + [x] Tests from plugins with data set #13 + [x] Tests from plugins with data set #14 + [x] Tests from plugins with data set #15 + [x] Tests from plugins with data set #16 + [x] Tests from plugins with data set #17 + [x] Tests from plugins with data set #18 + [x] Tests from plugins with data set #19 + [x] Tests from plugins with data set #20 + [x] Tests from plugins with data set #21 + [x] Tests from plugins with data set #22 + [x] Tests from plugins with data set #23 + [x] Tests from plugins with data set #24 + [x] Tests from plugins with data set #25 + [x] Tests from plugins with data set #26 + [x] Tests from plugins with data set #27 + [x] Tests from plugins with data set #28 + [x] Tests from plugins with data set #29 + [x] Tests from plugins with data set #30 + [x] Tests from plugins with data set #31 + [x] Tests from plugins with data set #32 + [x] Tests from plugins with data set #33 + [x] Tests from plugins with data set #34 + [x] Tests from plugins with data set #35 + [x] Tests from plugins with data set #36 + [x] Tests from plugins with data set #37 + [x] Tests from plugins with data set #38 + [x] Tests from plugins with data set #39 + [x] Tests from plugins with data set #40 + [x] Tests from plugins with data set #41 + [x] Tests from plugins with data set #42 + [x] Tests from plugins with data set #43 + [x] Tests from plugins with data set #44 + [x] Tests from plugins with data set #45 + [x] Tests from plugins with data set #46 + [x] Tests from plugins with data set #47 + [x] Tests from plugins with data set #48 + [x] Tests from plugins with data set #49 + [x] Tests from plugins with data set #50 + [x] Tests from plugins with data set #51 + [x] Tests from plugins with data set #52 + [x] Tests from plugins with data set #53 + [x] Tests from plugins with data set #54 + [x] Tests from plugins with data set #55 + [x] Tests from plugins with data set #56 + [x] Tests from plugins with data set #57 + [x] Tests from plugins with data set #58 + [x] Tests from plugins with data set #59 + [x] Tests from plugins with data set #60 + [x] Tests from plugins with data set #61 + [x] Tests from plugins with data set #62 + [x] Tests from plugins with data set #63 + [x] Tests from plugins with data set #64 + [x] Tests from plugins with data set #65 + [x] Tests from plugins with data set #66 + [x] Tests from plugins with data set #67 + [x] Tests from plugins with data set #68 + [x] Tests from plugins with data set #69 + [x] Tests from plugins with data set #70 + [x] Tests from plugins with data set #71 + [x] Tests from plugins with data set #72 + [x] Tests from plugins with data set #73 + [x] Tests from plugins with data set #74 + [x] Tests from plugins with data set #75 + [x] Tests from plugins with data set #76 + [x] Tests from plugins with data set #77 + [x] Tests from plugins with data set #78 + [x] Tests from plugins with data set #79 + [x] Tests from plugins with data set #80 + [x] Tests from plugins with data set #81 + [x] Tests from plugins with data set #82 + [x] Tests from plugins with data set #83 + [x] Tests from plugins with data set #84 + [x] Tests from plugins with data set #85 + [x] Tests from plugins with data set #86 + [x] Tests from plugins with data set #87 + [x] Tests from plugins with data set #88 + [x] Tests from plugins with data set #89 + [x] Tests from plugins with data set #90 + [x] Tests from plugins with data set #91 + [x] Tests from plugins with data set #92 + [x] Tests from plugins with data set #93 + [x] Tests from plugins with data set #94 + [x] Tests from plugins with data set #95 + [x] Tests from plugins with data set #96 + [x] Tests from plugins with data set #97 + [x] Tests from plugins with data set #98 + [x] Tests from plugins with data set #99 + [x] Tests from plugins with data set #100 + [x] Tests from plugins with data set #101 + [x] Tests from plugins with data set #102 + [x] Tests from plugins with data set #103 + [x] Tests from plugins with data set #104 + [x] Tests from plugins with data set #105 + [x] Tests from plugins with data set #106 + [x] Tests from plugins with data set #107 + [x] Tests from plugins with data set #108 + [x] Tests from plugins with data set #109 + [x] Tests from plugins with data set #110 + [x] Tests from plugins with data set #111 + [x] Tests from plugins with data set #112 + [x] Tests from plugins with data set #113 + [x] Tests from plugins with data set #114 + [x] Tests from plugins with data set #115 + [x] Tests from plugins with data set #116 + [x] Tests from plugins with data set #117 + [x] Tests from plugins with data set #118 + [x] Tests from plugins with data set #119 + [x] Tests from plugins with data set #120 + [x] Tests from plugins with data set #121 + [x] Tests from plugins with data set #122 + [x] Tests from plugins with data set #123 + [x] Tests from plugins with data set #124 + [x] Tests from plugins with data set #125 + [x] Tests from plugins with data set #126 + [x] Tests from plugins with data set #127 + [x] Tests from plugins with data set #128 + [x] Tests from plugins with data set #129 + [x] Tests from plugins with data set #130 + [x] Tests from plugins with data set #131 + [x] Tests from plugins with data set #132 + [x] Tests from plugins with data set #133 + [x] Tests from plugins with data set #134 + [x] Tests from plugins with data set #135 + [x] Tests from plugins with data set #136 + [x] Tests from plugins with data set #137 + [x] Tests from plugins with data set #138 + [x] Tests from plugins with data set #139 + [x] Tests from plugins with data set #140 + [x] Tests from plugins with data set #141 + [x] Tests from plugins with data set #142 + [x] Tests from plugins with data set #143 + [x] Tests from plugins with data set #144 + [x] Tests from plugins with data set #145 + [x] Tests from plugins with data set #146 + [x] Tests from plugins with data set #147 + [x] Tests from plugins with data set #148 + [x] Tests from plugins with data set #149 + [x] Tests from plugins with data set #150 + [x] Tests from plugins with data set #151 + [x] Tests from plugins with data set #152 + [x] Tests from plugins with data set #153 + [x] Tests from plugins with data set #154 + [x] Tests from plugins with data set #155 + [x] Tests from plugins with data set #156 + [x] Tests from plugins with data set #157 + [x] Tests from plugins with data set #158 + [x] Tests from plugins with data set #159 + [x] Tests from plugins with data set #160 + [x] Tests from plugins with data set #161 + [x] Tests from plugins with data set #162 + [x] Tests from plugins with data set #163 + [x] Tests from plugins with data set #164 + [x] Tests from plugins with data set #165 + [x] Tests from plugins with data set #166 + [x] Tests from plugins with data set #167 + [x] Tests from plugins with data set #168 + [x] Tests from plugins with data set #169 + [x] Tests from plugins with data set #170 + [x] Tests from plugins with data set #171 + [x] Tests from plugins with data set #172 + [x] Tests from plugins with data set #173 + [x] Tests from plugins with data set #174 + [x] Tests from plugins with data set #175 + [x] Tests from plugins with data set #176 + [x] Tests from plugins with data set #177 + [x] Tests from plugins with data set #178 + [x] Tests from plugins with data set #179 + [x] Tests from plugins with data set #180 + [x] Tests from plugins with data set #181 + [x] Tests from plugins with data set #182 + [x] Tests from plugins with data set #183 + [x] Tests from plugins with data set #184 + [x] Tests from plugins with data set #185 + [x] Tests from plugins with data set #186 + [x] Tests from plugins with data set #187 + [x] Tests from plugins with data set #188 + [x] Tests from plugins with data set #189 + [x] Tests from plugins with data set #190 + [x] Tests from plugins with data set #191 + [x] Tests from plugins with data set #192 + [x] Tests from plugins with data set #193 + [x] Tests from plugins with data set #194 + [x] Tests from plugins with data set #195 + [x] Tests from plugins with data set #196 + [x] Tests from plugins with data set #197 + [x] Tests from plugins with data set #198 + [x] Tests from plugins with data set #199 + [x] Tests from plugins with data set #200 + [x] Tests from plugins with data set #201 + [x] Tests from plugins with data set #202 + [x] Tests from plugins with data set #203 + [x] Tests from plugins with data set #204 + [x] Tests from plugins with data set #205 + [x] Tests from plugins with data set #206 + [x] Tests from plugins with data set #207 + [x] Tests from plugins with data set #208 + [x] Tests from plugins with data set #209 + [x] Tests from plugins with data set #210 + [x] Tests from plugins with data set #211 + [x] Tests from plugins with data set #212 + [x] Tests from plugins with data set #213 + [x] Tests from plugins with data set #214 + [x] Tests from plugins with data set #215 + [x] Tests from plugins with data set #216 + [x] Tests from plugins with data set #217 + [x] Tests from plugins with data set #218 + [x] Tests from plugins with data set #219 + [x] Tests from plugins with data set #220 + [x] Tests from plugins with data set #221 + [x] Tests from plugins with data set #222 + [x] Tests from plugins with data set #223 + [x] Tests from plugins with data set #224 + [x] Tests from plugins with data set #225 + [x] Tests from plugins with data set #226 + [x] Tests from plugins with data set #227 + [x] Tests from plugins with data set #228 + [x] Tests from plugins with data set #229 + [x] Tests from plugins with data set #230 + [x] Tests from plugins with data set #231 + [x] Tests from plugins with data set #232 + [x] Tests from plugins with data set #233 + [x] Tests from plugins with data set #234 + [x] Tests from plugins with data set #235 + [x] Tests from plugins with data set #236 + [x] Tests from plugins with data set #237 + [x] Tests from plugins with data set #238 + [x] Tests from plugins with data set #239 + [x] Tests from plugins with data set #240 + [x] Tests from plugins with data set #241 + [x] Tests from plugins with data set #242 + [x] Tests from plugins with data set #243 + [x] Tests from plugins with data set #244 + [x] Tests from plugins with data set #245 + [x] Tests from plugins with data set #246 + [x] Tests from plugins with data set #247 + [x] Tests from plugins with data set #248 + [x] Tests from plugins with data set #249 + [x] Tests from plugins with data set #250 + [x] Tests from plugins with data set #251 + [x] Tests from plugins with data set #252 + [x] Tests from plugins with data set #253 + [x] Tests from plugins with data set #254 + [x] Tests from plugins with data set #255 + [x] Tests from plugins with data set #256 + [x] Tests from plugins with data set #257 + [x] Tests from plugins with data set #258 + [x] Tests from plugins with data set #259 + [x] Tests from plugins with data set #260 + [x] Tests from plugins with data set #261 + [x] Tests from plugins with data set #262 + [x] Tests from plugins with data set #263 + [x] Tests from plugins with data set #264 + [x] Tests from plugins with data set #265 + [x] Tests from plugins with data set #266 + [x] Tests from plugins with data set #267 + [x] Tests from plugins with data set #268 + [x] Tests from plugins with data set #269 + [x] Tests from plugins with data set #270 + [x] Tests from plugins with data set #271 + [x] Tests from plugins with data set #272 + [x] Tests from plugins with data set #273 + [x] Tests from plugins with data set #274 + [x] Tests from plugins with data set #275 + [x] Tests from plugins with data set #276 + [x] Tests from plugins with data set #277 + [x] Tests from plugins with data set #278 + [x] Tests from plugins with data set #279 + [x] Tests from plugins with data set #280 + [x] Tests from plugins with data set #281 + [x] Tests from plugins with data set #282 + [x] Tests from plugins with data set #283 + [x] Tests from plugins (Quick renderer) with data set #0 + [x] Tests from plugins (Quick renderer) with data set #1 + [x] Tests from plugins (Quick renderer) with data set #2 + [x] Tests from plugins (Quick renderer) with data set #3 + [x] Tests from plugins (Quick renderer) with data set #4 + [x] Tests from plugins (Quick renderer) with data set #5 + [x] Tests from plugins (Quick renderer) with data set #6 + [x] Tests from plugins (Quick renderer) with data set #7 + [x] Tests from plugins (Quick renderer) with data set #8 + [x] Tests from plugins (Quick renderer) with data set #9 + [x] Tests from plugins (Quick renderer) with data set #10 + [x] Tests from plugins (Quick renderer) with data set #11 + [x] Tests from plugins (Quick renderer) with data set #12 + [x] Tests from plugins (Quick renderer) with data set #13 + [x] Tests from plugins (Quick renderer) with data set #14 + [x] Tests from plugins (Quick renderer) with data set #15 + [x] Tests from plugins (Quick renderer) with data set #16 + [x] Tests from plugins (Quick renderer) with data set #17 + [x] Tests from plugins (Quick renderer) with data set #18 + [x] Tests from plugins (Quick renderer) with data set #19 + [x] Tests from plugins (Quick renderer) with data set #20 + [x] Tests from plugins (Quick renderer) with data set #21 + [x] Tests from plugins (Quick renderer) with data set #22 + [x] Tests from plugins (Quick renderer) with data set #23 + [x] Tests from plugins (Quick renderer) with data set #24 + [x] Tests from plugins (Quick renderer) with data set #25 + [x] Tests from plugins (Quick renderer) with data set #26 + [x] Tests from plugins (Quick renderer) with data set #27 + [x] Tests from plugins (Quick renderer) with data set #28 + [x] Tests from plugins (Quick renderer) with data set #29 + [x] Tests from plugins (Quick renderer) with data set #30 + [x] Tests from plugins (Quick renderer) with data set #31 + [x] Tests from plugins (Quick renderer) with data set #32 + [x] Tests from plugins (Quick renderer) with data set #33 + [x] Tests from plugins (Quick renderer) with data set #34 + [x] Tests from plugins (Quick renderer) with data set #35 + [x] Tests from plugins (Quick renderer) with data set #36 + [x] Tests from plugins (Quick renderer) with data set #37 + [x] Tests from plugins (Quick renderer) with data set #38 + [x] Tests from plugins (Quick renderer) with data set #39 + [x] Tests from plugins (Quick renderer) with data set #40 + [x] Tests from plugins (Quick renderer) with data set #41 + [x] Tests from plugins (Quick renderer) with data set #42 + [x] Tests from plugins (Quick renderer) with data set #43 + [x] Tests from plugins (Quick renderer) with data set #44 + [x] Tests from plugins (Quick renderer) with data set #45 + [x] Tests from plugins (Quick renderer) with data set #46 + [x] Tests from plugins (Quick renderer) with data set #47 + [x] Tests from plugins (Quick renderer) with data set #48 + [x] Tests from plugins (Quick renderer) with data set #49 + [x] Tests from plugins (Quick renderer) with data set #50 + [x] Tests from plugins (Quick renderer) with data set #51 + [x] Tests from plugins (Quick renderer) with data set #52 + [x] Tests from plugins (Quick renderer) with data set #53 + [x] Tests from plugins (Quick renderer) with data set #54 + [x] Tests from plugins (Quick renderer) with data set #55 + [x] Tests from plugins (Quick renderer) with data set #56 + [x] Tests from plugins (Quick renderer) with data set #57 + [x] Tests from plugins (Quick renderer) with data set #58 + [x] Tests from plugins (Quick renderer) with data set #59 + [x] Tests from plugins (Quick renderer) with data set #60 + [x] Tests from plugins (Quick renderer) with data set #61 + [x] Tests from plugins (Quick renderer) with data set #62 + [x] Tests from plugins (Quick renderer) with data set #63 + [x] Tests from plugins (Quick renderer) with data set #64 + [x] Tests from plugins (Quick renderer) with data set #65 + [x] Tests from plugins (Quick renderer) with data set #66 + [x] Tests from plugins (Quick renderer) with data set #67 + [x] Tests from plugins (Quick renderer) with data set #68 + [x] Tests from plugins (Quick renderer) with data set #69 + [x] Tests from plugins (Quick renderer) with data set #70 + [x] Tests from plugins (Quick renderer) with data set #71 + [x] Tests from plugins (Quick renderer) with data set #72 + [x] Tests from plugins (Quick renderer) with data set #73 + [x] Tests from plugins (Quick renderer) with data set #74 + [x] Tests from plugins (Quick renderer) with data set #75 + [x] Tests from plugins (Quick renderer) with data set #76 + [x] Tests from plugins (Quick renderer) with data set #77 + [x] Tests from plugins (Quick renderer) with data set #78 + [x] Tests from plugins (Quick renderer) with data set #79 + [x] Tests from plugins (Quick renderer) with data set #80 + [x] Tests from plugins (Quick renderer) with data set #81 + [x] Tests from plugins (Quick renderer) with data set #82 + [x] Tests from plugins (Quick renderer) with data set #83 + [x] Tests from plugins (Quick renderer) with data set #84 + [x] Tests from plugins (Quick renderer) with data set #85 + [x] Tests from plugins (Quick renderer) with data set #86 + [x] Tests from plugins (Quick renderer) with data set #87 + [x] Tests from plugins (Quick renderer) with data set #88 + [x] Tests from plugins (Quick renderer) with data set #89 + [x] Tests from plugins (Quick renderer) with data set #90 + [x] Tests from plugins (Quick renderer) with data set #91 + [x] Tests from plugins (Quick renderer) with data set #92 + [x] Tests from plugins (Quick renderer) with data set #93 + [x] Tests from plugins (Quick renderer) with data set #94 + [x] Tests from plugins (Quick renderer) with data set #95 + [x] Tests from plugins (Quick renderer) with data set #96 + [x] Tests from plugins (Quick renderer) with data set #97 + [x] Tests from plugins (Quick renderer) with data set #98 + [x] Tests from plugins (Quick renderer) with data set #99 + [x] Tests from plugins (Quick renderer) with data set #100 + [x] Tests from plugins (Quick renderer) with data set #101 + [x] Tests from plugins (Quick renderer) with data set #102 + [x] Tests from plugins (Quick renderer) with data set #103 + [x] Tests from plugins (Quick renderer) with data set #104 + [x] Tests from plugins (Quick renderer) with data set #105 + [x] Tests from plugins (Quick renderer) with data set #106 + [x] Tests from plugins (Quick renderer) with data set #107 + [x] Tests from plugins (Quick renderer) with data set #108 + [x] Tests from plugins (Quick renderer) with data set #109 + [x] Tests from plugins (Quick renderer) with data set #110 + [x] Tests from plugins (Quick renderer) with data set #111 + [x] Tests from plugins (Quick renderer) with data set #112 + [x] Tests from plugins (Quick renderer) with data set #113 + [x] Tests from plugins (Quick renderer) with data set #114 + [x] Tests from plugins (Quick renderer) with data set #115 + [x] Tests from plugins (Quick renderer) with data set #116 + [x] Tests from plugins (Quick renderer) with data set #117 + [x] Tests from plugins (Quick renderer) with data set #118 + [x] Tests from plugins (Quick renderer) with data set #119 + [x] Tests from plugins (Quick renderer) with data set #120 + [x] Tests from plugins (Quick renderer) with data set #121 + [x] Tests from plugins (Quick renderer) with data set #122 + [x] Tests from plugins (Quick renderer) with data set #123 + [x] Tests from plugins (Quick renderer) with data set #124 + [x] Tests from plugins (Quick renderer) with data set #125 + [x] Tests from plugins (Quick renderer) with data set #126 + [x] Tests from plugins (Quick renderer) with data set #127 + [x] Tests from plugins (Quick renderer) with data set #128 + [x] Tests from plugins (Quick renderer) with data set #129 + [x] Tests from plugins (Quick renderer) with data set #130 + [x] Tests from plugins (Quick renderer) with data set #131 + [x] Tests from plugins (Quick renderer) with data set #132 + [x] Tests from plugins (Quick renderer) with data set #133 + [x] Tests from plugins (Quick renderer) with data set #134 + [x] Tests from plugins (Quick renderer) with data set #135 + [x] Tests from plugins (Quick renderer) with data set #136 + [x] Tests from plugins (Quick renderer) with data set #137 + [x] Tests from plugins (Quick renderer) with data set #138 + [x] Tests from plugins (Quick renderer) with data set #139 + [x] Tests from plugins (Quick renderer) with data set #140 + [x] Tests from plugins (Quick renderer) with data set #141 + [x] Tests from plugins (Quick renderer) with data set #142 + [x] Tests from plugins (Quick renderer) with data set #143 + [x] Tests from plugins (Quick renderer) with data set #144 + [x] Tests from plugins (Quick renderer) with data set #145 + [x] Tests from plugins (Quick renderer) with data set #146 + [x] Tests from plugins (Quick renderer) with data set #147 + [x] Tests from plugins (Quick renderer) with data set #148 + [x] Tests from plugins (Quick renderer) with data set #149 + [x] Tests from plugins (Quick renderer) with data set #150 + [x] Tests from plugins (Quick renderer) with data set #151 + [x] Tests from plugins (Quick renderer) with data set #152 + [x] Tests from plugins (Quick renderer) with data set #153 + [x] Tests from plugins (Quick renderer) with data set #154 + [x] Tests from plugins (Quick renderer) with data set #155 + [x] Tests from plugins (Quick renderer) with data set #156 + [x] Tests from plugins (Quick renderer) with data set #157 + [x] Tests from plugins (Quick renderer) with data set #158 + [x] Tests from plugins (Quick renderer) with data set #159 + [x] Tests from plugins (Quick renderer) with data set #160 + [x] Tests from plugins (Quick renderer) with data set #161 + [x] Tests from plugins (Quick renderer) with data set #162 + [x] Tests from plugins (Quick renderer) with data set #163 + [x] Tests from plugins (Quick renderer) with data set #164 + [x] Tests from plugins (Quick renderer) with data set #165 + [x] Tests from plugins (Quick renderer) with data set #166 + [x] Tests from plugins (Quick renderer) with data set #167 + [x] Tests from plugins (Quick renderer) with data set #168 + [x] Tests from plugins (Quick renderer) with data set #169 + [x] Tests from plugins (Quick renderer) with data set #170 + [x] Tests from plugins (Quick renderer) with data set #171 + [x] Tests from plugins (Quick renderer) with data set #172 + [x] Tests from plugins (Quick renderer) with data set #173 + [x] Tests from plugins (Quick renderer) with data set #174 + [x] Tests from plugins (Quick renderer) with data set #175 + [x] Tests from plugins (Quick renderer) with data set #176 + [x] Tests from plugins (Quick renderer) with data set #177 + [x] Tests from plugins (Quick renderer) with data set #178 + [x] Tests from plugins (Quick renderer) with data set #179 + [x] Tests from plugins (Quick renderer) with data set #180 + [x] Tests from plugins (Quick renderer) with data set #181 + [x] Tests from plugins (Quick renderer) with data set #182 + [x] Tests from plugins (Quick renderer) with data set #183 + [x] Tests from plugins (Quick renderer) with data set #184 + [x] Tests from plugins (Quick renderer) with data set #185 + [x] Tests from plugins (Quick renderer) with data set #186 + [x] Tests from plugins (Quick renderer) with data set #187 + [x] Tests from plugins (Quick renderer) with data set #188 + [x] Tests from plugins (Quick renderer) with data set #189 + [x] Tests from plugins (Quick renderer) with data set #190 + [x] Tests from plugins (Quick renderer) with data set #191 + [x] Tests from plugins (Quick renderer) with data set #192 + [x] Tests from plugins (Quick renderer) with data set #193 + [x] Tests from plugins (Quick renderer) with data set #194 + [x] Tests from plugins (Quick renderer) with data set #195 + [x] Tests from plugins (Quick renderer) with data set #196 + [x] Tests from plugins (Quick renderer) with data set #197 + [x] Tests from plugins (Quick renderer) with data set #198 + [x] Tests from plugins (Quick renderer) with data set #199 + [x] Tests from plugins (Quick renderer) with data set #200 + [x] Tests from plugins (Quick renderer) with data set #201 + [x] Tests from plugins (Quick renderer) with data set #202 + [x] Tests from plugins (Quick renderer) with data set #203 + [x] Tests from plugins (Quick renderer) with data set #204 + [x] Tests from plugins (Quick renderer) with data set #205 + [x] Tests from plugins (Quick renderer) with data set #206 + [x] Tests from plugins (Quick renderer) with data set #207 + [x] Tests from plugins (Quick renderer) with data set #208 + [x] Tests from plugins (Quick renderer) with data set #209 + [x] Tests from plugins (Quick renderer) with data set #210 + [x] Tests from plugins (Quick renderer) with data set #211 + [x] Tests from plugins (Quick renderer) with data set #212 + [x] Tests from plugins (Quick renderer) with data set #213 + [x] Tests from plugins (Quick renderer) with data set #214 + [x] Tests from plugins (Quick renderer) with data set #215 + [x] Tests from plugins (Quick renderer) with data set #216 + [x] Tests from plugins (Quick renderer) with data set #217 + [x] Tests from plugins (Quick renderer) with data set #218 + [x] Tests from plugins (Quick renderer) with data set #219 + [x] Tests from plugins (Quick renderer) with data set #220 + [x] Tests from plugins (Quick renderer) with data set #221 + [x] Tests from plugins (Quick renderer) with data set #222 + [x] Tests from plugins (Quick renderer) with data set #223 + [x] Tests from plugins (Quick renderer) with data set #224 + [x] Tests from plugins (Quick renderer) with data set #225 + [x] Tests from plugins (Quick renderer) with data set #226 + [x] Tests from plugins (Quick renderer) with data set #227 + [x] Tests from plugins (Quick renderer) with data set #228 + [x] Tests from plugins (Quick renderer) with data set #229 + [x] Tests from plugins (Quick renderer) with data set #230 + [x] Tests from plugins (Quick renderer) with data set #231 + [x] Tests from plugins (Quick renderer) with data set #232 + [x] Tests from plugins (Quick renderer) with data set #233 + [x] Tests from plugins (Quick renderer) with data set #234 + [x] Tests from plugins (Quick renderer) with data set #235 + [x] Tests from plugins (Quick renderer) with data set #236 + [x] Tests from plugins (Quick renderer) with data set #237 + [x] Tests from plugins (Quick renderer) with data set #238 + [x] Tests from plugins (Quick renderer) with data set #239 + [x] Tests from plugins (Quick renderer) with data set #240 + [x] Tests from plugins (Quick renderer) with data set #241 + [x] Tests from plugins (Quick renderer) with data set #242 + [x] Tests from plugins (Quick renderer) with data set #243 + [x] Tests from plugins (Quick renderer) with data set #244 + [x] Tests from plugins (Quick renderer) with data set #245 + [x] Tests from plugins (Quick renderer) with data set #246 + [x] Tests from plugins (Quick renderer) with data set #247 + [x] Tests from plugins (Quick renderer) with data set #248 + [x] Tests from plugins (Quick renderer) with data set #249 + [x] Tests from plugins (Quick renderer) with data set #250 + [x] Tests from plugins (Quick renderer) with data set #251 + [x] Tests from plugins (Quick renderer) with data set #252 + [x] Tests from plugins (Quick renderer) with data set #253 + [x] Tests from plugins (Quick renderer) with data set #254 + [x] Tests from plugins (Quick renderer) with data set #255 + [x] Tests from plugins (Quick renderer) with data set #256 + [x] Tests from plugins (Quick renderer) with data set #257 + [x] Tests from plugins (Quick renderer) with data set #258 + [x] Tests from plugins (Quick renderer) with data set #259 + [x] Tests from plugins (Quick renderer) with data set #260 + [x] Tests from plugins (Quick renderer) with data set #261 + [x] Tests from plugins (Quick renderer) with data set #262 + [x] Tests from plugins (Quick renderer) with data set #263 + [x] Tests from plugins (Quick renderer) with data set #264 + [x] Tests from plugins (Quick renderer) with data set #265 + [x] Tests from plugins (Quick renderer) with data set #266 + [x] Tests from plugins (Quick renderer) with data set #267 + [x] Tests from plugins (Quick renderer) with data set #268 + [x] Tests from plugins (Quick renderer) with data set #269 + [x] Tests from plugins (Quick renderer) with data set #270 + [x] Tests from plugins (Quick renderer) with data set #271 + [x] Tests from plugins (Quick renderer) with data set #272 + [x] Tests from plugins (Quick renderer) with data set #273 + [x] Tests from plugins (Quick renderer) with data set #274 + [x] Tests from plugins (Quick renderer) with data set #275 + [x] Tests from plugins (Quick renderer) with data set #276 + [x] Tests from plugins (Quick renderer) with data set #277 + [x] Tests from plugins (Quick renderer) with data set #278 + [x] Tests from plugins (Quick renderer) with data set #279 + [x] Tests from plugins (Quick renderer) with data set #280 + [x] Tests from plugins (Quick renderer) with data set #281 + [x] Tests from plugins (Quick renderer) with data set #282 + [x] Tests from plugins (Quick renderer) with data set #283 [x] Creates a Quick renderer if $enableQuickRenderer is true [x] Does not create a Quick renderer if $enableQuickRenderer is false @@ -2748,7 +7040,9 @@ s9e\TextFormatter\Tests\Configurator\RendererGenerators\Unformatted [x] Returns an instance of Renderer s9e\TextFormatter\Tests\Configurator\RendererGenerators\XSLT\Optimizer - [x] optimizeTemplate() tests + [x] optimizeTemplate() tests with data set #0 + [x] optimizeTemplate() tests with data set #1 + [x] optimizeTemplate() tests with data set #2 s9e\TextFormatter\Tests\Configurator\RendererGenerators\XSLT [x] Returns an instance of Renderer @@ -2848,7 +7142,7 @@ s9e\TextFormatter\Tests\Utils\Http\Clients\Cached [x] Settings from the proxied client are copied [x] Settings from the caching client are copied to the proxied client [x] Can work without a cache dir - [ ] Works with a cache + [x] Works with a cache [x] Uses gzip by default if ext/zlib is availble [x] Sends custom headers [x] post() sends the request body if set @@ -2888,11 +7182,43 @@ s9e\TextFormatter\Utils\XPath [x] export(new stdClass) throws an exception s9e\TextFormatter\Tests\Utils - [x] encodeUnicodeSupplementaryCharacters() tests - [x] getAttributeValues() tests - [x] removeFormatting() tests - [x] removeTag() tests - [x] replaceAttributes() tests + [x] encodeUnicodeSupplementaryCharacters() tests with data set #0 + [x] getAttributeValues() tests with data set #0 + [x] getAttributeValues() tests with data set #1 + [x] getAttributeValues() tests with data set #2 + [x] getAttributeValues() tests with data set #3 + [x] getAttributeValues() tests with data set #4 + [x] getAttributeValues() tests with data set #5 + [x] getAttributeValues() tests with data set #6 + [x] getAttributeValues() tests with data set #7 + [x] removeFormatting() tests with data set #0 + [x] removeFormatting() tests with data set #1 + [x] removeFormatting() tests with data set #2 + [x] removeFormatting() tests with data set #3 + [x] removeFormatting() tests with data set #4 + [x] removeFormatting() tests with data set #5 + [x] removeTag() tests with data set #0 + [x] removeTag() tests with data set #1 + [x] removeTag() tests with data set #2 + [x] removeTag() tests with data set #3 + [x] removeTag() tests with data set #4 + [x] removeTag() tests with data set #5 + [x] removeTag() tests with data set #6 + [x] removeTag() tests with data set #7 + [x] removeTag() tests with data set #8 + [x] removeTag() tests with data set #9 + [x] replaceAttributes() tests with data set #0 + [x] replaceAttributes() tests with data set #1 + [x] replaceAttributes() tests with data set #2 + [x] replaceAttributes() tests with data set #3 + [x] replaceAttributes() tests with data set #4 + [x] replaceAttributes() tests with data set #5 + [x] replaceAttributes() tests with data set #6 + [x] replaceAttributes() tests with data set #7 + [x] replaceAttributes() tests with data set #8 + [x] replaceAttributes() tests with data set #9 + [x] replaceAttributes() tests with data set #10 + [x] replaceAttributes() tests with data set #11 s9e\TextFormatter\Tests\Bundle [x] parse() creates a parser, parses the input and returns the output @@ -2919,8 +7245,32 @@ s9e\TextFormatter\Tests\Bundles\Fatdown [x] getRenderer() returns an instance of s9e\TextFormatter\Renderer [x] getRenderer() returns a new instance of s9e\TextFormatter\Renderer [x] The renderer can be un/serialized - [x] Rendering tests (Quick enabled) - [x] Rendering tests (Quick disabled) + [x] Rendering tests (Quick enabled) with data set #0 + [x] Rendering tests (Quick enabled) with data set #1 + [x] Rendering tests (Quick enabled) with data set #2 + [x] Rendering tests (Quick enabled) with data set #3 + [x] Rendering tests (Quick enabled) with data set #4 + [x] Rendering tests (Quick enabled) with data set #5 + [x] Rendering tests (Quick enabled) with data set #6 + [x] Rendering tests (Quick enabled) with data set #7 + [x] Rendering tests (Quick enabled) with data set #8 + [x] Rendering tests (Quick enabled) with data set #9 + [x] Rendering tests (Quick enabled) with data set #10 + [x] Rendering tests (Quick enabled) with data set #11 + [x] Rendering tests (Quick enabled) with data set #12 + [x] Rendering tests (Quick disabled) with data set #0 + [x] Rendering tests (Quick disabled) with data set #1 + [x] Rendering tests (Quick disabled) with data set #2 + [x] Rendering tests (Quick disabled) with data set #3 + [x] Rendering tests (Quick disabled) with data set #4 + [x] Rendering tests (Quick disabled) with data set #5 + [x] Rendering tests (Quick disabled) with data set #6 + [x] Rendering tests (Quick disabled) with data set #7 + [x] Rendering tests (Quick disabled) with data set #8 + [x] Rendering tests (Quick disabled) with data set #9 + [x] Rendering tests (Quick disabled) with data set #10 + [x] Rendering tests (Quick disabled) with data set #11 + [x] Rendering tests (Quick disabled) with data set #12 s9e\TextFormatter\Tests\Bundles\Forum [x] getCachedParser() returns an instance of s9e\TextFormatter\Parser @@ -2932,8 +7282,64 @@ s9e\TextFormatter\Tests\Bundles\Forum [x] getRenderer() returns an instance of s9e\TextFormatter\Renderer [x] getRenderer() returns a new instance of s9e\TextFormatter\Renderer [x] The renderer can be un/serialized - [x] Rendering tests (Quick enabled) - [x] Rendering tests (Quick disabled) + [x] Rendering tests (Quick enabled) with data set #0 + [x] Rendering tests (Quick enabled) with data set #1 + [x] Rendering tests (Quick enabled) with data set #2 + [x] Rendering tests (Quick enabled) with data set #3 + [x] Rendering tests (Quick enabled) with data set #4 + [x] Rendering tests (Quick enabled) with data set #5 + [x] Rendering tests (Quick enabled) with data set #6 + [x] Rendering tests (Quick enabled) with data set #7 + [x] Rendering tests (Quick enabled) with data set #8 + [x] Rendering tests (Quick enabled) with data set #9 + [x] Rendering tests (Quick enabled) with data set #10 + [x] Rendering tests (Quick enabled) with data set #11 + [x] Rendering tests (Quick enabled) with data set #12 + [x] Rendering tests (Quick enabled) with data set #13 + [x] Rendering tests (Quick enabled) with data set #14 + [x] Rendering tests (Quick enabled) with data set #15 + [x] Rendering tests (Quick enabled) with data set #16 + [x] Rendering tests (Quick enabled) with data set #17 + [x] Rendering tests (Quick enabled) with data set #18 + [x] Rendering tests (Quick enabled) with data set #19 + [x] Rendering tests (Quick enabled) with data set #20 + [x] Rendering tests (Quick enabled) with data set #21 + [x] Rendering tests (Quick enabled) with data set #22 + [x] Rendering tests (Quick enabled) with data set #23 + [x] Rendering tests (Quick enabled) with data set #24 + [x] Rendering tests (Quick enabled) with data set #25 + [x] Rendering tests (Quick enabled) with data set #26 + [x] Rendering tests (Quick enabled) with data set #27 + [x] Rendering tests (Quick enabled) with data set #28 + [x] Rendering tests (Quick disabled) with data set #0 + [x] Rendering tests (Quick disabled) with data set #1 + [x] Rendering tests (Quick disabled) with data set #2 + [x] Rendering tests (Quick disabled) with data set #3 + [x] Rendering tests (Quick disabled) with data set #4 + [x] Rendering tests (Quick disabled) with data set #5 + [x] Rendering tests (Quick disabled) with data set #6 + [x] Rendering tests (Quick disabled) with data set #7 + [x] Rendering tests (Quick disabled) with data set #8 + [x] Rendering tests (Quick disabled) with data set #9 + [x] Rendering tests (Quick disabled) with data set #10 + [x] Rendering tests (Quick disabled) with data set #11 + [x] Rendering tests (Quick disabled) with data set #12 + [x] Rendering tests (Quick disabled) with data set #13 + [x] Rendering tests (Quick disabled) with data set #14 + [x] Rendering tests (Quick disabled) with data set #15 + [x] Rendering tests (Quick disabled) with data set #16 + [x] Rendering tests (Quick disabled) with data set #17 + [x] Rendering tests (Quick disabled) with data set #18 + [x] Rendering tests (Quick disabled) with data set #19 + [x] Rendering tests (Quick disabled) with data set #20 + [x] Rendering tests (Quick disabled) with data set #21 + [x] Rendering tests (Quick disabled) with data set #22 + [x] Rendering tests (Quick disabled) with data set #23 + [x] Rendering tests (Quick disabled) with data set #24 + [x] Rendering tests (Quick disabled) with data set #25 + [x] Rendering tests (Quick disabled) with data set #26 + [x] Rendering tests (Quick disabled) with data set #27 + [x] Rendering tests (Quick disabled) with data set #28 s9e\TextFormatter\Tests\Bundles\MediaPack [x] getCachedParser() returns an instance of s9e\TextFormatter\Parser @@ -2945,6 +7351,8 @@ s9e\TextFormatter\Tests\Bundles\MediaPack [x] getRenderer() returns an instance of s9e\TextFormatter\Renderer [x] getRenderer() returns a new instance of s9e\TextFormatter\Renderer [x] The renderer can be un/serialized - [x] Rendering tests (Quick enabled) - [x] Rendering tests (Quick disabled) + [x] Rendering tests (Quick enabled) with data set #0 + [x] Rendering tests (Quick enabled) with data set #1 + [x] Rendering tests (Quick disabled) with data set #0 + [x] Rendering tests (Quick disabled) with data set #1 diff --git a/scripts/build/release.sh b/scripts/build/release.sh index 164aecbefe..b0408d7a13 100755 --- a/scripts/build/release.sh +++ b/scripts/build/release.sh @@ -22,8 +22,8 @@ mv /tmp/CHANGELOG.md CHANGELOG.md git add composer.json CHANGELOG.md && \ git commit -S --no-verify -m"Release $new_version [ci skip]" && \ -./scripts/build/syncBranches.sh && \ -git checkout release/php5.4 && \ +#./scripts/build/syncBranches.sh && \ +#git checkout release/php5.4 && \ git tag -s -m "$new_version" "$new_version" && \ git push origin "$new_version" && \ git checkout master && \ diff --git a/scripts/travis/installComposer.sh b/scripts/travis/installComposer.sh index a97162a103..61421afc15 100755 --- a/scripts/travis/installComposer.sh +++ b/scripts/travis/installComposer.sh @@ -3,15 +3,9 @@ cd $(dirname "$0") cd ../.. -if [ "$TRAVIS_PHP_VERSION" = '5.4' ] -then - composer remove --dev --no-interaction --ignore-platform-reqs s9e/regexp-builder - composer require --dev --no-interaction "php:^5.4" -fi - if [ -n "$COVERAGE" ] then - composer require --no-interaction satooshi/php-coveralls + composer require --no-interaction php-coveralls/php-coveralls +else + composer install --no-interaction fi - -composer install --no-interaction \ No newline at end of file diff --git a/scripts/travis/setup.sh b/scripts/travis/setup.sh index d791ac4cce..c79d4bc5d4 100755 --- a/scripts/travis/setup.sh +++ b/scripts/travis/setup.sh @@ -26,12 +26,5 @@ mkdir ../../tests/.cache wait -# Prepare the files as for a release branch -../build/prepareFiles.sh - -# Start a local webserver for the Http helper's tests -if [ "$TRAVIS_PHP_VERSION" != '5.3.3' ] -then - echo "Starting webserver" - php -S localhost:8000 -d "always_populate_raw_post_data=-1" -t ../../tests 2>/dev/null & -fi +echo "Starting webserver" +php -S localhost:8000 -d "always_populate_raw_post_data=-1" -t ../../tests 2>/dev/null & \ No newline at end of file diff --git a/scripts/updateTests.php b/scripts/updateTests.php new file mode 100755 index 0000000000..9df23dd597 --- /dev/null +++ b/scripts/updateTests.php @@ -0,0 +1,85 @@ +#!/usr/bin/php +expectExceptionMessage(" . quote($m[1]) . ');'; + }, + $php + ); + $php = preg_replace_callback( + '(^\\s+\\*\\s+@expectedException\\s+(\\S++)(?: (\\N++))?\\n([^{]++\\{))m', + function ($m) + { + $php = $m[3] . "\n\t\t\$this->expectException(" . quote($m[1]) . ');'; + if (!empty($m[2])) + { + $php .= "\n\t\t\$this->expectExceptionMessage(" . quote($m[2]) . ');'; + } + + return $php; + }, + $php + ); + + return $php; +} + +function quote($str) +{ + $single = "'" . strtr($str, ['\\' => '\\\\', "'" => "\\'"]) . "'"; + $double = '"' . strtr($str, ['\\' => '\\\\', '"' => '\\"', '$' => '\\$']) . '"'; + + return (strlen($double) < strlen($single)) ? $double : $single; +} + +patchDir(__DIR__ . '/../tests'); + +die("Done.\n"); \ No newline at end of file diff --git a/tests/BundleTest.php b/tests/BundleTest.php index 99fd9d74b1..f1e0b33be6 100644 --- a/tests/BundleTest.php +++ b/tests/BundleTest.php @@ -10,7 +10,7 @@ */ class BundleTest extends Test { - public function setUp() + protected function setUp(): void { DummyBundle::_reset($this); } diff --git a/tests/Bundles/AbstractTest.php b/tests/Bundles/AbstractTest.php index 836d943d28..c83b1306e3 100644 --- a/tests/Bundles/AbstractTest.php +++ b/tests/Bundles/AbstractTest.php @@ -23,7 +23,7 @@ protected static function getClassName() return 's9e\\TextFormatter\\Bundles\\' . $bundleName; } - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $className = static::getClassName(); $className::reset(); @@ -32,7 +32,7 @@ public static function setUpBeforeClass() $className::getCachedParser()->registeredVars['cacheDir'] = __DIR__ . '/../.cache'; } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { $className = static::getClassName(); $className::reset(); diff --git a/tests/Configurator/BundleGeneratorTest.php b/tests/Configurator/BundleGeneratorTest.php index 1ef2cffe9c..b0518dff97 100644 --- a/tests/Configurator/BundleGeneratorTest.php +++ b/tests/Configurator/BundleGeneratorTest.php @@ -15,7 +15,7 @@ class BundleGeneratorTest extends Test */ public function testGenerate() { - $this->assertContains( + $this->assertStringContainsString( 'class MyBundle', $this->configurator->bundleGenerator->generate('MyBundle') ); @@ -28,8 +28,8 @@ public function testGenerateNamespace() { $php = $this->configurator->bundleGenerator->generate('My\\Bundle'); - $this->assertContains('namespace My;', $php); - $this->assertContains('class Bundle', $php); + $this->assertStringContainsString('namespace My;', $php); + $this->assertStringContainsString('class Bundle', $php); } /** @@ -47,7 +47,7 @@ public function testCustomSerializer() $this->configurator->bundleGenerator->serializer = [$mock, 'serialize']; $php = $this->configurator->bundleGenerator->generate('MyBundle'); - $this->assertContains('foobar', $php); + $this->assertStringContainsString('foobar', $php); } /** @@ -58,7 +58,7 @@ public function testCustomUnserializer() $this->configurator->bundleGenerator->unserializer = 'myunserializer'; $php = $this->configurator->bundleGenerator->generate('MyBundle'); - $this->assertContains('myunserializer', $php); + $this->assertStringContainsString('myunserializer', $php); } /** @@ -82,7 +82,7 @@ public function testAutoInclude() include " . var_export($filepath, true) . "; }"; - $this->assertContains($expected, $bundle); + $this->assertStringContainsString($expected, $bundle); } /** @@ -106,7 +106,7 @@ public function testAutoIncludeFalse() include " . var_export($filepath, true) . "; }"; - $this->assertNotContains($expected, $bundle); + $this->assertStringNotContainsString($expected, $bundle); } /** @@ -124,13 +124,13 @@ public function testEvents() { $php = $this->configurator->bundleGenerator->generate('Foo', [$event => 'trim']); - $this->assertContains('public static $' . $event . " = 'trim';", $php); + $this->assertStringContainsString('public static $' . $event . " = 'trim';", $php); foreach ($events as $notEvent) { if ($notEvent !== $event) { - $this->assertNotContains($notEvent, $php); + $this->assertStringNotContainsString($notEvent, $php); } } } @@ -141,7 +141,7 @@ public function testEvents() */ public function testParserSetup() { - $this->assertContains( + $this->assertStringContainsString( '\\foo\\bar\\baz($parser);', $this->configurator->bundleGenerator->generate( 'Foo', @@ -155,7 +155,7 @@ public function testParserSetup() */ public function testRendererSetup() { - $this->assertContains( + $this->assertStringContainsString( '\\foo\\bar\\baz($renderer);', $this->configurator->bundleGenerator->generate( 'Foo', diff --git a/tests/Configurator/Collections/AttributeCollectionTest.php b/tests/Configurator/Collections/AttributeCollectionTest.php index 087874b85e..713e1319b6 100644 --- a/tests/Configurator/Collections/AttributeCollectionTest.php +++ b/tests/Configurator/Collections/AttributeCollectionTest.php @@ -95,11 +95,12 @@ public function testDuplicateDefault() /** * @testdox Throws an meaningful exception message when creating an Attribute that already exists - * @expectedException RuntimeException - * @expectedExceptionMessage Attribute 'x' already exists */ public function testDuplicateError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Attribute 'x' already exists"); + $collection = new AttributeCollection; $collection->onDuplicate('error'); $collection->add('x'); @@ -108,11 +109,12 @@ public function testDuplicateError() /** * @testdox Throws an exception when accessing an Attribute that does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Attribute 'x' does not exist */ public function testNotExist() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Attribute 'x' does not exist"); + $collection = new AttributeCollection; $collection->get('x'); } diff --git a/tests/Configurator/Collections/AttributeFilterChainTest.php b/tests/Configurator/Collections/AttributeFilterChainTest.php index 90037fb3c2..64e87a02b7 100644 --- a/tests/Configurator/Collections/AttributeFilterChainTest.php +++ b/tests/Configurator/Collections/AttributeFilterChainTest.php @@ -17,44 +17,48 @@ public function doNothing() {} /** * @testdox append() throws an InvalidArgumentException on invalid callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Filter '*invalid*' is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\AttributeFilter */ public function testAppendInvalidCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Filter '*invalid*' is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\AttributeFilter"); + $filterChain = new AttributeFilterChain; $filterChain->append('*invalid*'); } /** * @testdox prepend() throws an InvalidArgumentException on invalid callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Filter '*invalid*' is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\AttributeFilter */ public function testPrependInvalidCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Filter '*invalid*' is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\AttributeFilter"); + $filterChain = new AttributeFilterChain; $filterChain->prepend('*invalid*'); } /** * @testdox append() throws an InvalidArgumentException on uncallable callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\AttributeFilter */ public function testAppendUncallableCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\AttributeFilter'); + $filterChain = new AttributeFilterChain; $filterChain->append([__CLASS__, 'privateMethod']); } /** * @testdox prepend() throws an InvalidArgumentException on uncallable callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\AttributeFilter */ public function testPrependUncallableCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\AttributeFilter'); + $filterChain = new AttributeFilterChain; $filterChain->prepend([__CLASS__, 'privateMethod']); } diff --git a/tests/Configurator/Collections/AttributeFilterCollectionTest.php b/tests/Configurator/Collections/AttributeFilterCollectionTest.php index 97f33cab3a..8bc87c26c6 100644 --- a/tests/Configurator/Collections/AttributeFilterCollectionTest.php +++ b/tests/Configurator/Collections/AttributeFilterCollectionTest.php @@ -52,11 +52,12 @@ public function testValidCallback() /** * @testdox set() throws an exception if value is not a valid callback or an instance of AttributeFilter - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a valid callback or an instance of s9e\TextFormatter\Configurator\Items\AttributeFilter */ public function testInvalidValue() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a valid callback or an instance of s9e\\TextFormatter\\Configurator\\Items\\AttributeFilter'); + $collection = new AttributeFilterCollection; $collection->set('#foo', '#foo'); } @@ -117,22 +118,24 @@ public function testGetNoOverwriteCallbacks() /** * @testdox get() throws an exception if the filter name is neither callable not starts with # and is entirely composed of letters and digits - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid filter name */ public function testInvalidKey() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid filter name'); + $collection = new AttributeFilterCollection; $collection->get('../foo'); } /** * @testdox get() throws an exception on unknown filter - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Unknown attribute filter */ public function testGetUnknown() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Unknown attribute filter'); + $collection = new AttributeFilterCollection; $collection->get('#foo'); } diff --git a/tests/Configurator/Collections/AttributePreprocessorCollectionTest.php b/tests/Configurator/Collections/AttributePreprocessorCollectionTest.php index f5f21efb4e..f158069383 100644 --- a/tests/Configurator/Collections/AttributePreprocessorCollectionTest.php +++ b/tests/Configurator/Collections/AttributePreprocessorCollectionTest.php @@ -53,6 +53,7 @@ public function testGetConfig() /** * @testdox Is iterable with foreach + * @doesNotPerformAssertions */ public function testIterable() { @@ -161,20 +162,22 @@ public function testMergeInstance() /** * @testdox merge() throws an exception when passed a non-array, non-AttributProcessorCollection - * @expectedException InvalidArgumentException */ public function testMergeInvalidArgument() { + $this->expectException('InvalidArgumentException'); + $collection = new AttributePreprocessorCollection; $collection->merge('/foo/'); } /** * @testdox merge() throws an exception when passed a one-dimensional array - * @expectedException InvalidArgumentException */ public function testMergeInvalidArray() { + $this->expectException('InvalidArgumentException'); + $collection = new AttributePreprocessorCollection; $collection->merge(['/foo/']); } diff --git a/tests/Configurator/Collections/HostnameListTest.php b/tests/Configurator/Collections/HostnameListTest.php index 7cea1169fe..c8d0f2d8d1 100644 --- a/tests/Configurator/Collections/HostnameListTest.php +++ b/tests/Configurator/Collections/HostnameListTest.php @@ -58,7 +58,7 @@ public function testIDNsArePunycoded() $list = new HostnameList; $list->add('pаypal.com'); - $this->assertContains( + $this->assertStringContainsString( 'xn--pypal-4ve\\.com', (string) $list->asConfig() ); diff --git a/tests/Configurator/Collections/MinifierListTest.php b/tests/Configurator/Collections/MinifierListTest.php index 6a8642fb89..1a936ecef2 100644 --- a/tests/Configurator/Collections/MinifierListTest.php +++ b/tests/Configurator/Collections/MinifierListTest.php @@ -25,20 +25,24 @@ public function testAddNormalizeValueInstanceOf() /** * @testdox add() throws an exception when the value is neither a Minifier instance nor a known minifier - * @expectedException InvalidArgumentException Nope */ public function testAddNormalizeValueFail() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Nope'); + $collection = new MinifierList; $collection->add('Nope'); } /** * @testdox add() throws an exception when the value is a boolean - * @expectedException InvalidArgumentException false */ public function testAddNormalizeValueBool() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('false'); + $collection = new MinifierList; $collection->add(false); } diff --git a/tests/Configurator/Collections/NormalizedCollectionTest.php b/tests/Configurator/Collections/NormalizedCollectionTest.php index 65ee8ce00d..35b4f66e00 100644 --- a/tests/Configurator/Collections/NormalizedCollectionTest.php +++ b/tests/Configurator/Collections/NormalizedCollectionTest.php @@ -75,6 +75,7 @@ public function testAddCallsNormalizeValue() /** * @testdox add() can be called without a second parameter + * @doesNotPerformAssertions */ public function testAddWithNoValue() { @@ -84,11 +85,12 @@ public function testAddWithNoValue() /** * @testdox add() throws a RuntimeException if the item already exists - * @expectedException RuntimeException - * @expectedExceptionMessage Item 'foobar' already exists */ public function testAddDuplicate() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Item 'foobar' already exists"); + $collection = new NormalizedCollection; $collection->add('foobar'); @@ -162,11 +164,12 @@ public function testGetCallsNormalizeKey() /** * @testdox get() throws a RuntimeException if the item does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Item 'foobar' does not exist */ public function testGetInexistent() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Item 'foobar' does not exist"); + $collection = new NormalizedCollection; $collection->get('foobar'); @@ -321,6 +324,7 @@ public function testEqualityIndexOf() /** * @testdox onDuplicate() can be called with no value + * @doesNotPerformAssertions */ public function testOnDuplicateNoValue() { @@ -348,11 +352,12 @@ public function testOnDuplicateReturn() /** * @testdox onDuplicate('unknownvalue') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid onDuplicate action */ public function testOnDuplicateInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid onDuplicate action'); + $collection = new NormalizedCollection; $collection->onDuplicate('unknownvalue'); } @@ -400,11 +405,12 @@ public function testOnDuplicateReplace() /** * @testdox add() throws a RuntimeException on duplicate elements if the onDuplicate action is "error" - * @expectedException RuntimeException - * @expectedExceptionMessage Item 'foo' already exists */ public function testOnDuplicateError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Item 'foo' already exists"); + $collection = new NormalizedCollection; $collection->onDuplicate('error'); diff --git a/tests/Configurator/Collections/NormalizedListTest.php b/tests/Configurator/Collections/NormalizedListTest.php index 6e0d42ea4c..7d9290b471 100644 --- a/tests/Configurator/Collections/NormalizedListTest.php +++ b/tests/Configurator/Collections/NormalizedListTest.php @@ -12,7 +12,7 @@ class NormalizedListTest extends Test { public $normalizedList; - public function setUp() + protected function setUp(): void { $this->normalizedList = new NormalizedList; } @@ -107,11 +107,12 @@ public function testNegativeOffsets() /** * @testdox insert() throws an exception if the offset is out of bounds - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid offset '3' */ public function testInsertInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid offset '3'"); + $this->normalizedList->insert(3, 1); } @@ -141,21 +142,23 @@ public function testArrayAccessAddNew() /** * @testdox $normalizedList[1] = 'foo' throws an InvalidArgumentException if the list is empty - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid offset '1' */ public function testArrayAccessInvalidSet() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid offset '1'"); + $this->normalizedList[1] = 'foo'; } /** * @testdox $normalizedList['foo'] = 'bar' throws an InvalidArgumentException - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid offset 'foo' */ public function testArrayAccessInvalidKey() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid offset 'foo'"); + $this->normalizedList['foo'] = 'bar'; } diff --git a/tests/Configurator/Collections/PluginCollectionTest.php b/tests/Configurator/Collections/PluginCollectionTest.php index ad9b874072..3e0f1b34ef 100644 --- a/tests/Configurator/Collections/PluginCollectionTest.php +++ b/tests/Configurator/Collections/PluginCollectionTest.php @@ -26,11 +26,12 @@ public function testLoad() /** * @testdox load() throws an exception if the stock plugin does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Class 's9e\TextFormatter\Plugins\Unknown\Configurator */ public function testLoadUnknown() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Class 's9e\\TextFormatter\\Plugins\\Unknown\\Configurator"); + $this->configurator->plugins->load('Unknown'); } @@ -62,32 +63,35 @@ public function testAddClassName() /** * @testdox Throws an exception if the value is neither an instance of or the name of a class that implements ConfiguratorBase - * @expectedException InvalidArgumentException - * @expectedExceptionMessage PluginCollection::normalizeValue() expects a class name or an object that implements s9e\TextFormatter\Plugins\ConfiguratorBase */ public function testInvalidValue() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('PluginCollection::normalizeValue() expects a class name or an object that implements s9e\\TextFormatter\\Plugins\\ConfiguratorBase'); + $this->configurator->plugins->add('Dummy', new \stdClass); } /** * @testdox Throws an exception if the plugin name is not entirely composed of letters, numbers and underscores - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid plugin name 'Dum-my' */ public function testInvalidNameChars() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid plugin name 'Dum-my'"); + $plugin = new DummyPluginConfigurator($this->configurator); $this->configurator->plugins->add('Dum-my', $plugin); } /** * @testdox Throws an exception if the plugin name does not start with an uppercase letter - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid plugin name 'dummy' */ public function testInvalidInitial() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid plugin name 'dummy'"); + $plugin = new DummyPluginConfigurator($this->configurator); $this->configurator->plugins->add('dummy', $plugin); } diff --git a/tests/Configurator/Collections/RulesGeneratorListTest.php b/tests/Configurator/Collections/RulesGeneratorListTest.php index 28c2abe72f..af2062eb37 100644 --- a/tests/Configurator/Collections/RulesGeneratorListTest.php +++ b/tests/Configurator/Collections/RulesGeneratorListTest.php @@ -55,11 +55,12 @@ public function testAddInstanceTargeted() /** * @testdox add() throws an exception on invalid values - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid rules generator 'foo' */ public function testAddInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid rules generator 'foo'"); + $collection = new RulesGeneratorList; $collection->add('foo'); } diff --git a/tests/Configurator/Collections/RulesetTest.php b/tests/Configurator/Collections/RulesetTest.php index d1c9d3e579..9667c462ab 100644 --- a/tests/Configurator/Collections/RulesetTest.php +++ b/tests/Configurator/Collections/RulesetTest.php @@ -14,11 +14,12 @@ class RulesetTest extends Test { /** * @testdox Setting an unknown rule throws an exception - * @expectedException BadMethodCallException - * @expectedExceptionMessage Undefined method 'bar' */ public function testUnknownRule() { + $this->expectException('BadMethodCallException'); + $this->expectExceptionMessage("Undefined method 'bar'"); + $ruleset = new Ruleset; $ruleset->bar(); } @@ -50,11 +51,12 @@ public function testOffsetGet() /** * @testdox Trying to set rules via array access throws a RuntimeException - * @expectedException RuntimeException - * @expectedExceptionMessage Not supported */ public function testOffsetSet() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Not supported'); + $ruleset = new Ruleset; $ruleset['allowChild'] = 'FOO'; } @@ -182,11 +184,12 @@ public function testRemoveNormalizesTagName() /** * @testdox allowChild() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testAllowChildInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->allowChild('foo#bar'); } @@ -219,11 +222,12 @@ public function testAllowChildChainable() /** * @testdox allowDescendant() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testAllowDescendantInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->allowDescendant('foo#bar'); } @@ -256,6 +260,7 @@ public function testAllowDescendantChainable() /** * @testdox autoClose() accepts a boolean + * @doesNotPerformAssertions */ public function testAutoCloseValid() { @@ -265,11 +270,12 @@ public function testAutoCloseValid() /** * @testdox autoClose() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage autoClose() expects a boolean */ public function testAutoCloseInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('autoClose() expects a boolean'); + $ruleset = new Ruleset; $ruleset->autoClose('foo'); } @@ -285,6 +291,7 @@ public function testAutoCloseChainable() /** * @testdox autoReopen() accepts a boolean + * @doesNotPerformAssertions */ public function testAutoReopenValid() { @@ -294,11 +301,12 @@ public function testAutoReopenValid() /** * @testdox autoReopen() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage autoReopen() expects a boolean */ public function testAutoReopenInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('autoReopen() expects a boolean'); + $ruleset = new Ruleset; $ruleset->autoReopen('foo'); } @@ -314,6 +322,7 @@ public function testAutoReopenChainable() /** * @testdox breakParagraph() accepts a boolean + * @doesNotPerformAssertions */ public function testBreakParagraphValid() { @@ -323,11 +332,12 @@ public function testBreakParagraphValid() /** * @testdox breakParagraph() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage breakParagraph() expects a boolean */ public function testBreakParagraphInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('breakParagraph() expects a boolean'); + $ruleset = new Ruleset; $ruleset->breakParagraph('foo'); } @@ -343,11 +353,12 @@ public function testBreakParagraphChainable() /** * @testdox closeAncestor() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testCloseAncestorInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->closeAncestor('foo#bar'); } @@ -398,11 +409,12 @@ public function testCloseParentChainable() /** * @testdox createChild() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testCreateChildInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->createChild('foo#bar'); } @@ -436,6 +448,7 @@ public function testCreateChildChainable() /** * @testdox createParagraphs() accepts a boolean + * @doesNotPerformAssertions */ public function testCreateParagraphsValid() { @@ -445,11 +458,12 @@ public function testCreateParagraphsValid() /** * @testdox createParagraphs() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage createParagraphs() expects a boolean */ public function testCreateParagraphsInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('createParagraphs() expects a boolean'); + $ruleset = new Ruleset; $ruleset->createParagraphs('foo'); } @@ -465,6 +479,7 @@ public function testCreateParagraphsChainable() /** * @testdox ignoreTags() accepts a boolean + * @doesNotPerformAssertions */ public function testIgnoreTagsValid() { @@ -474,11 +489,12 @@ public function testIgnoreTagsValid() /** * @testdox ignoreTags() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage ignoreTags() expects a boolean */ public function testIgnoreTagsInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('ignoreTags() expects a boolean'); + $ruleset = new Ruleset; $ruleset->ignoreTags('foo'); } @@ -494,11 +510,12 @@ public function testIgnoreTagsChainable() /** * @testdox denyChild() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testDenyChildInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->denyChild('foo#bar'); } @@ -532,11 +549,12 @@ public function testDenyChildChainable() /** * @testdox denyDescendant() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testDenyDescendantInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->denyDescendant('foo#bar'); } @@ -570,6 +588,7 @@ public function testDenyDescendantChainable() /** * @testdox disableAutoLineBreaks() accepts a boolean + * @doesNotPerformAssertions */ public function testDisableAutoLineBreaksValid() { @@ -579,11 +598,12 @@ public function testDisableAutoLineBreaksValid() /** * @testdox disableAutoLineBreaks() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage disableAutoLineBreaks() expects a boolean */ public function testDisableAutoLineBreaksInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('disableAutoLineBreaks() expects a boolean'); + $ruleset = new Ruleset; $ruleset->disableAutoLineBreaks('foo'); } @@ -599,6 +619,7 @@ public function testDisableAutoLineBreaksChainable() /** * @testdox enableAutoLineBreaks() accepts a boolean + * @doesNotPerformAssertions */ public function testEnableAutoLineBreaksValid() { @@ -608,11 +629,12 @@ public function testEnableAutoLineBreaksValid() /** * @testdox enableAutoLineBreaks() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage enableAutoLineBreaks() expects a boolean */ public function testEnableAutoLineBreaksInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('enableAutoLineBreaks() expects a boolean'); + $ruleset = new Ruleset; $ruleset->enableAutoLineBreaks('foo'); } @@ -628,11 +650,12 @@ public function testEnableAutoLineBreaksChainable() /** * @testdox fosterParent() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testFosterParentInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->fosterParent('foo#bar'); } @@ -666,6 +689,7 @@ public function testFosterParentChainable() /** * @testdox ignoreText() accepts a boolean + * @doesNotPerformAssertions */ public function testIgnoreTextValid() { @@ -675,11 +699,12 @@ public function testIgnoreTextValid() /** * @testdox ignoreText() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage ignoreText() expects a boolean */ public function testIgnoreTextInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('ignoreText() expects a boolean'); + $ruleset = new Ruleset; $ruleset->ignoreText('foo'); } @@ -695,6 +720,7 @@ public function testIgnoreTextChainable() /** * @testdox isTransparent() accepts a boolean + * @doesNotPerformAssertions */ public function testIsTransparentValid() { @@ -704,11 +730,12 @@ public function testIsTransparentValid() /** * @testdox isTransparent() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage isTransparent() expects a boolean */ public function testIsTransparentInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('isTransparent() expects a boolean'); + $ruleset = new Ruleset; $ruleset->isTransparent('foo'); } @@ -724,6 +751,7 @@ public function testIsTransparentChainable() /** * @testdox ignoreSurroundingWhitespace() accepts a boolean + * @doesNotPerformAssertions */ public function testIgnoreSurroundingWhitespaceValid() { @@ -733,11 +761,12 @@ public function testIgnoreSurroundingWhitespaceValid() /** * @testdox ignoreSurroundingWhitespace() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage ignoreSurroundingWhitespace() expects a boolean */ public function testIgnoreSurroundingWhitespaceInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('ignoreSurroundingWhitespace() expects a boolean'); + $ruleset = new Ruleset; $ruleset->ignoreSurroundingWhitespace('foo'); } @@ -753,6 +782,7 @@ public function testIgnoreSurroundingWhitespaceChainable() /** * @testdox preventLineBreaks() accepts a boolean + * @doesNotPerformAssertions */ public function testPreventLineBreaksValid() { @@ -762,11 +792,12 @@ public function testPreventLineBreaksValid() /** * @testdox preventLineBreaks() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage preventLineBreaks() expects a boolean */ public function testPreventLineBreaksInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('preventLineBreaks() expects a boolean'); + $ruleset = new Ruleset; $ruleset->preventLineBreaks('foo'); } @@ -782,11 +813,12 @@ public function testPreventLineBreaksChainable() /** * @testdox requireAncestor() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testRequireAncestorInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->requireAncestor('foo#bar'); } @@ -820,11 +852,12 @@ public function testRequireAncestorChainable() /** * @testdox requireParent() throws an exception on invalid tag name - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name 'foo#bar' */ public function testRequireParentInvalidTagName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name 'foo#bar'"); + $ruleset = new Ruleset; $ruleset->requireParent('foo#bar'); } @@ -858,6 +891,7 @@ public function testRequireParentChainable() /** * @testdox suspendAutoLineBreaks() accepts a boolean + * @doesNotPerformAssertions */ public function testSuspendAutoLineBreaksValid() { @@ -867,11 +901,12 @@ public function testSuspendAutoLineBreaksValid() /** * @testdox suspendAutoLineBreaks() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage suspendAutoLineBreaks() expects a boolean */ public function testSuspendAutoLineBreaksInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('suspendAutoLineBreaks() expects a boolean'); + $ruleset = new Ruleset; $ruleset->suspendAutoLineBreaks('foo'); } @@ -887,6 +922,7 @@ public function testSuspendAutoLineBreaksChainable() /** * @testdox trimFirstLine() accepts a boolean + * @doesNotPerformAssertions */ public function testTrimWhitespaceValid() { @@ -896,11 +932,12 @@ public function testTrimWhitespaceValid() /** * @testdox trimFirstLine() throws an exception if its argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage trimFirstLine() expects a boolean */ public function testTrimWhitespaceInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('trimFirstLine() expects a boolean'); + $ruleset = new Ruleset; $ruleset->trimFirstLine('foo'); } @@ -976,11 +1013,12 @@ public function testMergeInstanceOfRulesetIsTransparent() /** * @testdox merge() throws an InvalidArgumentException if its argument is not an array or an instance of Ruleset - * @expectedException InvalidArgumentException - * @expectedExceptionMessage merge() expects an array or an instance of Ruleset */ public function testSetRulesInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('merge() expects an array or an instance of Ruleset'); + $ruleset = new Ruleset; $ruleset->merge(false); } diff --git a/tests/Configurator/Collections/SchemeListTest.php b/tests/Configurator/Collections/SchemeListTest.php index ddd297c431..c81a778153 100644 --- a/tests/Configurator/Collections/SchemeListTest.php +++ b/tests/Configurator/Collections/SchemeListTest.php @@ -59,11 +59,12 @@ public function testAsConfigRegexpMatch() /** * @testdox add('*invalid*') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid scheme name '*invalid*' */ public function testInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid scheme name '*invalid*'"); + $list = new SchemeList; $list->add('*invalid*'); } diff --git a/tests/Configurator/Collections/TagCollectionTest.php b/tests/Configurator/Collections/TagCollectionTest.php index bc3b8f4ee6..0ae7dbf5ab 100644 --- a/tests/Configurator/Collections/TagCollectionTest.php +++ b/tests/Configurator/Collections/TagCollectionTest.php @@ -95,11 +95,12 @@ public function testDuplicateDefault() /** * @testdox Throws an meaningful exception message when creating a Tag that already exists - * @expectedException RuntimeException - * @expectedExceptionMessage Tag 'X' already exists */ public function testDuplicateError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Tag 'X' already exists"); + $collection = new TagCollection; $collection->onDuplicate('error'); $collection->add('X'); @@ -108,11 +109,12 @@ public function testDuplicateError() /** * @testdox Throws an exception when accessing a Tag that does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Tag 'X' does not exist */ public function testNotExist() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Tag 'X' does not exist"); + $collection = new TagCollection; $collection->get('X'); } diff --git a/tests/Configurator/Collections/TagFilterChainTest.php b/tests/Configurator/Collections/TagFilterChainTest.php index ce199cdf73..3d7a11cb8e 100644 --- a/tests/Configurator/Collections/TagFilterChainTest.php +++ b/tests/Configurator/Collections/TagFilterChainTest.php @@ -18,44 +18,48 @@ public function doNothing() {} /** * @testdox append() throws an InvalidArgumentException on invalid callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Filter '*invalid*' is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\TagFilter */ public function testAppendInvalidCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Filter '*invalid*' is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\TagFilter"); + $filterChain = new TagFilterChain; $filterChain->append('*invalid*'); } /** * @testdox prepend() throws an InvalidArgumentException on invalid callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Filter '*invalid*' is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\TagFilter */ public function testPrependInvalidCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Filter '*invalid*' is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\TagFilter"); + $filterChain = new TagFilterChain; $filterChain->prepend('*invalid*'); } /** * @testdox append() throws an InvalidArgumentException on uncallable callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\TagFilter */ public function testAppendUncallableCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\TagFilter'); + $filterChain = new TagFilterChain; $filterChain->append([__CLASS__, 'privateMethod']); } /** * @testdox prepend() throws an InvalidArgumentException on uncallable callbacks - * @expectedException InvalidArgumentException - * @expectedExceptionMessage is neither callable nor an instance of s9e\TextFormatter\Configurator\Items\TagFilter */ public function testPrependUncallableCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('is neither callable nor an instance of s9e\\TextFormatter\\Configurator\\Items\\TagFilter'); + $filterChain = new TagFilterChain; $filterChain->prepend([__CLASS__, 'privateMethod']); } diff --git a/tests/Configurator/Collections/TemplateParameterCollectionTest.php b/tests/Configurator/Collections/TemplateParameterCollectionTest.php index ef0838cd99..00b978bd60 100644 --- a/tests/Configurator/Collections/TemplateParameterCollectionTest.php +++ b/tests/Configurator/Collections/TemplateParameterCollectionTest.php @@ -34,10 +34,11 @@ public function testAdd() /** * @testdox add('foo bar') throws an exception - * @expectedException InvalidArgumentException */ public function testAddInvalid() { + $this->expectException('InvalidArgumentException'); + $collection = new TemplateParameterCollection; $collection->add('foo bar'); } diff --git a/tests/Configurator/Helpers/AVTHelperTest.php b/tests/Configurator/Helpers/AVTHelperTest.php index 8a3a76846d..34d5f49e81 100644 --- a/tests/Configurator/Helpers/AVTHelperTest.php +++ b/tests/Configurator/Helpers/AVTHelperTest.php @@ -127,7 +127,9 @@ public function testSerialize($tokens, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame($expected, AVTHelper::serialize($tokens)); @@ -188,7 +190,9 @@ public function testReplace($xml, $callback, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $dom = new DOMDocument; diff --git a/tests/Configurator/Helpers/ConfigHelperTest.php b/tests/Configurator/Helpers/ConfigHelperTest.php index a23dd7acb1..e5270f827a 100644 --- a/tests/Configurator/Helpers/ConfigHelperTest.php +++ b/tests/Configurator/Helpers/ConfigHelperTest.php @@ -202,11 +202,12 @@ public function testConfigProviderDeep() /** * @testdox toArray() throws an exception for objects in deep arrays that are not Traversable and do not implement ConfigProvider - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot convert an instance of stdClass to array */ public function testInvalidObject() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Cannot convert an instance of stdClass to array'); + ConfigHelper::toArray([new stdClass]); } diff --git a/tests/Configurator/Helpers/ContextSafenessTest.php b/tests/Configurator/Helpers/ContextSafenessTest.php index 1776861147..eb2ccbe4d7 100644 --- a/tests/Configurator/Helpers/ContextSafenessTest.php +++ b/tests/Configurator/Helpers/ContextSafenessTest.php @@ -16,11 +16,11 @@ class ContextSafenessTest extends Test public function testGetDisallowedCharactersAsURL () { $disallowedChars = ContextSafeness::getDisallowedCharactersAsURL(); - $this->assertInternalType('array', $disallowedChars); + $this->assertIsArray($disallowedChars); foreach ($disallowedChars as $char) { - $this->assertInternalType('string', $char); + $this->assertIsString($char); } } @@ -30,11 +30,11 @@ public function testGetDisallowedCharactersAsURL () public function testGetDisallowedCharactersInCSS () { $disallowedChars = ContextSafeness::getDisallowedCharactersInCSS(); - $this->assertInternalType('array', $disallowedChars); + $this->assertIsArray($disallowedChars); foreach ($disallowedChars as $char) { - $this->assertInternalType('string', $char); + $this->assertIsString($char); } } @@ -44,11 +44,11 @@ public function testGetDisallowedCharactersInCSS () public function testGetDisallowedCharactersInJS () { $disallowedChars = ContextSafeness::getDisallowedCharactersInJS(); - $this->assertInternalType('array', $disallowedChars); + $this->assertIsArray($disallowedChars); foreach ($disallowedChars as $char) { - $this->assertInternalType('string', $char); + $this->assertIsString($char); } } } \ No newline at end of file diff --git a/tests/Configurator/Helpers/RegexpBuilderTest.php b/tests/Configurator/Helpers/RegexpBuilderTest.php index 859a68eafc..8e33cdd124 100644 --- a/tests/Configurator/Helpers/RegexpBuilderTest.php +++ b/tests/Configurator/Helpers/RegexpBuilderTest.php @@ -1008,12 +1008,13 @@ protected function fromListTestCase($k) } /** - * @expectedException RuntimeException - * @expectedExceptionMessage Invalid UTF-8 string * @testdox fromList() throws a RuntimeException if any word is not legal UTF-8 */ public function testUTF8Exception() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Invalid UTF-8 string'); + RegexpBuilder::fromList(["\xff\xff"]); } diff --git a/tests/Configurator/Helpers/RegexpParserTest.php b/tests/Configurator/Helpers/RegexpParserTest.php index 90d6229aca..4b6bec9815 100644 --- a/tests/Configurator/Helpers/RegexpParserTest.php +++ b/tests/Configurator/Helpers/RegexpParserTest.php @@ -30,11 +30,12 @@ public function testCanParseRegexps1() /** * @testdox parse() throws a RuntimeException if delimiters can't be parsed - * @expectedException RuntimeException - * @expectedExceptionMessage Could not parse regexp delimiters */ public function testInvalidRegexpsException1() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Could not parse regexp delimiters'); + RegexpParser::parse('#foo/iD'); } @@ -162,11 +163,12 @@ public function testCanParseRegexps5() /** * @testdox parse() throws a RuntimeException if a character class is not properly closed - * @expectedException RuntimeException - * @expectedExceptionMessage Could not find matching bracket from pos 0 */ public function testInvalidRegexpsException2() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Could not find matching bracket from pos 0'); + RegexpParser::parse('#[a-z)#'); } @@ -542,31 +544,34 @@ public function testCanParseRegexps15() /** * @testdox parse() throws a RuntimeException if an unmatched right parenthesis is found - * @expectedException RuntimeException - * @expectedExceptionMessage Could not find matching pattern start for right parenthesis at pos 3 */ public function testInvalidRegexpsException4() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Could not find matching pattern start for right parenthesis at pos 3'); + RegexpParser::parse('#a-z)#'); } /** * @testdox parse() throws a RuntimeException if an unmatched left parenthesis is found - * @expectedException RuntimeException - * @expectedExceptionMessage Could not find matching pattern end for left parenthesis at pos 0 */ public function testInvalidRegexpsException5() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Could not find matching pattern end for left parenthesis at pos 0'); + RegexpParser::parse('#(a-z#'); } /** * @testdox parse() throws a RuntimeException on unsupported subpatterns - * @expectedException RuntimeException - * @expectedExceptionMessage Unsupported subpattern type at pos 0 */ public function testInvalidRegexpsUnsupportedSubpatternException() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Unsupported subpattern type at pos 0'); + RegexpParser::parse('#(?(condition)yes-pattern|no-pattern)#'); } diff --git a/tests/Configurator/Helpers/TemplateHelperTest.php b/tests/Configurator/Helpers/TemplateHelperTest.php index bbe2f6d80b..1f821a0eb9 100644 --- a/tests/Configurator/Helpers/TemplateHelperTest.php +++ b/tests/Configurator/Helpers/TemplateHelperTest.php @@ -31,7 +31,9 @@ public function testGetParametersFromXSL($xsl, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame( diff --git a/tests/Configurator/Helpers/TemplateLoaderTest.php b/tests/Configurator/Helpers/TemplateLoaderTest.php index b30c8236e0..9e0bd59ac7 100644 --- a/tests/Configurator/Helpers/TemplateLoaderTest.php +++ b/tests/Configurator/Helpers/TemplateLoaderTest.php @@ -20,7 +20,7 @@ public function testLoadText() $dom = TemplateLoader::load($text); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains($text, $dom->saveXML()); + $this->assertStringContainsString($text, $dom->saveXML()); } /** @@ -43,7 +43,7 @@ public function testLoadXSL() $dom = TemplateLoader::load($xsl); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains($xsl, $dom->saveXML()); + $this->assertStringContainsString($xsl, $dom->saveXML()); } /** @@ -99,7 +99,7 @@ public function testLoadHTML() $dom = TemplateLoader::load($html); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains($xml, $dom->saveXML()); + $this->assertStringContainsString($xml, $dom->saveXML()); } /** @@ -113,7 +113,7 @@ public function testLoadHTMLSpecialChars() $dom = TemplateLoader::load($html); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains($xml, $dom->saveXML()); + $this->assertStringContainsString($xml, $dom->saveXML()); } /** @@ -197,9 +197,9 @@ public function testLoadAttributeInvalidNamespaceXML() $xml = $dom->saveXML($dom->documentElement->firstChild); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains('title=""', $xml); - $this->assertNotContains('foo:bar:baz', $xml); - $this->assertNotContains('x:y:z', $xml); + $this->assertStringContainsString('title=""', $xml); + $this->assertStringNotContainsString('foo:bar:baz', $xml); + $this->assertStringNotContainsString('x:y:z', $xml); } /** @@ -213,9 +213,9 @@ public function testLoadAttributeInvalidNamespaceHTML() $xml = $dom->saveXML($dom->documentElement->firstChild); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertContains('title=""', $xml); - $this->assertNotContains('foo:bar:baz', $xml); - $this->assertNotContains('x:y:z', $xml); + $this->assertStringContainsString('title=""', $xml); + $this->assertStringNotContainsString('foo:bar:baz', $xml); + $this->assertStringNotContainsString('x:y:z', $xml); } /** @@ -231,11 +231,12 @@ public function testSaveHTML() /** * @testdox load() throws an exception on malformed XSL - * @expectedException RuntimeException - * @expectedExceptionMessage Invalid XSL: Premature end of data */ public function testLoadInvalidXSL() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Invalid XSL: Premature end of data'); + $xsl = ''; TemplateLoader::load($xsl); } @@ -264,6 +265,6 @@ public function testLoadNoEntities() $dom = TemplateLoader::load($text); $this->assertInstanceOf('DOMDocument', $dom); - $this->assertNotContains('XXX', $dom->saveXML()); + $this->assertStringNotContainsString('XXX', $dom->saveXML()); } } \ No newline at end of file diff --git a/tests/Configurator/Helpers/TemplateModifierTest.php b/tests/Configurator/Helpers/TemplateModifierTest.php index ec6bf396b5..fd8ec20272 100644 --- a/tests/Configurator/Helpers/TemplateModifierTest.php +++ b/tests/Configurator/Helpers/TemplateModifierTest.php @@ -20,7 +20,9 @@ public function testReplaceTokens($template, $regexp, $fn, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame( diff --git a/tests/Configurator/Helpers/TemplateParserTest.php b/tests/Configurator/Helpers/TemplateParserTest.php index 4153551663..06572d7093 100644 --- a/tests/Configurator/Helpers/TemplateParserTest.php +++ b/tests/Configurator/Helpers/TemplateParserTest.php @@ -47,31 +47,34 @@ public function getParseTests() /** * @testdox parse() throws an exception if it encounters a processing instruction in the stylesheet - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot parse node 'pi' */ public function testPI() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Cannot parse node 'pi'"); + TemplateParser::parse('', 'xml'); } /** * @testdox parse() throws an exception if it encounters an unsupported XSL element - * @expectedException RuntimeException - * @expectedExceptionMessage Element 'xsl:foo' is not supported */ public function testUnsupportedXSL() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Element 'xsl:foo' is not supported"); + TemplateParser::parse('', 'xml'); } /** * @testdox parse() throws an exception if it encounters an unsupported expression - * @expectedException RuntimeException - * @expectedExceptionMessage Unsupported expression 'foo' */ public function testUnsupportedCopy() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unsupported expression 'foo'"); + TemplateParser::parse('', 'xml'); } diff --git a/tests/Configurator/Helpers/XPathHelperTest.php b/tests/Configurator/Helpers/XPathHelperTest.php index 0c4ee36828..b57ea6dce6 100644 --- a/tests/Configurator/Helpers/XPathHelperTest.php +++ b/tests/Configurator/Helpers/XPathHelperTest.php @@ -20,7 +20,9 @@ public function testGetVariables($expr, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame($expected, XPathHelper::getVariables($expr)); @@ -91,7 +93,9 @@ public function testMinify($original, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame($expected, XPathHelper::minify($original)); diff --git a/tests/Configurator/Items/AttributeFilters/ChoiceFilterTest.php b/tests/Configurator/Items/AttributeFilters/ChoiceFilterTest.php index 9b0ba7e199..bf54b7ccd5 100644 --- a/tests/Configurator/Items/AttributeFilters/ChoiceFilterTest.php +++ b/tests/Configurator/Items/AttributeFilters/ChoiceFilterTest.php @@ -90,11 +90,12 @@ public function testSetValuesUnicode() /** * @testdox setValues() throws an exception if its second argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a boolean */ public function testSetValuesInvalidBool() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a boolean'); + $filter = new ChoiceFilter; $filter->setValues(['one', 'two'], 'notabool'); } diff --git a/tests/Configurator/Items/AttributeFilters/HashmapFilterTest.php b/tests/Configurator/Items/AttributeFilters/HashmapFilterTest.php index 77a1b61c51..192d2653e0 100644 --- a/tests/Configurator/Items/AttributeFilters/HashmapFilterTest.php +++ b/tests/Configurator/Items/AttributeFilters/HashmapFilterTest.php @@ -42,11 +42,12 @@ public function testConstructorArguments() /** * @testdox asConfig() throws an exception if the 'map' var is missing - * @expectedException RuntimeException - * @expectedExceptionMessage Hashmap filter is missing a 'map' value */ public function testMissingHashmap() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Hashmap filter is missing a 'map' value"); + $filter = new HashmapFilter; $filter->asConfig(); } @@ -57,7 +58,7 @@ public function testMissingHashmap() public function testAsConfig() { $filter = new HashmapFilter(['foo' => 'bar']); - $this->assertInternalType('array', $filter->asConfig()); + $this->assertIsArray($filter->asConfig()); } /** @@ -86,11 +87,12 @@ public function testSetHashmapSparse() /** * @testdox Throws an exception if the second argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a boolean */ public function testStrictNotBool() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a boolean'); + new HashmapFilter(['foo' => 'bar'], 'notbool'); } diff --git a/tests/Configurator/Items/AttributeFilters/MapFilterTest.php b/tests/Configurator/Items/AttributeFilters/MapFilterTest.php index e44aae02fd..ce2d7ff59e 100644 --- a/tests/Configurator/Items/AttributeFilters/MapFilterTest.php +++ b/tests/Configurator/Items/AttributeFilters/MapFilterTest.php @@ -42,11 +42,12 @@ public function testConstructorArguments() /** * @testdox asConfig() throws an exception if the 'map' var is missing - * @expectedException RuntimeException - * @expectedExceptionMessage Map filter is missing a 'map' value */ public function testMissingMap() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Map filter is missing a 'map' value"); + $filter = new MapFilter; $filter->asConfig(); } @@ -57,7 +58,7 @@ public function testMissingMap() public function testAsConfig() { $filter = new MapFilter(['foo' => 'bar']); - $this->assertInternalType('array', $filter->asConfig()); + $this->assertIsArray($filter->asConfig()); } /** @@ -127,22 +128,24 @@ public function testSetMapUnicode() /** * @testdox setMap() throws an exception if the second argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a boolean */ public function testSetMapNotBool2() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a boolean'); + $filter = new MapFilter; $filter->setMap(['foo' => 'bar'], 'notbool'); } /** * @testdox setMap() throws an exception if the third argument is not a boolean - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a boolean */ public function testSetMapNotBool3() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a boolean'); + $filter = new MapFilter; $filter->setMap(['foo' => 'bar'], true, 'notbool'); } diff --git a/tests/Configurator/Items/AttributeFilters/RangeFilterTest.php b/tests/Configurator/Items/AttributeFilters/RangeFilterTest.php index 8062a3b079..be011af505 100644 --- a/tests/Configurator/Items/AttributeFilters/RangeFilterTest.php +++ b/tests/Configurator/Items/AttributeFilters/RangeFilterTest.php @@ -69,11 +69,12 @@ public function testConstructorArguments() /** * @testdox asConfig() throws an exception if the 'min' var is missing - * @expectedException RuntimeException - * @expectedExceptionMessage Range filter is missing a 'min' value */ public function testMissingMin() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Range filter is missing a 'min' value"); + $filter = new RangeFilter; $filter->setVars(['max' => 0]); $filter->asConfig(); @@ -81,11 +82,12 @@ public function testMissingMin() /** * @testdox asConfig() throws an exception if the 'max' var is missing - * @expectedException RuntimeException - * @expectedExceptionMessage Range filter is missing a 'max' value */ public function testMissingMax() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Range filter is missing a 'max' value"); + $filter = new RangeFilter; $filter->setVars(['min' => 0]); $filter->asConfig(); @@ -99,7 +101,7 @@ public function testAsConfig() $filter = new RangeFilter; $filter->setRange(1, 5); - $this->assertInternalType('array', $filter->asConfig()); + $this->assertIsArray($filter->asConfig()); } /** @@ -118,11 +120,12 @@ public function testSetRange() /** * @testdox setRange() throws an exception if the first argument is not a number - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Argument 1 passed to s9e\TextFormatter\Configurator\Items\AttributeFilters\RangeFilter::setRange must be an integer */ public function testSetRangeInvalidMin() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Argument 1 passed to s9e\\TextFormatter\\Configurator\\Items\\AttributeFilters\\RangeFilter::setRange must be an integer'); + $filter = new RangeFilter; $filter->setRange('foo', 5); @@ -130,11 +133,12 @@ public function testSetRangeInvalidMin() /** * @testdox setRange() throws an exception if the second argument is not a number - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Argument 2 passed to s9e\TextFormatter\Configurator\Items\AttributeFilters\RangeFilter::setRange must be an integer */ public function testSetRangeInvalidMax() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Argument 2 passed to s9e\\TextFormatter\\Configurator\\Items\\AttributeFilters\\RangeFilter::setRange must be an integer'); + $filter = new RangeFilter; $filter->setRange(1, 'foo'); @@ -142,11 +146,12 @@ public function testSetRangeInvalidMax() /** * @testdox setRange() throws an exception if the min value is greater than the max value - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid range */ public function testSetRangeInvalidRange() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid range'); + $filter = new RangeFilter; $filter->setRange(5, 1); } diff --git a/tests/Configurator/Items/AttributeFilters/RegexpFilterTest.php b/tests/Configurator/Items/AttributeFilters/RegexpFilterTest.php index 2910af1a4a..5bd2a80973 100644 --- a/tests/Configurator/Items/AttributeFilters/RegexpFilterTest.php +++ b/tests/Configurator/Items/AttributeFilters/RegexpFilterTest.php @@ -322,11 +322,12 @@ public function testSetRegexp() /** * @testdox setRegexp() throws an exception if the regexp is invalid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid regular expression '???' */ public function testSetRegexpInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid regular expression '???'"); + $filter = new RegexpFilter; $filter->setRegexp('???'); } @@ -339,16 +340,17 @@ public function testAsConfig() $filter = new RegexpFilter; $filter->setRegexp('/x/'); - $this->assertInternalType('array', $filter->asConfig()); + $this->assertIsArray($filter->asConfig()); } /** * @testdox asConfig() throws an exception if the 'regexp' var is missing - * @expectedException RuntimeException - * @expectedExceptionMessage Regexp filter is missing a 'regexp' value */ public function testMissingRegexp() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Regexp filter is missing a 'regexp' value"); + $filter = new RegexpFilter; $filter->asConfig(); } diff --git a/tests/Configurator/Items/AttributePreprocessorTest.php b/tests/Configurator/Items/AttributePreprocessorTest.php index 7049419937..b6a39ba78b 100644 --- a/tests/Configurator/Items/AttributePreprocessorTest.php +++ b/tests/Configurator/Items/AttributePreprocessorTest.php @@ -12,11 +12,12 @@ class AttributePreprocessorTest extends Test { /** * @testdox __construct() throws an InvalidArgumentException if the regexp is not valid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid regular expression */ public function testInvalidRegexp() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid regular expression'); + new AttributePreprocessor('(?)'); } diff --git a/tests/Configurator/Items/ProgrammableCallbackTest.php b/tests/Configurator/Items/ProgrammableCallbackTest.php index faa51945ed..1864501279 100644 --- a/tests/Configurator/Items/ProgrammableCallbackTest.php +++ b/tests/Configurator/Items/ProgrammableCallbackTest.php @@ -14,11 +14,12 @@ class ProgrammableCallbackTest extends Test { /** * @testdox __construct() throws an InvalidArgumentException if its argument is not callable - * @expectedException InvalidArgumentException - * @expectedExceptionMessage s9e\TextFormatter\Configurator\Items\ProgrammableCallback::__construct() expects a callback */ public function testInvalidCallback() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('s9e\\TextFormatter\\Configurator\\Items\\ProgrammableCallback::__construct() expects a callback'); + new ProgrammableCallback('*invalid*'); } @@ -111,11 +112,12 @@ public function testAddParameterByName() /** * @testdox addParameterByName() throws an exception when the same parameter is added twice - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Parameter 'foobar' already exists */ public function testAddParameterByNameDuplicated() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Parameter 'foobar' already exists"); + $pc = new ProgrammableCallback('strtolower'); $pc->addParameterByName('foobar'); $pc->addParameterByName('foobar'); diff --git a/tests/Configurator/Items/RegexpTest.php b/tests/Configurator/Items/RegexpTest.php index 1c481e64de..0f3525c098 100644 --- a/tests/Configurator/Items/RegexpTest.php +++ b/tests/Configurator/Items/RegexpTest.php @@ -13,11 +13,12 @@ class RegexpTest extends Test { /** * @testdox __construct() throws an InvalidArgumentException if the regexp is not valid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid regular expression */ public function testInvalidRegexp() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid regular expression'); + new Regexp('(?)'); } diff --git a/tests/Configurator/Items/TagTest.php b/tests/Configurator/Items/TagTest.php index 210d034aab..1e4decdc32 100644 --- a/tests/Configurator/Items/TagTest.php +++ b/tests/Configurator/Items/TagTest.php @@ -109,22 +109,24 @@ public function testNestingLimitString() /** * @testdox $tag->nestingLimit rejects non-numbers - * @expectedException InvalidArgumentException - * @expectedExceptionMessage nestingLimit must be a number greater than 0 */ public function testNestingLimitNonNumber() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('nestingLimit must be a number greater than 0'); + $tag = new Tag; $tag->nestingLimit = 'invalid'; } /** * @testdox $tag->nestingLimit rejects numbers less than 1 - * @expectedException InvalidArgumentException - * @expectedExceptionMessage nestingLimit must be a number greater than 0 */ public function testNestingLimitLessThanOne() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('nestingLimit must be a number greater than 0'); + $tag = new Tag; $tag->nestingLimit = -1; } @@ -190,22 +192,24 @@ public function testTagLimitString() /** * @testdox $tag->tagLimit rejects non-numbers - * @expectedException InvalidArgumentException - * @expectedExceptionMessage tagLimit must be a number greater than 0 */ public function testTagLimitNonNumber() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('tagLimit must be a number greater than 0'); + $tag = new Tag; $tag->tagLimit = 'invalid'; } /** * @testdox $tag->tagLimit rejects numbers less than 1 - * @expectedException InvalidArgumentException - * @expectedExceptionMessage tagLimit must be a number greater than 0 */ public function testTagLimitLessThanOne() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('tagLimit must be a number greater than 0'); + $tag = new Tag; $tag->tagLimit = -1; } @@ -218,10 +222,9 @@ public function testSetTemplate() $tag = new Tag; $tag->template = 'foo'; - $this->assertAttributeInstanceOf( + $this->assertInstanceOf( 's9e\\TextFormatter\\Configurator\\Items\\Template', - 'template', - $tag + $this->getObjectProperty($tag, 'template') ); } @@ -316,7 +319,7 @@ public function testFilterChainConfigOmitsUnusedFilter() foreach ($config['filterChain'] as $filter) { - $this->assertNotContains('executeAttributePreprocessors', $filter['callback']); + $this->assertStringNotContainsString('executeAttributePreprocessors', $filter['callback']); } } diff --git a/tests/Configurator/Items/TemplateTest.php b/tests/Configurator/Items/TemplateTest.php index 868f458fec..da8d221370 100644 --- a/tests/Configurator/Items/TemplateTest.php +++ b/tests/Configurator/Items/TemplateTest.php @@ -43,7 +43,7 @@ public function testAsDOM() $template = new Template($xml); $this->assertInstanceOf('DOMDocument', $template->asDOM()); - $this->assertContains($xml, $template->asDOM()->saveXML()); + $this->assertStringContainsString($xml, $template->asDOM()->saveXML()); } /** diff --git a/tests/Configurator/JavaScript/EncoderTest.php b/tests/Configurator/JavaScript/EncoderTest.php index e354fab41b..aa2d10d547 100644 --- a/tests/Configurator/JavaScript/EncoderTest.php +++ b/tests/Configurator/JavaScript/EncoderTest.php @@ -125,7 +125,7 @@ public function testLegalProps() $js = $encoder->encode(array_flip($legal)); foreach ($legal as $name) { - $this->assertContains($name . ':', $js); + $this->assertStringContainsString($name . ':', $js); } } @@ -153,28 +153,30 @@ public function testIllegalProps() $js = $encoder->encode(array_flip($illegal)); foreach ($illegal as $name) { - $this->assertContains(json_encode($name) . ':', $js); + $this->assertStringContainsString(json_encode($name) . ':', $js); } } /** * @testdox encode() throws an exception on unsupported types - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot encode resource value */ public function testEncodeUnsupportedType() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Cannot encode resource value'); + $encoder = new Encoder; $encoder->encode(fopen('php://stdin', 'rb')); } /** * @testdox encode() throws an exception on unsupported objects - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot encode instance of Closure */ public function testEncodeUnsupportedObjects() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Cannot encode instance of Closure'); + $encoder = new Encoder; $encoder->encode(function(){}); } diff --git a/tests/Configurator/JavaScript/FunctionProviderTest.php b/tests/Configurator/JavaScript/FunctionProviderTest.php index 30953501ff..2d4217fa44 100644 --- a/tests/Configurator/JavaScript/FunctionProviderTest.php +++ b/tests/Configurator/JavaScript/FunctionProviderTest.php @@ -10,7 +10,7 @@ */ class FunctionProviderTest extends Test { - public function tearDown() + protected function tearDown(): void { unset(FunctionProvider::$cache['foo']); } @@ -38,11 +38,12 @@ public function testReturnFromFilesystem() /** * @testdox get() will throw an exception if the function can't be sourced - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Unknown function 'foobar' */ public function testInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Unknown function 'foobar'"); + unset(FunctionProvider::$cache['foobar']); FunctionProvider::get('foobar'); } diff --git a/tests/Configurator/JavaScript/HintGeneratorTest.php b/tests/Configurator/JavaScript/HintGeneratorTest.php index 671c203754..0444ef8ca7 100644 --- a/tests/Configurator/JavaScript/HintGeneratorTest.php +++ b/tests/Configurator/JavaScript/HintGeneratorTest.php @@ -25,7 +25,7 @@ public function assertHintsContain($str) $generator->setPlugins($this->configurator->plugins); $generator->setXSL($xsl); - $this->assertContains($str, $generator->getHints()); + $this->assertStringContainsString($str, $generator->getHints()); } /** diff --git a/tests/Configurator/JavaScript/MinifierTest.php b/tests/Configurator/JavaScript/MinifierTest.php index c724efb242..54216ad5e7 100644 --- a/tests/Configurator/JavaScript/MinifierTest.php +++ b/tests/Configurator/JavaScript/MinifierTest.php @@ -11,12 +11,12 @@ */ class MinifierTest extends Test { - public function setUp() + protected function setUp(): void { array_map('unlink', self::getCacheFiles()); } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { array_map('unlink', self::getCacheFiles()); } @@ -91,10 +91,12 @@ public function testFromCache() /** * @testdox get() rethrows exception thrown during minification by default - * @expectedException Exception foo */ public function testGetRethrow() { + $this->expectException('Exception'); + $this->expectExceptionMessage('foo'); + $minifier = new DummyThrowingMinifier; $minifier->get('alert("Hi")'); } diff --git a/tests/Configurator/JavaScript/Minifiers/ClosureCompilerApplicationTest.php b/tests/Configurator/JavaScript/Minifiers/ClosureCompilerApplicationTest.php index 1eca5ec1f7..7e65f3d1f1 100644 --- a/tests/Configurator/JavaScript/Minifiers/ClosureCompilerApplicationTest.php +++ b/tests/Configurator/JavaScript/Minifiers/ClosureCompilerApplicationTest.php @@ -10,13 +10,13 @@ */ class ClosureCompilerApplicationTest extends Test { - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { file_put_contents(sys_get_temp_dir() . '/test.compiler.jar', '1'); file_put_contents(sys_get_temp_dir() . '/test2.compiler.jar', '2'); } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { unlink(sys_get_temp_dir() . '/test.compiler.jar'); unlink(sys_get_temp_dir() . '/test2.compiler.jar'); @@ -76,22 +76,24 @@ public function testConstructorJar() /** * @testdox Throws an exception if the Closure Compiler's filepath is not set at minification time - * @expectedException RuntimeException - * @expectedExceptionMessage No path set for Closure Compiler */ public function testNoPathRuntime() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('No path set for Closure Compiler'); + $minifier = new ClosureCompilerApplication; $minifier->minify('alert(1)'); } /** * @testdox Throws an exception if the Closure Compiler's file does not exist at minification time - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot find Closure Compiler at /does/not/exist */ public function testInvalidPathRuntime() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Cannot find Closure Compiler at /does/not/exist'); + $minifier = new ClosureCompilerApplication; $minifier->closureCompilerBin = '/does/not/exist'; $minifier->minify('alert(1)'); @@ -99,12 +101,13 @@ public function testInvalidPathRuntime() /** * @testdox Throws an exception if the JavaScript is invalid - * @expectedException RuntimeException - * @expectedExceptionMessage An error occured during minification * @group slow */ public function testInvalidJavaScript() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('An error occured during minification'); + $minifier = $this->getMinifier(); $minifier->compilationLevel = 'WHITESPACE_ONLY'; $minifier->minify('foo bar'); @@ -215,12 +218,13 @@ public function testWorks() /** * @testdox minify() throws an exception if an error occurs during minification - * @expectedException RuntimeException - * @expectedExceptionMessage An error occured during minification * @group slow */ public function testMinifyError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('An error occured during minification'); + $minifier = $this->getMinifier(); $minifier->compilationLevel = 'WHITESPACE_ONLY'; $minifier->options = '--env=CUSTOM'; diff --git a/tests/Configurator/JavaScript/Minifiers/ClosureCompilerServiceTest.php b/tests/Configurator/JavaScript/Minifiers/ClosureCompilerServiceTest.php index 1bfeb015aa..444efef013 100644 --- a/tests/Configurator/JavaScript/Minifiers/ClosureCompilerServiceTest.php +++ b/tests/Configurator/JavaScript/Minifiers/ClosureCompilerServiceTest.php @@ -52,7 +52,7 @@ public function testCompilationLevelDefault() $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->minify(''); - $this->assertContains( + $this->assertStringContainsString( 'compilation_level=ADVANCED_OPTIMIZATIONS', $minifier->httpClient->body ); @@ -67,7 +67,7 @@ public function testExcludesDefaultExternsByDefault() $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->minify(''); - $this->assertContains( + $this->assertStringContainsString( 'exclude_default_externs=true', $minifier->httpClient->body ); @@ -84,7 +84,7 @@ public function testCustomExterns() $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->minify(''); - $this->assertContains( + $this->assertStringContainsString( 'js_externs=' . urlencode($externs), $minifier->httpClient->body ); @@ -145,11 +145,12 @@ public function testCacheKeyCustomExterns() /** * @testdox Throws an exception in case of a request failure - * @expectedException RuntimeException - * @expectedExceptionMessage Could not contact the Closure Compiler service */ public function testRequestFailure() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Could not contact the Closure Compiler service'); + $minifier = new ClosureCompilerService; $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->httpClient->willReturn = false; @@ -158,11 +159,12 @@ public function testRequestFailure() /** * @testdox Throws an exception if the response isn't valid JSON - * @expectedException RuntimeException - * @expectedExceptionMessage Closure Compiler service returned invalid JSON: Syntax error */ public function testJSONError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Closure Compiler service returned invalid JSON: Syntax error'); + $minifier = new ClosureCompilerService; $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->httpClient->willReturn = 'not JSON'; @@ -171,11 +173,12 @@ public function testJSONError() /** * @testdox Throws an exception in case of a server error - * @expectedException RuntimeException - * @expectedExceptionMessage Server error 4: Unknown compression level: UNKNOWN */ public function testServerError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Server error 4: Unknown compression level: UNKNOWN'); + $minifier = new ClosureCompilerService; $minifier->compilationLevel = 'UNKNOWN'; $minifier->httpClient = new ClosureCompilerServiceTestClient; @@ -186,11 +189,12 @@ public function testServerError() /** * @testdox Throws an exception in case of a compilation error - * @expectedException RuntimeException - * @expectedExceptionMessage Parse error. Semi-colon expected */ public function testCompilationError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Parse error. Semi-colon expected'); + $minifier = new ClosureCompilerService; $minifier->httpClient = new ClosureCompilerServiceTestClient; $minifier->httpClient->willReturn = '{"compiledCode":"","errors":[{"type":"JSC_PARSE_ERROR","file":"Input_0","lineno":1,"charno":5,"error":"Parse error. Semi-colon expected","line":"This should fail"}]}'; diff --git a/tests/Configurator/JavaScript/Minifiers/FirstAvailableTest.php b/tests/Configurator/JavaScript/Minifiers/FirstAvailableTest.php index 13f07b6da5..2c934754d8 100644 --- a/tests/Configurator/JavaScript/Minifiers/FirstAvailableTest.php +++ b/tests/Configurator/JavaScript/Minifiers/FirstAvailableTest.php @@ -88,22 +88,24 @@ public function testSecond() /** * @testdox minify() throws an exception if no minifier is set - * @expectedException RuntimeException - * @expectedExceptionMessage No minifier available */ public function testNoMinifier() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('No minifier available'); + $minifier = new FirstAvailable; $minifier->minify(''); } /** * @testdox minify() throws an exception if no minifier success - * @expectedException RuntimeException - * @expectedExceptionMessage No minifier available */ public function testAllMinifiersFail() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('No minifier available'); + $minifier1 = $this->getMockBuilder('s9e\\TextFormatter\\Configurator\\JavaScript\\Minifier') ->getMock(); $minifier1->expects($this->once()) diff --git a/tests/Configurator/JavaScript/Minifiers/MatthiasMullieMinifyTest.php b/tests/Configurator/JavaScript/Minifiers/MatthiasMullieMinifyTest.php index 42bc53e23a..1170e11214 100644 --- a/tests/Configurator/JavaScript/Minifiers/MatthiasMullieMinifyTest.php +++ b/tests/Configurator/JavaScript/Minifiers/MatthiasMullieMinifyTest.php @@ -10,7 +10,7 @@ */ class MatthiasMullieMinifyTest extends Test { - public function setUp() + protected function setUp(): void { if (!class_exists('MatthiasMullie\\Minify\\JS')) { diff --git a/tests/Configurator/JavaScript/RegexpConvertorTest.php b/tests/Configurator/JavaScript/RegexpConvertorTest.php index a4dc022cb0..691072ea1b 100644 --- a/tests/Configurator/JavaScript/RegexpConvertorTest.php +++ b/tests/Configurator/JavaScript/RegexpConvertorTest.php @@ -113,11 +113,12 @@ public function testConvertRegexp5b() /** * @testdox toJS() throws a RuntimeException on options (?i) - * @expectedException RuntimeException - * @expectedExceptionMessage Regexp options are not supported */ public function testConvertRegexpException1() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Regexp options are not supported'); + RegexpConvertor::toJS('#(?i)x#'); } @@ -131,11 +132,12 @@ public function testConvertRegexpOption() /** * @testdox toJS() throws a RuntimeException on subpattern options (?i:) - * @expectedException RuntimeException - * @expectedExceptionMessage Subpattern options are not supported */ public function testConvertRegexpException2() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Subpattern options are not supported'); + RegexpConvertor::toJS('#(?i:x)#'); } @@ -266,21 +268,23 @@ public function testConvertRegexpNegativeLookahead() /** * @testdox toJS() throws a RuntimeException on lookbehind assertions - * @expectedException RuntimeException - * @expectedExceptionMessage Unsupported token type 'lookbehindAssertionStart' */ public function testConvertRegexpExceptionOnLookbehind() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unsupported token type 'lookbehindAssertionStart'"); + RegexpConvertor::toJS('#(?<=foo)x#'); } /** * @testdox toJS() throws a RuntimeException on negative lookbehind assertions - * @expectedException RuntimeException - * @expectedExceptionMessage Unsupported token type 'negativeLookbehindAssertionStart' */ public function testConvertRegexpExceptionOnNegativeLookbehind() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unsupported token type 'negativeLookbehindAssertionStart'"); + RegexpConvertor::toJS('#(?configurator->enableJavaScript(); } @@ -109,7 +109,7 @@ public function testMinifierReturn() $this->configurator->enableJavaScript(); $this->configurator->javascript->setMinifier($mock); - $this->assertContains('/**/', $this->configurator->javascript->getParser()); + $this->assertStringContainsString('/**/', $this->configurator->javascript->getParser()); } /** @@ -123,12 +123,12 @@ public function testGetParserWithConfig() $this->configurator->enableJavaScript(); - $this->assertNotContains( + $this->assertStringNotContainsString( 'FOO', $this->configurator->javascript->getParser() ); - $this->assertContains( + $this->assertStringContainsString( 'FOO', $this->configurator->javascript->getParser($configurator->asConfig()) ); @@ -141,7 +141,7 @@ public function testQuickMatchUTF8() { $this->configurator->plugins->load('Escaper', ['quickMatch' => 'foo']); - $this->assertContains( + $this->assertStringContainsString( 'quickMatch:"foo"', $this->configurator->javascript->getParser() ); @@ -154,7 +154,7 @@ public function testQuickMatchUTF8Bad() { $this->configurator->plugins->load('Escaper', ['quickMatch' => "\xC0"]); - $this->assertNotContains( + $this->assertStringNotContainsString( 'quickMatch:', $this->configurator->javascript->getParser() ); @@ -167,7 +167,7 @@ public function testQuickMatchUTF8Partial() { $this->configurator->plugins->load('Escaper', ['quickMatch' => "\xC0xÿz"]); - $this->assertContains( + $this->assertStringContainsString( 'quickMatch:"x\\u00ffz"', $this->configurator->javascript->getParser() ); @@ -180,7 +180,7 @@ public function testPluginNoParser() { $this->configurator->plugins['Foobar'] = new NoJSPluginConfigurator($this->configurator); - $this->assertNotContains( + $this->assertStringNotContainsString( 'Foobar', $this->configurator->javascript->getParser() ); @@ -188,11 +188,12 @@ public function testPluginNoParser() /** * @testdox getParser() throws an exception if it encounters a value that cannot be encoded into JavaScript - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot encode instance of stdClass */ public function testNonScalarConfigException() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Cannot encode instance of stdClass'); + $this->configurator->registeredVars['foo'] = new NonScalarConfigThing; $this->configurator->javascript->getParser(); } @@ -209,7 +210,7 @@ public function testAttributeFilterBuiltIn() $js = $this->configurator->javascript->getParser(); - $this->assertContains( + $this->assertStringContainsString( 'function(attrValue,attrName){return NumericFilter.filterInt(attrValue);}', $js ); @@ -227,7 +228,7 @@ public function testAttributeFilterBuiltInCallback() $js = $this->configurator->javascript->getParser(); - $this->assertContains( + $this->assertStringContainsString( 'function(tag,tagConfig){return filterAttributes(tag,tagConfig,registeredVars,logger);}', $js ); @@ -245,7 +246,7 @@ function() {} $js = $this->configurator->javascript->getParser(); - $this->assertContains('filterChain:[returnFalse]', $js); + $this->assertStringContainsString('filterChain:[returnFalse]', $js); } /** @@ -255,7 +256,7 @@ public function testRegisteredVarBracket() { $this->configurator->registeredVars = ['foo' => 'bar']; - $this->assertContains( + $this->assertStringContainsString( 'registeredVars={"foo":"bar"}', $this->configurator->javascript->getParser() ); @@ -270,8 +271,8 @@ public function testRegisteredVarCacheDir() $src = $this->configurator->javascript->getParser(); - $this->assertContains('registeredVars={"foo":"bar"}', $src); - $this->assertNotContains('cacheDir', $src); + $this->assertStringContainsString('registeredVars={"foo":"bar"}', $src); + $this->assertStringNotContainsString('cacheDir', $src); } /** @@ -283,7 +284,7 @@ public function testOmitClassName() $src = $this->configurator->javascript->getParser(); - $this->assertNotContains('className', $src); + $this->assertStringNotContainsString('className', $src); } /** @@ -299,7 +300,7 @@ public function testCallbackRegisteredVarBracket() ->resetParameters() ->addParameterByName('foo'); - $this->assertContains( + $this->assertStringContainsString( 'registeredVars["foo"]', $this->configurator->javascript->getParser() ); @@ -312,12 +313,12 @@ public function testLoggerDefault() { $js = $this->configurator->javascript->getParser(); - $this->assertContains( + $this->assertStringContainsString( file_get_contents(__DIR__ . '/../../src/Parser/Logger.js'), $js ); - $this->assertNotContains( + $this->assertStringNotContainsString( file_get_contents(__DIR__ . '/../../src/Parser/NullLogger.js'), $js ); @@ -331,12 +332,12 @@ public function testNullLogger() $this->configurator->javascript->exports = ['preview']; $js = $this->configurator->javascript->getParser(); - $this->assertNotContains( + $this->assertStringNotContainsString( file_get_contents(__DIR__ . '/../../src/Parser/Logger.js'), $js ); - $this->assertContains( + $this->assertStringContainsString( file_get_contents(__DIR__ . '/../../src/Parser/NullLogger.js'), $js ); @@ -354,7 +355,7 @@ public function testCallbackValue() ->addParameterByValue('foo') ->addParameterByValue(42); - $this->assertContains( + $this->assertStringContainsString( '("foo",42)', $this->configurator->javascript->getParser() ); @@ -372,8 +373,8 @@ public function testOptimizeWholeTag() $this->configurator->javascript->exports = ['preview']; $js = $this->configurator->javascript->getParser(); - $this->assertNotContains('"X":{', $js); - $this->assertNotContains('"Y":{', $js); + $this->assertStringNotContainsString('"X":{', $js); + $this->assertStringNotContainsString('"Y":{', $js); $this->assertRegexp('(tagsConfig=\\{"X":(\\w+),"Y":\\1)', $js); } @@ -383,7 +384,7 @@ public function testOptimizeWholeTag() public function testExport() { $this->configurator->javascript->exports = ['preview']; - $this->assertContains("window['s9e']", $this->configurator->javascript->getParser()); + $this->assertStringContainsString("window['s9e']", $this->configurator->javascript->getParser()); } /** @@ -392,7 +393,7 @@ public function testExport() public function testNoExport() { $this->configurator->javascript->exports = []; - $this->assertNotContains("window['s9e']['TextFormatter']", $this->configurator->javascript->getParser()); + $this->assertStringNotContainsString("window['s9e']['TextFormatter']", $this->configurator->javascript->getParser()); } /** @@ -432,7 +433,7 @@ public function testLivePreviewAttributes() { $this->configurator->tags->add('X')->template = '
'; - $this->assertContains('data-s9e-livepreview-ignore-attrs', $this->configurator->javascript->getParser()); + $this->assertStringContainsString('data-s9e-livepreview-ignore-attrs', $this->configurator->javascript->getParser()); } } diff --git a/tests/Configurator/RendererGenerators/PHP/QuickTest.php b/tests/Configurator/RendererGenerators/PHP/QuickTest.php index 4a75430d69..0f85ed6320 100644 --- a/tests/Configurator/RendererGenerators/PHP/QuickTest.php +++ b/tests/Configurator/RendererGenerators/PHP/QuickTest.php @@ -18,7 +18,7 @@ class QuickTest extends Test { use RendererTests; - public function setUp() + protected function setUp(): void { $this->configurator->rendering->engine = 'PHP'; $this->configurator->rendering->engine->enableQuickRenderer = true; @@ -63,20 +63,24 @@ public function testQuickRendererUnknownSelfClosingTag() /** * @testdox The quick renderer can handle comments - * @expectedException InvalidArgumentException comments */ public function testQuickRendererComment() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('comments'); + $renderer = $this->getRenderer(); $this->assertSame('unknown', $renderer->render('unknown')); } /** * @testdox The quick renderer can handle processing instructions - * @expectedException InvalidArgumentException Processing */ public function testQuickRendererProcessingInstruction() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Processing'); + $renderer = $this->getRenderer(); $this->assertSame('unknown', $renderer->render('unknown')); } @@ -700,7 +704,7 @@ public function testSource($templates, $contains, $setup = null) $compiledTemplates[$tagName] = self::getPHP($template); } - $this->assertContains($contains, Quick::getSource($compiledTemplates)); + $this->assertStringContainsString($contains, Quick::getSource($compiledTemplates)); } public function getSourceTests() diff --git a/tests/Configurator/RendererGenerators/PHP/SerializerTest.php b/tests/Configurator/RendererGenerators/PHP/SerializerTest.php index 042c573646..5db269b376 100644 --- a/tests/Configurator/RendererGenerators/PHP/SerializerTest.php +++ b/tests/Configurator/RendererGenerators/PHP/SerializerTest.php @@ -46,7 +46,9 @@ public function testSerialize($xml, $expected, $setup = null) $serializer = new Serializer; if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } if (isset($setup)) { diff --git a/tests/Configurator/RendererGenerators/PHP/XPathConvertorTest.php b/tests/Configurator/RendererGenerators/PHP/XPathConvertorTest.php index ee4e77dfdd..8ef767e7f2 100644 --- a/tests/Configurator/RendererGenerators/PHP/XPathConvertorTest.php +++ b/tests/Configurator/RendererGenerators/PHP/XPathConvertorTest.php @@ -23,7 +23,9 @@ public function testConvertXPathBasic($original, $expected) $convertor = new XPathConvertor; if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame($expected, $convertor->convertXPath($original)); } diff --git a/tests/Configurator/RendererGenerators/PHPTest.php b/tests/Configurator/RendererGenerators/PHPTest.php index 724c09b041..a17fbf57cf 100644 --- a/tests/Configurator/RendererGenerators/PHPTest.php +++ b/tests/Configurator/RendererGenerators/PHPTest.php @@ -17,12 +17,12 @@ */ class PHPTest extends Test { - protected function setUp() + protected function setUp(): void { $this->configurator->rendering->engine = 'PHP'; } - protected function tearDown() + protected function tearDown(): void { array_map('unlink', glob(sys_get_temp_dir() . '/*enderer_*.php')); } @@ -109,7 +109,7 @@ public function testNamespacedClass() $renderer = $this->configurator->rendering->getRenderer(); $this->assertInstanceOf($className, $renderer); - $this->assertContains("namespace foo\\bar;\n\nclass renderer_", $this->getRendererSource()); + $this->assertStringContainsString("namespace foo\\bar;\n\nclass renderer_", $this->getRendererSource()); } /** @@ -223,7 +223,7 @@ public function testComment() { $this->configurator->tags->add('X')->template = ''; - $this->assertNotContains( + $this->assertStringNotContainsString( 'Nothing', $this->getRendererSource() ); @@ -231,32 +231,35 @@ public function testComment() /** * @testdox Throws an exception if a template contains a processing instruction - * @expectedException RuntimeException */ public function testPI() { + $this->expectException('RuntimeException'); + $this->configurator->tags->add('X')->template = ''; $this->configurator->rendering->getRenderer(); } /** * @testdox Throws an exception when encountering unsupported XSL elements - * @expectedException RuntimeException - * @expectedExceptionMessage Element 'xsl:foo' is not supported */ public function testUnsupported() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Element 'xsl:foo' is not supported"); + $this->configurator->tags->add('X')->template = ''; $this->configurator->rendering->getRenderer(); } /** * @testdox Throws an exception on that does not copy an attribute - * @expectedException RuntimeException - * @expectedExceptionMessage Unsupported expression 'current()' */ public function testUnsupportedCopyOf() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unsupported expression 'current()'"); + $this->configurator->tags->add('X')->template = ''; $this->configurator->rendering->getRenderer(); } @@ -822,7 +825,7 @@ protected function runCodeTest($template, $contains, $notContains, $setup = null { foreach ((array) $contains as $str) { - $this->assertContains($str, $this->getRendererSource()); + $this->assertStringContainsString($str, $this->getRendererSource()); } } @@ -830,7 +833,7 @@ protected function runCodeTest($template, $contains, $notContains, $setup = null { foreach ((array) $notContains as $str) { - $this->assertNotContains($str, $this->getRendererSource()); + $this->assertStringNotContainsString($str, $this->getRendererSource()); } } } @@ -959,6 +962,7 @@ public function testCallsOptimizer() /** * @testdox Can run without an optimizer + * @doesNotPerformAssertions */ public function testNoOptimizer() { @@ -984,6 +988,7 @@ public function testCallsControlStructuresOptimizer() /** * @testdox Can run without a control structures optimizer + * @doesNotPerformAssertions */ public function testNoControlStructuresOptimizer() { @@ -1624,7 +1629,7 @@ public function testQuickRenderer() $this->configurator->rendering->engine->enableQuickRenderer = true; $this->configurator->tags->add('B')->template = ''; - $this->assertContains( + $this->assertStringContainsString( 'public $enableQuickRenderer=true;', $this->getRendererSource() ); @@ -1638,7 +1643,7 @@ public function testNoQuickRenderer() $this->configurator->rendering->engine->enableQuickRenderer = false; $this->configurator->tags->add('B')->template = ''; - $this->assertNotContains( + $this->assertStringNotContainsString( '$enableQuickRenderer=true;', $this->getRendererSource() ); diff --git a/tests/Configurator/RendererGenerators/XSLTTest.php b/tests/Configurator/RendererGenerators/XSLTTest.php index 8b8391d452..4227f4062c 100644 --- a/tests/Configurator/RendererGenerators/XSLTTest.php +++ b/tests/Configurator/RendererGenerators/XSLTTest.php @@ -36,7 +36,7 @@ public function testMergesDuplicateTemplates() $this->configurator->tags->add('X')->template = 'X'; $this->configurator->tags->add('Y')->template = 'X'; - $this->assertContains( + $this->assertStringContainsString( 'X', $this->getXSL() ); @@ -47,7 +47,7 @@ public function testMergesDuplicateTemplates() */ public function testEmptyTemplates() { - $this->assertContains( + $this->assertStringContainsString( '', $this->getXSL() ); @@ -61,7 +61,7 @@ public function testDeclaresNamespaces() $this->configurator->tags->add('X:A')->template = 'X'; $this->configurator->tags->add('Y:B')->template = 'Y'; - $this->assertContains( + $this->assertStringContainsString( 'xmlns:X="urn:s9e:TextFormatter:X" xmlns:Y="urn:s9e:TextFormatter:Y"', $this->getXSL() ); @@ -75,7 +75,7 @@ public function testExcludesPrefixes() $this->configurator->tags->add('X:A')->template = 'X'; $this->configurator->tags->add('Y:B')->template = 'Y'; - $this->assertContains( + $this->assertStringContainsString( 'exclude-result-prefixes="X Y"', $this->getXSL() ); @@ -89,12 +89,12 @@ public function testParameters() $this->configurator->rendering->parameters->add('foo'); $this->configurator->rendering->parameters->add('bar'); - $this->assertContains( + $this->assertStringContainsString( 'getXSL() ); - $this->assertContains( + $this->assertStringContainsString( 'getXSL() ); @@ -107,7 +107,7 @@ public function testParameterValue() { $this->configurator->rendering->parameters->add('foo', 'bar'); - $this->assertContains( + $this->assertStringContainsString( 'bar', $this->getXSL() ); @@ -120,7 +120,7 @@ public function testParameterValueEscaped() { $this->configurator->rendering->parameters->add('foo', '\'"&<>'); - $this->assertContains( + $this->assertStringContainsString( '\'"&<>', $this->getXSL() ); @@ -137,14 +137,14 @@ public function testSimpleTemplates() $xsl = $this->getXSL(); - $this->assertContains( + $this->assertStringContainsString( '', $xsl ); foreach ($this->configurator->tags as $tag) { - $this->assertNotContains((string) $tag->template, $xsl); + $this->assertStringNotContainsString((string) $tag->template, $xsl); } } @@ -171,8 +171,8 @@ public function testOptimizerCalls() $xsl = $this->getXSL(); - $this->assertContains('x', $xsl); - $this->assertContains('y', $xsl); + $this->assertStringContainsString('x', $xsl); + $this->assertStringContainsString('y', $xsl); } /** @@ -182,6 +182,6 @@ public function testRemovesLivePreviewAttributes() { $this->configurator->tags->add('X')->template = '
'; - $this->assertNotContains('livepreview', $this->getXSL()); + $this->assertStringNotContainsString('livepreview', $this->getXSL()); } } \ No newline at end of file diff --git a/tests/Configurator/RenderingTest.php b/tests/Configurator/RenderingTest.php index 6265eaba05..68b88c12df 100644 --- a/tests/Configurator/RenderingTest.php +++ b/tests/Configurator/RenderingTest.php @@ -40,10 +40,9 @@ public function testGetRendererArgs() { $this->configurator->rendering->setEngine('PHP', '/tmp'); - $this->assertAttributeSame( + $this->assertSame( '/tmp', - 'cacheDir', - $this->configurator->rendering->engine + $this->getObjectProperty($this->configurator->rendering->engine, 'cacheDir') ); } diff --git a/tests/Configurator/TemplateCheckerTest.php b/tests/Configurator/TemplateCheckerTest.php index 67bcfb66f8..d57edd2dc8 100644 --- a/tests/Configurator/TemplateCheckerTest.php +++ b/tests/Configurator/TemplateCheckerTest.php @@ -38,141 +38,155 @@ public function testImplementsIterator() /** * @testdox Disallows attribute sets by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of attribute sets */ public function testDefaultAttributeSets() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of attribute sets'); + $this->checkTemplate(''); } /** * @testdox Disallows by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of an 'xsl:copy' element */ public function testDefaultCopy() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of an 'xsl:copy' element"); + $this->checkTemplate(''); } /** * @testdox Disallows disabling output escaping by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage The template contains a 'disable-output-escaping' attribute */ public function testDefaultDisableOutputEscaping() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("The template contains a 'disable-output-escaping' attribute"); + $this->checkTemplate(''); } /** * @testdox Disallows dynamic attribute names by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Dynamic names are disallowed */ public function testDefaultDynamicAttributeNames() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Dynamic names are disallowed'); + $this->checkTemplate(''); } /** * @testdox Disallows dynamic element names by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Dynamic names are disallowed */ public function testDefaultDynamicElementNames() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Dynamic names are disallowed'); + $this->checkTemplate(''); } /** * @testdox Disallows dynamic object param names by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage A 'param' element with a suspect name has been found */ public function testDefaultDynamicObjectParamNames() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("A 'param' element with a suspect name has been found"); + $this->checkTemplate(''); } /** * @testdox Disallows PHP tags by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage PHP tags are not allowed in the template */ public function testDefaultPHPTags() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('PHP tags are not allowed in the template'); + $this->checkTemplate(''); } /** * @testdox Disallows outputing PHP tags by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage PHP tags are not allowed in the output */ public function testDefaultGeneratedPHPTags() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('PHP tags are not allowed in the output'); + $this->checkTemplate(''); } /** * @testdox Disallows potentially unsafe by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of 'xsl:copy-of' select expression 'FOO' */ public function testDefaultCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of 'xsl:copy-of' select expression 'FOO'"); + $this->checkTemplate(''); } /** * @testdox Disallows potentially unsafe dynamic CSS by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDefaultDynamicCSS() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $this->checkTemplate('...'); } /** * @testdox Disallows potentially unsafe dynamic JS by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDefaultDynamicJS() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $this->checkTemplate('...'); } /** * @testdox Disallows potentially unsafe dynamic URLs by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDefaultDynamicURL() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $this->checkTemplate('...'); } /** * @testdox Disallows document() in XPath by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function testDefaultDocumentXPath() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $this->checkTemplate(''); } /** * @testdox Restricts Flash's allowScriptAccess to "sameDomain" (or lower) by default, in objects that use dynamic values - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'always' exceeds restricted value 'sameDomain' */ public function testDefaultFlashScriptAccess() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'always' exceeds restricted value 'sameDomain'"); + $templateChecker = new TemplateChecker; $tag = new Tag; @@ -184,17 +198,19 @@ public function testDefaultFlashScriptAccess() /** * @testdox Disallows by default - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Element 'sax:output' is disallowed * @link https://bugs.php.net/bug.php?id=54446 */ public function testDefaultSaxOutput() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Element 'sax:output' is disallowed"); + $this->checkTemplate(''); } /** * @testdox checkTag() doesn't do anything if the template is safe + * @doesNotPerformAssertions */ public function testSafe() { @@ -207,6 +223,7 @@ public function testSafe() /** * @testdox checkTag() doesn't check templates that are marked as unsafe + * @doesNotPerformAssertions */ public function testUnsafeTemplate() { @@ -220,6 +237,7 @@ public function testUnsafeTemplate() /** * @testdox Can be reset and reconfigured with different checks * @depends testDefaultDisableOutputEscaping + * @doesNotPerformAssertions */ public function testReconfigure() { @@ -246,6 +264,7 @@ public function testReconfigure() /** * @testdox disable() disables all checks * @depends testDefaultDisableOutputEscaping + * @doesNotPerformAssertions */ public function testDisable() { @@ -258,11 +277,12 @@ public function testDisable() /** * @testdox enable() re-enables all checks - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException * @depends testDefaultDisableOutputEscaping */ public function testEnable() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $template = ''; $templateChecker = new TemplateChecker; diff --git a/tests/Configurator/TemplateChecks/AbstractDynamicContentCheckTest.php b/tests/Configurator/TemplateChecks/AbstractDynamicContentCheckTest.php index 60ff7a772c..74c733b3b5 100644 --- a/tests/Configurator/TemplateChecks/AbstractDynamicContentCheckTest.php +++ b/tests/Configurator/TemplateChecks/AbstractDynamicContentCheckTest.php @@ -30,6 +30,7 @@ protected function loadTemplate($template) /** * @testdox Stylesheet parameters are considered safe + * @doesNotPerformAssertions */ public function testTemplateParameter() { @@ -41,11 +42,12 @@ public function testTemplateParameter() /** * @testdox Variables pointing to an unknown attribute are unsafe - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testVarUnknown() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate(''); $check = new DummyContentCheck; @@ -54,6 +56,7 @@ public function testVarUnknown() /** * @testdox Variables pointing to an unknown attribute are ignored if ignoreUnknownAttributes() is called + * @doesNotPerformAssertions */ public function testVarUnknownIgnored() { @@ -66,11 +69,12 @@ public function testVarUnknownIgnored() /** * @testdox Variables pointing to an unknown attribute are detected if detectUnknownAttributes() is called after ignoreUnknownAttributes() - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testVarUnknownDetected() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate(''); $check = new DummyContentCheck; @@ -81,6 +85,7 @@ public function testVarUnknownDetected() /** * @testdox Variables pointing to a safe attribute are safe + * @doesNotPerformAssertions */ public function testVarSafe() { @@ -95,11 +100,12 @@ public function testVarSafe() /** * @testdox Variables pointing to an unsafe attribute are unsafe - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testVarUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate(''); $tag = new Tag; @@ -124,6 +130,7 @@ public function testVarUnsafe() /** * @testdox Variables pointing to a safe variable are safe + * @doesNotPerformAssertions */ public function testVarVarSafe() { @@ -138,11 +145,12 @@ public function testVarVarSafe() /** * @testdox Variables pointing to an unsafe variable are unsafe - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testVarVarUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate(''); $tag = new Tag; @@ -167,6 +175,7 @@ public function testVarVarUnsafe() /** * @testdox Variables pointing to a stylesheet parameter are safe + * @doesNotPerformAssertions */ public function testVarParamSafe() { @@ -178,6 +187,7 @@ public function testVarParamSafe() /** * @testdox Variables pointing to a stylesheet parameter of the same name are safe + * @doesNotPerformAssertions */ public function testVarParamSameName() { @@ -189,11 +199,12 @@ public function testVarParamSameName() /** * @testdox Local parameters pointing to an unknown attribute are unsafe - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testParamUnknown() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate(''); $check = new DummyContentCheck; @@ -202,6 +213,7 @@ public function testParamUnknown() /** * @testdox Local parameters pointing to a safe attribute are safe + * @doesNotPerformAssertions */ public function testParamSafe() { @@ -216,11 +228,12 @@ public function testParamSafe() /** * @testdox Attributes are not safe if the tag's filterChain is cleared - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testUnfilteredAttribute() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate(''); $tag = new Tag; @@ -233,11 +246,12 @@ public function testUnfilteredAttribute() /** * @testdox Attributes are not safe if the tag's filterChain does not contain the default attribute filter - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testMisfilteredAttribute() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate(''); $tag = new Tag; @@ -250,6 +264,7 @@ public function testMisfilteredAttribute() /** * @testdox Attributes can be safe with the tag's default filterChain + * @doesNotPerformAssertions */ public function testFilteredAttribute() { @@ -264,6 +279,7 @@ public function testFilteredAttribute() /** * @testdox Multiple attributes can be safe + * @doesNotPerformAssertions */ public function testCopyOfAttributesSafe() { @@ -279,11 +295,12 @@ public function testCopyOfAttributesSafe() /** * @testdox Multiple attributes can be unsafe - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'unsafe' is not properly sanitized to be used in this context */ public function testCopyOfAttributesUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'unsafe' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate(''); $tag = new Tag; diff --git a/tests/Configurator/TemplateChecks/DisallowAttributeSetsTest.php b/tests/Configurator/TemplateChecks/DisallowAttributeSetsTest.php index 76a4ef34a0..6a1bfd1421 100644 --- a/tests/Configurator/TemplateChecks/DisallowAttributeSetsTest.php +++ b/tests/Configurator/TemplateChecks/DisallowAttributeSetsTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of attribute sets */ public function test() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of attribute sets'); + $node = $this->loadTemplate(''); try @@ -54,6 +55,7 @@ public function test() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowed() { diff --git a/tests/Configurator/TemplateChecks/DisallowCopyTest.php b/tests/Configurator/TemplateChecks/DisallowCopyTest.php index f03c7db73e..e26911db1d 100644 --- a/tests/Configurator/TemplateChecks/DisallowCopyTest.php +++ b/tests/Configurator/TemplateChecks/DisallowCopyTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of an 'xsl:copy' element */ public function test() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of an 'xsl:copy' element"); + $node = $this->loadTemplate(''); try @@ -54,6 +55,7 @@ public function test() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowed() { diff --git a/tests/Configurator/TemplateChecks/DisallowDisableOutputEscapingTest.php b/tests/Configurator/TemplateChecks/DisallowDisableOutputEscapingTest.php index 92841827bc..e0e9f31214 100644 --- a/tests/Configurator/TemplateChecks/DisallowDisableOutputEscapingTest.php +++ b/tests/Configurator/TemplateChecks/DisallowDisableOutputEscapingTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage The template contains a 'disable-output-escaping' attribute */ public function test() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("The template contains a 'disable-output-escaping' attribute"); + $node = $this->loadTemplate(''); try @@ -54,6 +55,7 @@ public function test() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowed() { diff --git a/tests/Configurator/TemplateChecks/DisallowDynamicAttributeNamesTest.php b/tests/Configurator/TemplateChecks/DisallowDynamicAttributeNamesTest.php index dcd53dbac6..ed53f53d42 100644 --- a/tests/Configurator/TemplateChecks/DisallowDynamicAttributeNamesTest.php +++ b/tests/Configurator/TemplateChecks/DisallowDynamicAttributeNamesTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Dynamic names are disallowed */ public function testDisallowed() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Dynamic names are disallowed'); + $node = $this->loadTemplate(''); try @@ -54,6 +55,7 @@ public function testDisallowed() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowed() { diff --git a/tests/Configurator/TemplateChecks/DisallowDynamicElementNamesTest.php b/tests/Configurator/TemplateChecks/DisallowDynamicElementNamesTest.php index 977cad8c35..4a4aeb4a37 100644 --- a/tests/Configurator/TemplateChecks/DisallowDynamicElementNamesTest.php +++ b/tests/Configurator/TemplateChecks/DisallowDynamicElementNamesTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Dynamic names are disallowed */ public function testDisallowed() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Dynamic names are disallowed'); + $node = $this->loadTemplate(''); try @@ -54,6 +55,7 @@ public function testDisallowed() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowed() { diff --git a/tests/Configurator/TemplateChecks/DisallowElementNSTest.php b/tests/Configurator/TemplateChecks/DisallowElementNSTest.php index 403384fd16..fd0b668515 100644 --- a/tests/Configurator/TemplateChecks/DisallowElementNSTest.php +++ b/tests/Configurator/TemplateChecks/DisallowElementNSTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox DisallowElementNS('http://www.w3.org/2000/svg', 'svg') disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Element 'svg:svg' is disallowed */ public function testDisallowed() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Element 'svg:svg' is disallowed"); + $node = $this->loadTemplate(''); try @@ -54,11 +55,12 @@ public function testDisallowed() /** * @testdox DisallowElementNS('http://www.w3.org/2000/svg', 'svg') disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Element 'svg' is disallowed */ public function testDisallowedDefaultNS() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Element 'svg' is disallowed"); + $node = $this->loadTemplate(''); try @@ -80,6 +82,7 @@ public function testDisallowedDefaultNS() /** * @testdox DisallowElementNS('urn:foo', 'script') allows + * @doesNotPerformAssertions */ public function testAllowedScript() { @@ -188,11 +196,12 @@ public function testAllowedScript() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage PHP tags are not allowed in the template */ public function testDisallowedScript() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('PHP tags are not allowed in the template'); + $node = $this->loadTemplate(''); try @@ -214,11 +223,12 @@ public function testDisallowedScript() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage PHP tags are not allowed in the template */ public function testDisallowedScriptCaseInsensitive() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('PHP tags are not allowed in the template'); + $node = $this->loadTemplate(''); try diff --git a/tests/Configurator/TemplateChecks/DisallowUnsafeCopyOfTest.php b/tests/Configurator/TemplateChecks/DisallowUnsafeCopyOfTest.php index ca7eeb814d..fd0f260c0a 100644 --- a/tests/Configurator/TemplateChecks/DisallowUnsafeCopyOfTest.php +++ b/tests/Configurator/TemplateChecks/DisallowUnsafeCopyOfTest.php @@ -28,6 +28,7 @@ protected function loadTemplate($template) /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowed() { @@ -39,6 +40,7 @@ public function testAllowed() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowedDash() { @@ -50,6 +52,7 @@ public function testAllowedDash() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowedMultipleAttributes() { @@ -61,11 +64,12 @@ public function testAllowedMultipleAttributes() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of 'xsl:copy-of' select expression 'FOO' */ public function testDisallowed() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of 'xsl:copy-of' select expression 'FOO'"); + $node = $this->loadTemplate(''); try diff --git a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicCSSTest.php b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicCSSTest.php index b497b08f8a..3b982712dc 100644 --- a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicCSSTest.php +++ b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicCSSTest.php @@ -30,6 +30,7 @@ protected function loadTemplate($template) /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowedStaticElement() { @@ -41,6 +42,7 @@ public function testAllowedStaticElement() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowedStaticAttribute() { @@ -52,6 +54,7 @@ public function testAllowedStaticAttribute() /** * @testdox Allowed if #color: ... + * @doesNotPerformAssertions */ public function testAllowedDynamic() { @@ -66,11 +69,12 @@ public function testAllowedDynamic() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknown() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -94,11 +98,12 @@ public function testDisallowedUnknown() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfiltered() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -123,11 +128,12 @@ public function testDisallowedUnfiltered() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -151,6 +157,7 @@ public function testDisallowedDot() /** * @testdox Allowed if #color: ... + * @doesNotPerformAssertions */ public function testAllowedCopyOf() { @@ -165,11 +172,12 @@ public function testAllowedCopyOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'style' */ public function testDisallowedUnknownCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'style'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -193,11 +201,12 @@ public function testDisallowedUnknownCopyOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'style' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'style' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -222,6 +231,7 @@ public function testDisallowedUnfilteredCopyOf() /** * @testdox Allowed if #color: ... + * @doesNotPerformAssertions */ public function testAllowedValueOf() { @@ -236,11 +246,12 @@ public function testAllowedValueOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknownValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -264,11 +275,12 @@ public function testDisallowedUnknownValueOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -293,11 +305,12 @@ public function testDisallowedUnfilteredValueOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedValueOfDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -321,11 +334,12 @@ public function testDisallowedValueOfDot() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot allow unfiltered data in this context */ public function testDisallowedApplyTemplates() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot allow unfiltered data in this context'); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -349,11 +363,12 @@ public function testDisallowedApplyTemplates() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess context due to 'xsl:for-each' */ public function testUnsafeContext() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess context due to 'xsl:for-each'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -377,6 +392,7 @@ public function testUnsafeContext() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowedNumeric() { diff --git a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicJSTest.php b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicJSTest.php index 5e65253d71..a510827685 100644 --- a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicJSTest.php +++ b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicJSTest.php @@ -30,6 +30,7 @@ protected function loadTemplate($template) /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function testAllowedStaticElement() { @@ -41,6 +42,7 @@ public function testAllowedStaticElement() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowedStaticAttribute() { @@ -52,6 +54,7 @@ public function testAllowedStaticAttribute() /** * @testdox Allowed if #number: ... + * @doesNotPerformAssertions */ public function testAllowedDynamic() { @@ -66,11 +69,12 @@ public function testAllowedDynamic() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknown() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -94,11 +98,12 @@ public function testDisallowedUnknown() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfiltered() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -123,11 +128,12 @@ public function testDisallowedUnfiltered() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -151,6 +157,7 @@ public function testDisallowedDot() /** * @testdox Allowed if #number: ... + * @doesNotPerformAssertions */ public function testAllowedCopyOf() { @@ -165,11 +172,12 @@ public function testAllowedCopyOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'onclick' */ public function testDisallowedUnknownCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'onclick'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -193,11 +201,12 @@ public function testDisallowedUnknownCopyOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'onclick' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'onclick' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -222,6 +231,7 @@ public function testDisallowedUnfilteredCopyOf() /** * @testdox Allowed if #number: ... + * @doesNotPerformAssertions */ public function testAllowedValueOf() { @@ -236,11 +246,12 @@ public function testAllowedValueOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknownValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -264,11 +275,12 @@ public function testDisallowedUnknownValueOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -293,11 +305,12 @@ public function testDisallowedUnfilteredValueOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedValueOfDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -321,11 +334,12 @@ public function testDisallowedValueOfDot() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot allow unfiltered data in this context */ public function testDisallowedApplyTemplates() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot allow unfiltered data in this context'); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -349,11 +363,12 @@ public function testDisallowedApplyTemplates() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess context due to 'xsl:for-each' */ public function testUnsafeContext() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess context due to 'xsl:for-each'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -377,6 +392,7 @@ public function testUnsafeContext() /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowedNumeric() { diff --git a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicURLTest.php b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicURLTest.php index 8eba46df29..0599eda9c1 100644 --- a/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicURLTest.php +++ b/tests/Configurator/TemplateChecks/DisallowUnsafeDynamicURLTest.php @@ -30,6 +30,7 @@ protected function loadTemplate($template) /** * @testdox Allowed: ... + * @doesNotPerformAssertions */ public function testAllowedStaticAttribute() { @@ -41,6 +42,7 @@ public function testAllowedStaticAttribute() /** * @testdox Allowed if #url: ... + * @doesNotPerformAssertions */ public function testAllowedDynamic() { @@ -55,6 +57,7 @@ public function testAllowedDynamic() /** * @testdox Allowed even if unknown: ... + * @doesNotPerformAssertions */ public function testAllowedAnchoredScheme() { @@ -66,6 +69,7 @@ public function testAllowedAnchoredScheme() /** * @testdox Allowed even if unknown: ... + * @doesNotPerformAssertions */ public function testAllowedAnchoredSchemeless() { @@ -77,6 +81,7 @@ public function testAllowedAnchoredSchemeless() /** * @testdox Allowed even if unknown: ... + * @doesNotPerformAssertions */ public function testAllowedAnchoredLocalPart() { @@ -88,6 +93,7 @@ public function testAllowedAnchoredLocalPart() /** * @testdox Allowed even if unknown: ... + * @doesNotPerformAssertions */ public function testAllowedAnchoredFragment() { @@ -99,11 +105,12 @@ public function testAllowedAnchoredFragment() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknown() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -127,11 +134,12 @@ public function testDisallowedUnknown() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfiltered() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -156,11 +164,12 @@ public function testDisallowedUnfiltered() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredJavaScript() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -185,11 +194,12 @@ public function testDisallowedUnfilteredJavaScript() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredJavaScriptCase() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -214,11 +224,12 @@ public function testDisallowedUnfilteredJavaScriptCase() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredJavaScriptTab() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate("..."); $tag = new Tag; @@ -243,11 +254,12 @@ public function testDisallowedUnfilteredJavaScriptTab() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredVbcript() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -272,11 +284,12 @@ public function testDisallowedUnfilteredVbcript() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredData() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -301,11 +314,12 @@ public function testDisallowedUnfilteredData() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -329,6 +343,7 @@ public function testDisallowedDot() /** * @testdox Allowed if #url: ... + * @doesNotPerformAssertions */ public function testAllowedCopyOf() { @@ -343,11 +358,12 @@ public function testAllowedCopyOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'href' */ public function testDisallowedUnknownCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'href'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -371,11 +387,12 @@ public function testDisallowedUnknownCopyOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'href' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredCopyOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'href' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -400,6 +417,7 @@ public function testDisallowedUnfilteredCopyOf() /** * @testdox Allowed if #url: ... + * @doesNotPerformAssertions */ public function testAllowedValueOf() { @@ -414,11 +432,12 @@ public function testAllowedValueOf() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknownValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -442,6 +461,7 @@ public function testDisallowedUnknownValueOf() /** * @testdox Allowed even if unknown: http://... + * @doesNotPerformAssertions */ public function testAllowedValueOfAnchored() { @@ -453,11 +473,12 @@ public function testAllowedValueOfAnchored() /** * @testdox Disallowed if unknown: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of unknown attribute 'foo' */ public function testDisallowedUnknownValueOfJavaScript() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of unknown attribute 'foo'"); + $node = $this->loadTemplate('javascript:...'); $tag = new Tag; @@ -481,11 +502,12 @@ public function testDisallowedUnknownValueOfJavaScript() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'foo' is not properly sanitized to be used in this context */ public function testDisallowedUnfilteredValueOf() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'foo' is not properly sanitized to be used in this context"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -510,11 +532,12 @@ public function testDisallowedUnfilteredValueOf() /** * @testdox Disallowed if unfiltered: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of expression '.' */ public function testDisallowedValueOfDot() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess the safety of expression '.'"); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -538,11 +561,12 @@ public function testDisallowedValueOfDot() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot allow unfiltered data in this context */ public function testDisallowedApplyTemplates() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot allow unfiltered data in this context'); + $node = $this->loadTemplate('...'); $tag = new Tag; @@ -566,11 +590,12 @@ public function testDisallowedApplyTemplates() /** * @testdox Disallowed: ... - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess context due to 'xsl:for-each' */ public function testUnsafeContext() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess context due to 'xsl:for-each'"); + $node = $this->loadTemplate('...'); $tag = new Tag; diff --git a/tests/Configurator/TemplateChecks/DisallowXPathFunctionTest.php b/tests/Configurator/TemplateChecks/DisallowXPathFunctionTest.php index 152589b38a..e410b73886 100644 --- a/tests/Configurator/TemplateChecks/DisallowXPathFunctionTest.php +++ b/tests/Configurator/TemplateChecks/DisallowXPathFunctionTest.php @@ -28,11 +28,12 @@ protected function loadTemplate($template) /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function test1() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $node = $this->loadTemplate(''); try @@ -54,11 +55,12 @@ public function test1() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the php:function() function */ public function test1b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the php:function() function'); + $node = $this->loadTemplate(''); try @@ -80,11 +82,12 @@ public function test1b() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the php:function() function */ public function test1c() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the php:function() function'); + $node = $this->loadTemplate(''); try @@ -106,11 +109,12 @@ public function test1c() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function test2() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $node = $this->loadTemplate(''); try @@ -132,11 +136,12 @@ public function test2() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function test3() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $node = $this->loadTemplate(''); try @@ -158,11 +163,12 @@ public function test3() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function test4() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $node = $this->loadTemplate(''); try @@ -184,11 +190,12 @@ public function test4() /** * @testdox Disallowed: - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage An XPath expression uses the document() function */ public function test5() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('An XPath expression uses the document() function'); + $node = $this->loadTemplate(''); try @@ -210,6 +217,7 @@ public function test5() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function test6() { @@ -221,6 +229,7 @@ public function test6() /** * @testdox Allowed: + * @doesNotPerformAssertions */ public function test7() { diff --git a/tests/Configurator/TemplateChecks/RestrictFlashNetworkingTest.php b/tests/Configurator/TemplateChecks/RestrictFlashNetworkingTest.php index 9ef7b986ab..ba7e4c87ad 100644 --- a/tests/Configurator/TemplateChecks/RestrictFlashNetworkingTest.php +++ b/tests/Configurator/TemplateChecks/RestrictFlashNetworkingTest.php @@ -29,11 +29,12 @@ protected function loadTemplate($template) /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'internal' */ public function test1a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'internal'"); + $node = $this->loadTemplate(''); try @@ -55,6 +56,7 @@ public function test1a() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test1b() { @@ -65,6 +67,7 @@ public function test1b() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test1c() { @@ -75,11 +78,12 @@ public function test1c() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'internal' */ public function test1d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'internal'"); + $node = $this->loadTemplate(''); try @@ -101,11 +105,12 @@ public function test1d() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowNetworking value 'unknown' */ public function test1e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowNetworking value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -127,11 +132,12 @@ public function test1e() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess allowNetworking setting '{@foo}' +@foo}' */ public function test1f() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess allowNetworking setting '{"); $node = $this->loadTemplate(''); try @@ -153,11 +159,12 @@ public function test1f() /** * @testdox 'none' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test2a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -179,11 +186,12 @@ public function test2a() /** * @testdox 'none' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'internal' exceeds restricted value 'none' */ public function test2b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'internal' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -205,6 +213,7 @@ public function test2b() /** * @testdox 'none' allows + * @doesNotPerformAssertions */ public function test2c() { @@ -215,11 +224,12 @@ public function test2c() /** * @testdox 'none' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'internal' exceeds restricted value 'none' */ public function test2d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'internal' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -241,11 +251,12 @@ public function test2d() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of dynamic attributes */ public function test3() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of dynamic attributes'); + $node = $this->loadTemplate(''); try @@ -267,11 +278,12 @@ public function test3() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'internal' */ public function test4a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'internal'"); + $node = $this->loadTemplate(''); try @@ -293,6 +305,7 @@ public function test4a() /** * @testdox 'internal' allows if onlyIfDynamic is TRUE + * @doesNotPerformAssertions */ public function test4aIfDynamic() { @@ -304,6 +317,7 @@ public function test4aIfDynamic() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test4b() { @@ -314,6 +328,7 @@ public function test4b() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test4c() { @@ -324,11 +339,12 @@ public function test4c() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'internal' */ public function test4d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'internal'"); + $node = $this->loadTemplate(''); try @@ -350,11 +366,12 @@ public function test4d() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowNetworking value 'unknown' */ public function test4e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowNetworking value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -376,11 +393,12 @@ public function test4e() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess allowNetworking setting '{@foo}' +@foo}' */ public function test4f() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess allowNetworking setting '{"); $node = $this->loadTemplate(''); try @@ -402,11 +420,12 @@ public function test4f() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'internal' */ public function test5a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'internal'"); + $node = $this->loadTemplate(''); try @@ -428,6 +447,7 @@ public function test5a() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test5b() { @@ -438,6 +458,7 @@ public function test5b() /** * @testdox 'internal' allows + * @doesNotPerformAssertions */ public function test5c() { @@ -448,11 +469,12 @@ public function test5c() /** * @testdox 'internal' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowNetworking value 'unknown' */ public function test5e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowNetworking value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -474,11 +496,12 @@ public function test5e() /** * @testdox 'none' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test6() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -500,11 +523,12 @@ public function test6() /** * @testdox 'none' disallows all - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of dynamic attributes */ public function test7() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of dynamic attributes'); + $node = $this->loadTemplate('all'); try @@ -526,6 +550,7 @@ public function test7() /** * @testdox 'none',true allows + * @doesNotPerformAssertions */ public function test8a() { @@ -536,11 +561,12 @@ public function test8a() /** * @testdox 'none',false disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test8b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -562,11 +588,12 @@ public function test8b() /** * @testdox 'none',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test8c() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -588,11 +615,12 @@ public function test8c() /** * @testdox 'none',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test8d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -614,6 +642,7 @@ public function test8d() /** * @testdox 'none',true allows + * @doesNotPerformAssertions */ public function test9a() { @@ -624,11 +653,12 @@ public function test9a() /** * @testdox 'none',false disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test9b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -650,11 +680,12 @@ public function test9b() /** * @testdox 'none',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test9c() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try @@ -676,11 +707,12 @@ public function test9c() /** * @testdox 'none',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowNetworking setting 'all' exceeds restricted value 'none' */ public function test9d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowNetworking setting 'all' exceeds restricted value 'none'"); + $node = $this->loadTemplate(''); try diff --git a/tests/Configurator/TemplateChecks/RestrictFlashScriptAccessTest.php b/tests/Configurator/TemplateChecks/RestrictFlashScriptAccessTest.php index b4e54dc70b..3994c391fc 100644 --- a/tests/Configurator/TemplateChecks/RestrictFlashScriptAccessTest.php +++ b/tests/Configurator/TemplateChecks/RestrictFlashScriptAccessTest.php @@ -29,11 +29,12 @@ protected function loadTemplate($template) /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'always' exceeds restricted value 'sameDomain' */ public function test1a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'always' exceeds restricted value 'sameDomain'"); + $node = $this->loadTemplate(''); try @@ -55,6 +56,7 @@ public function test1a() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test1b() { @@ -65,6 +67,7 @@ public function test1b() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test1c() { @@ -75,6 +78,7 @@ public function test1c() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test1d() { @@ -85,11 +89,12 @@ public function test1d() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowScriptAccess value 'unknown' */ public function test1e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowScriptAccess value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -111,11 +116,12 @@ public function test1e() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess allowScriptAccess setting '{@foo}' +@foo}' */ public function test1f() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess allowScriptAccess setting '{"); $node = $this->loadTemplate(''); try @@ -137,11 +143,12 @@ public function test1f() /** * @testdox 'never' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'always' exceeds restricted value 'never' */ public function test2a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'always' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -163,11 +170,12 @@ public function test2a() /** * @testdox 'never' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test2b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -189,6 +197,7 @@ public function test2b() /** * @testdox 'never' allows + * @doesNotPerformAssertions */ public function test2c() { @@ -199,11 +208,12 @@ public function test2c() /** * @testdox 'never' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test2d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -225,11 +235,12 @@ public function test2d() /** * @testdox Disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of dynamic attributes */ public function test3() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of dynamic attributes'); + $node = $this->loadTemplate(''); try @@ -251,11 +262,12 @@ public function test3() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'always' exceeds restricted value 'sameDomain' */ public function test4a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'always' exceeds restricted value 'sameDomain'"); + $node = $this->loadTemplate(''); try @@ -277,6 +289,7 @@ public function test4a() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test4b() { @@ -287,6 +300,7 @@ public function test4b() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test4c() { @@ -297,6 +311,7 @@ public function test4c() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test4d() { @@ -307,11 +322,12 @@ public function test4d() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowScriptAccess value 'unknown' */ public function test4e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowScriptAccess value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -333,11 +349,12 @@ public function test4e() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess allowScriptAccess setting '{@foo}' +@foo}' */ public function test4f() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Cannot assess allowScriptAccess setting '{"); $node = $this->loadTemplate(''); try @@ -359,11 +376,12 @@ public function test4f() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'always' exceeds restricted value 'sameDomain' */ public function test5a() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'always' exceeds restricted value 'sameDomain'"); + $node = $this->loadTemplate(''); try @@ -385,6 +403,7 @@ public function test5a() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test5b() { @@ -395,6 +414,7 @@ public function test5b() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test5c() { @@ -405,6 +425,7 @@ public function test5c() /** * @testdox 'sameDomain' allows + * @doesNotPerformAssertions */ public function test5d() { @@ -415,11 +436,12 @@ public function test5d() /** * @testdox 'sameDomain' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Unknown allowScriptAccess value 'unknown' */ public function test5e() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Unknown allowScriptAccess value 'unknown'"); + $node = $this->loadTemplate(''); try @@ -441,11 +463,12 @@ public function test5e() /** * @testdox 'never' disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test6() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -467,11 +490,12 @@ public function test6() /** * @testdox 'never' disallows always - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Cannot assess the safety of dynamic attributes */ public function test7() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage('Cannot assess the safety of dynamic attributes'); + $node = $this->loadTemplate('always'); try @@ -493,6 +517,7 @@ public function test7() /** * @testdox 'never',true allows + * @doesNotPerformAssertions */ public function test8a() { @@ -503,11 +528,12 @@ public function test8a() /** * @testdox 'never',false disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test8b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -529,11 +555,12 @@ public function test8b() /** * @testdox 'never',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test8c() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -555,11 +582,12 @@ public function test8c() /** * @testdox 'never',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test8d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -581,6 +609,7 @@ public function test8d() /** * @testdox 'never',true allows + * @doesNotPerformAssertions */ public function test9a() { @@ -591,11 +620,12 @@ public function test9a() /** * @testdox 'never',false disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test9b() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -617,11 +647,12 @@ public function test9b() /** * @testdox 'never',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test9c() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try @@ -643,11 +674,12 @@ public function test9c() /** * @testdox 'never',true disallows - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage allowScriptAccess setting 'sameDomain' exceeds restricted value 'never' */ public function test9d() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("allowScriptAccess setting 'sameDomain' exceeds restricted value 'never'"); + $node = $this->loadTemplate(''); try diff --git a/tests/Configurator/TemplateNormalizations/AbstractNormalizationTest.php b/tests/Configurator/TemplateNormalizations/AbstractNormalizationTest.php index 572cdaa840..2adccff07e 100644 --- a/tests/Configurator/TemplateNormalizations/AbstractNormalizationTest.php +++ b/tests/Configurator/TemplateNormalizations/AbstractNormalizationTest.php @@ -40,6 +40,7 @@ protected function getTemplateElement() /** * @testdox Nothing happens if the normalization doesn't override any method or set any query + * @doesNotPerformAssertions */ public function testNothingHappens() { @@ -49,6 +50,7 @@ public function testNothingHappens() /** * @testdox Nothing happens if the normalization doesn't override any method but set an element query + * @doesNotPerformAssertions */ public function testNothingHappensElement() { @@ -58,6 +60,7 @@ public function testNothingHappensElement() /** * @testdox Nothing happens if the normalization doesn't override any method but set an attribute query + * @doesNotPerformAssertions */ public function testNothingHappensAttribute() { diff --git a/tests/Configurator/TemplateNormalizations/AbstractTest.php b/tests/Configurator/TemplateNormalizations/AbstractTest.php index 95b488cdf4..0bf87ade6b 100644 --- a/tests/Configurator/TemplateNormalizations/AbstractTest.php +++ b/tests/Configurator/TemplateNormalizations/AbstractTest.php @@ -28,7 +28,11 @@ public function test($template, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage() ?: null); + $this->expectException(get_class($expected)); + if ($expected->getMessage()) + { + $this->expectExceptionMessage($expected->getMessage()); + } } $xml = '' diff --git a/tests/Configurator/TemplateNormalizations/MinifyXPathExpressionsTest.php b/tests/Configurator/TemplateNormalizations/MinifyXPathExpressionsTest.php index 312c02a227..f31ee178bb 100644 --- a/tests/Configurator/TemplateNormalizations/MinifyXPathExpressionsTest.php +++ b/tests/Configurator/TemplateNormalizations/MinifyXPathExpressionsTest.php @@ -9,11 +9,12 @@ class MinifyXPathExpressionsTest extends AbstractTest { /** * @testdox Throws an exception if a string isn't properly closed - * @expectedException RuntimeException - * @expectedExceptionMessage Cannot parse XPath expression 'foo = "bar' */ public function testInvalidXPath() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Cannot parse XPath expression 'foo = \"bar'"); + $this->test('!', null); } diff --git a/tests/Configurator/Traits/CollectionProxyTest.php b/tests/Configurator/Traits/CollectionProxyTest.php index 3db1354acd..0879bb01e3 100644 --- a/tests/Configurator/Traits/CollectionProxyTest.php +++ b/tests/Configurator/Traits/CollectionProxyTest.php @@ -17,7 +17,7 @@ class CollectionProxyTest extends Test protected $mock; protected $proxy; - public function setUp() + protected function setUp(): void { $this->mock = $this->getMockBuilder( 's9e\\TextFormatter\\Configurator\\Collections\\NormalizedCollection' diff --git a/tests/Configurator/Traits/ConfigurableTest.php b/tests/Configurator/Traits/ConfigurableTest.php index a3f1ecb795..cd4fa0c70d 100644 --- a/tests/Configurator/Traits/ConfigurableTest.php +++ b/tests/Configurator/Traits/ConfigurableTest.php @@ -33,11 +33,12 @@ public function testMagicGet() /** * @testdox __get() throws a RuntimeException if the property does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Property 'inexistent' does not exist */ public function testMagicGetInexistent() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Property 'inexistent' does not exist"); + $dummy = new ConfigurableTestDummy; $dummy->inexistent; } @@ -102,11 +103,12 @@ public function testMagicSetChildObject() /** * @testdox __set() throws an exception if an instance of Foo would be replaced by an instance of Bar - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Cannot replace property 'fooObject' of class 's9e\TextFormatter\Tests\Configurator\Traits\Foo' with instance of 's9e\TextFormatter\Tests\Configurator\Traits\Bar' */ public function testMagicSetDifferentObject() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Cannot replace property 'fooObject' of class 's9e\\TextFormatter\\Tests\\Configurator\\Traits\\Foo' with instance of 's9e\\TextFormatter\\Tests\\Configurator\\Traits\\Bar'"); + $dummy = new ConfigurableTestDummy; $bar = new Bar; @@ -159,11 +161,12 @@ public function testMagicSetBoolStringFalse() /** * @testdox __set() throws an exception if a scalar value would be overwritten by a scalar value that cannot be losslessly cast to the same type - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Cannot replace property 'int' of type integer with value of type string */ public function testMagicSetIncompatibleType() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Cannot replace property 'int' of type integer with value of type string"); + $dummy = new ConfigurableTestDummy; $dummy->int = "55!"; @@ -191,11 +194,12 @@ public function testMagicSetNormalizedCollection() /** * @testdox __set() throws an exception if a NormalizedCollection would be overwritten by a non-array, non-Traversable value - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Property 'collection' expects an array or a traversable object to be passed */ public function testMagicSetNonTraversable() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Property 'collection' expects an array or a traversable object to be passed"); + $dummy = new ConfigurableTestDummy; $dummy->collection = 1; @@ -263,6 +267,7 @@ public function testMagicUnsetCollection() /** * @testdox __unset('foo') has no effect unsetFoo() does not exist and the the property is not set + * @doesNotPerformAssertions */ public function testMagicUnsetNone() { @@ -273,11 +278,12 @@ public function testMagicUnsetNone() /** * @testdox __unset('foo') throws an exception if unsetFoo() does not exist and the property is set - * @expectedException RuntimeException - * @expectedExceptionMessage Property 'notUnsettable' cannot be unset */ public function testMagicUnsetFail() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Property 'notUnsettable' cannot be unset"); + $dummy = new ConfigurableTestDummy; unset($dummy->notUnsettable); diff --git a/tests/Configurator/UrlConfigTest.php b/tests/Configurator/UrlConfigTest.php index b5222f46e1..618aca3dec 100644 --- a/tests/Configurator/UrlConfigTest.php +++ b/tests/Configurator/UrlConfigTest.php @@ -10,7 +10,7 @@ */ class UrlConfigTest extends Test { - public function setUp() + protected function setUp(): void { $this->urlConfig = new UrlConfig; } @@ -40,7 +40,7 @@ public function testDisallowedIDNsArePunycoded() $urlConfig = $this->urlConfig->asConfig(); $this->assertArrayHasKey('disallowedHosts', $urlConfig); - $this->assertContains('xn--pypal-4ve\\.com', (string) $urlConfig['disallowedHosts']); + $this->assertStringContainsString('xn--pypal-4ve\\.com', (string) $urlConfig['disallowedHosts']); } /** @@ -271,31 +271,34 @@ public function testAllowSchemeFTP() /** * @testdox allowScheme('') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid scheme name '' */ public function testInvalidAllowScheme() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid scheme name ''"); + $this->urlConfig->allowScheme(''); } /** * @testdox allowScheme('javascript') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage The JavaScript URL scheme cannot be allowed */ public function testAllowSchemeJavaScript() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('The JavaScript URL scheme cannot be allowed'); + $this->urlConfig->allowScheme('javascript'); } /** * @testdox allowScheme('javaScript') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage The JavaScript URL scheme cannot be allowed */ public function testAllowSchemeJavaScriptCase() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('The JavaScript URL scheme cannot be allowed'); + $this->urlConfig->allowScheme('javaScript'); } } \ No newline at end of file diff --git a/tests/Configurator/Validators/AttributeNameTest.php b/tests/Configurator/Validators/AttributeNameTest.php index 2185cb4304..bcb5e7bceb 100644 --- a/tests/Configurator/Validators/AttributeNameTest.php +++ b/tests/Configurator/Validators/AttributeNameTest.php @@ -12,11 +12,12 @@ class AttributeNameTest extends Test { /** * @testdox normalize() throws an InvalidArgumentException if the name is invalid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid attribute name '*invalid*' */ public function testInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid attribute name '*invalid*'"); + AttributeName::normalize('*invalid*'); } diff --git a/tests/Configurator/Validators/TagNameTest.php b/tests/Configurator/Validators/TagNameTest.php index d5e0610bf1..be12dc5cb9 100644 --- a/tests/Configurator/Validators/TagNameTest.php +++ b/tests/Configurator/Validators/TagNameTest.php @@ -12,11 +12,12 @@ class TagNameTest extends Test { /** * @testdox normalize() throws an InvalidArgumentException if the name is invalid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name '*invalid*' */ public function testInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid tag name '*invalid*'"); + TagName::normalize('*invalid*'); } diff --git a/tests/Configurator/Validators/TemplateParameterNameTest.php b/tests/Configurator/Validators/TemplateParameterNameTest.php index c261ab038c..ab5b7f3631 100644 --- a/tests/Configurator/Validators/TemplateParameterNameTest.php +++ b/tests/Configurator/Validators/TemplateParameterNameTest.php @@ -12,11 +12,12 @@ class TemplateParameterNameTest extends Test { /** * @testdox normalize() throws an InvalidArgumentException if the name is invalid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid parameter name '*invalid*' */ public function testInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Invalid parameter name '*invalid*'"); + TemplateParameterName::normalize('*invalid*'); } diff --git a/tests/ConfiguratorTest.php b/tests/ConfiguratorTest.php index 261d0b0342..34c6a98085 100644 --- a/tests/ConfiguratorTest.php +++ b/tests/ConfiguratorTest.php @@ -84,7 +84,7 @@ public function testPluginsInstance() */ public function testRegisteredVarsVisibility() { - $this->assertInternalType('array', $this->configurator->registeredVars); + $this->assertIsArray($this->configurator->registeredVars); } /** @@ -174,7 +174,7 @@ public function testAsConfigNoFinalize() public function testAsConfigRootContext() { $config = $this->configurator->asConfig(); - $this->assertInternalType('array', $config); + $this->assertIsArray($config); $this->assertArrayHasKey('rootContext', $config); } @@ -184,7 +184,7 @@ public function testAsConfigRootContext() public function testAsConfigRegisteredVars() { $config = $this->configurator->asConfig(); - $this->assertInternalType('array', $config); + $this->assertIsArray($config); $this->assertArrayHasKey('registeredVars', $config); $this->assertArrayHasKey('urlConfig', $config['registeredVars']); } @@ -322,7 +322,7 @@ public function testAsConfigRemovesJavaScriptTagFilters() $this->configurator->tags->add('A')->filterChain->append($pc); $parser = $this->getParser(); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertArrayNotHasKey( 'js', @@ -341,7 +341,7 @@ public function testAsConfigRemovesJavaScriptAttributeFilters() $this->configurator->tags->add('A')->attributes->add('a')->filterChain->append($filter); $parser = $this->getParser(); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertArrayNotHasKey( 'js', @@ -419,11 +419,12 @@ public function testMagicGetVar() /** * @testdox $configurator->foo throws an exception if $configurator->registeredVars['foo'] does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Undefined property 's9e\TextFormatter\Configurator::$foo' */ public function testMagicGetInexistentVar() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Undefined property 's9e\\TextFormatter\\Configurator::\$foo'"); + $this->configurator->foo; } @@ -499,11 +500,12 @@ public function testAddHTML5RulesTagsNoOverwrite() /** * @testdox loadBundle('../Invalid') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid bundle name */ public function testLoadBundleInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid bundle name'); + $this->configurator->loadBundle('../Invalid'); } @@ -528,7 +530,7 @@ public function testSaveBundle() $file = file_get_contents($filepath); $this->assertStringStartsWith('assertContains('class Foo', $file); + $this->assertStringContainsString('class Foo', $file); } /** diff --git a/tests/Parser/FilterProcessingTest.php b/tests/Parser/FilterProcessingTest.php index 541e0d7011..a6d765c1aa 100644 --- a/tests/Parser/FilterProcessingTest.php +++ b/tests/Parser/FilterProcessingTest.php @@ -102,6 +102,7 @@ public function testExecuteAttributePreprocessorsDoesNotUnsetSourceIfNoMatch() /** * @testdox executeAttributePreprocessors() returns TRUE even if no source attribute was present + * @doesNotPerformAssertions */ public function testExecuteAttributePreprocessorsReturnsTrue() { diff --git a/tests/Parser/PluginsHandlingTest.php b/tests/Parser/PluginsHandlingTest.php index 4781e96d0e..4842607db5 100644 --- a/tests/Parser/PluginsHandlingTest.php +++ b/tests/Parser/PluginsHandlingTest.php @@ -286,11 +286,12 @@ public function testRegisterParserNew() /** * @testdox registerParser() throws an exception if its second argument is not callable - * @expectedException InvalidArgumentException - * @expectedExceptionMessage must be a valid callback */ public function testRegisterParserInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('must be a valid callback'); + $dummy = new PluginsHandlingDummy; $dummy->registerParser('Foo', '*invalid*'); } diff --git a/tests/Parser/TagTest.php b/tests/Parser/TagTest.php index 34ce8ffc13..5770c12f42 100644 --- a/tests/Parser/TagTest.php +++ b/tests/Parser/TagTest.php @@ -344,6 +344,7 @@ public function testInvalidateCascadeImmediate() /** * @testdox Mutual invalidation doesn't cause an infinite loop + * @doesNotPerformAssertions */ public function testInvalidateNoInfiniteLoop() { @@ -753,7 +754,7 @@ public function testSetFlags() $tag = new Tag(Tag::START_TAG, 'X', 0, 0); $tag->setFlags(4); - $this->assertAttributeSame(4, 'flags', $tag); + $this->assertSame(4, $this->getObjectProperty($tag, 'flags')); } /** diff --git a/tests/ParserTest.php b/tests/ParserTest.php index 24a622d44b..9297b1bf7f 100644 --- a/tests/ParserTest.php +++ b/tests/ParserTest.php @@ -177,11 +177,12 @@ function () use ($parser) /** * @testdox parse() throws an exception if the input isn't valid UTF-8 - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid UTF-8 input */ public function testParseInvalidUTF8() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid UTF-8 input'); + $this->getParser()->parse("x\xFF"); } @@ -193,12 +194,12 @@ public function testDisableTag() $this->configurator->tags->add('FOO'); $parser = $this->getParser(); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertTrue(empty($tagsConfig['FOO']['isDisabled'])); $parser->disableTag('FOO'); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertFalse(empty($tagsConfig['FOO']['isDisabled'])); } @@ -215,7 +216,7 @@ public function testDisableTagReference() $parser->disableTag('FOO'); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertFalse(empty($tagsConfig['FOO']['isDisabled'])); $this->assertTrue(empty($tagsConfig['BAR']['isDisabled'])); } @@ -230,22 +231,23 @@ public function testEnableTag() $parser->disableTag('FOO'); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertFalse(empty($tagsConfig['FOO']['isDisabled'])); $parser->enableTag('FOO'); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertTrue(empty($tagsConfig['FOO']['isDisabled'])); } /** * @testdox parse() throws an exception if the parser is reset during its execution - * @expectedException RuntimeException - * @expectedExceptionMessage The parser has been reset during execution */ public function testResetException() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('The parser has been reset during execution'); + $parser = $this->getParser(); $parser->registerParser( @@ -309,7 +311,7 @@ public function testSetTagLimitReference() $parser->setTagLimit('FOO', 123); $parser->setTagLimit('BAR', 456); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertSame(123, $tagsConfig['FOO']['tagLimit']); $this->assertSame(456, $tagsConfig['BAR']['tagLimit']); } @@ -361,7 +363,7 @@ public function testSetNestingLimitReference() $parser->setNestingLimit('FOO', 123); $parser->setNestingLimit('BAR', 456); - $tagsConfig = $this->readAttribute($parser, 'tagsConfig'); + $tagsConfig = $this->getObjectProperty($parser, 'tagsConfig'); $this->assertSame(123, $tagsConfig['FOO']['nestingLimit']); $this->assertSame(456, $tagsConfig['BAR']['nestingLimit']); } diff --git a/tests/Plugins/BBCodes/Configurator/BBCodeCollectionTest.php b/tests/Plugins/BBCodes/Configurator/BBCodeCollectionTest.php index 7958434af4..e493cb813d 100644 --- a/tests/Plugins/BBCodes/Configurator/BBCodeCollectionTest.php +++ b/tests/Plugins/BBCodes/Configurator/BBCodeCollectionTest.php @@ -157,11 +157,12 @@ public function testDuplicateDefault() /** * @testdox Throws an meaningful exception message when creating a BBCode that already exists - * @expectedException RuntimeException - * @expectedExceptionMessage BBCode 'X' already exists */ public function testDuplicateError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("BBCode 'X' already exists"); + $collection = new BBCodeCollection; $collection->onDuplicate('error'); $collection->add('X'); @@ -170,11 +171,12 @@ public function testDuplicateError() /** * @testdox Throws an exception when accessing a BBCode that does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage BBCode 'X' does not exist */ public function testNotExist() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("BBCode 'X' does not exist"); + $collection = new BBCodeCollection; $collection->get('X'); } diff --git a/tests/Plugins/BBCodes/Configurator/BBCodeMonkeyTest.php b/tests/Plugins/BBCodes/Configurator/BBCodeMonkeyTest.php index 7fe0233eb0..bbefc964f7 100644 --- a/tests/Plugins/BBCodes/Configurator/BBCodeMonkeyTest.php +++ b/tests/Plugins/BBCodes/Configurator/BBCodeMonkeyTest.php @@ -37,7 +37,7 @@ public function testAllowedFiltersPublic() $bbcodeMonkey = new BBCodeMonkey(new Configurator); $allowedFilters = $bbcodeMonkey->allowedFilters; - $this->assertInternalType('array', $allowedFilters); + $this->assertIsArray($allowedFilters); $this->assertContains('strrev', $allowedFilters); } @@ -86,7 +86,9 @@ public function testCreate($usage, $template, $expected) { if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $bbcodeMonkey = new BBCodeMonkey(new Configurator); diff --git a/tests/Plugins/BBCodes/Configurator/BBCodeTest.php b/tests/Plugins/BBCodes/Configurator/BBCodeTest.php index d66367e9df..c9c057a968 100644 --- a/tests/Plugins/BBCodes/Configurator/BBCodeTest.php +++ b/tests/Plugins/BBCodes/Configurator/BBCodeTest.php @@ -38,11 +38,12 @@ public function testNormalizeNameValid() /** * @testdox BBCode::normalizeName('*invalid*') throws an exception - * @expectedException Exception - * @expectedExceptionMessage Invalid BBCode name */ public function testNormalizeNameInvalid() { + $this->expectException('Exception'); + $this->expectExceptionMessage('Invalid BBCode name'); + BBCode::normalizeName('*invalid*'); } diff --git a/tests/Plugins/BBCodes/Configurator/RepositoryTest.php b/tests/Plugins/BBCodes/Configurator/RepositoryTest.php index 20bed30792..49424ce97c 100644 --- a/tests/Plugins/BBCodes/Configurator/RepositoryTest.php +++ b/tests/Plugins/BBCodes/Configurator/RepositoryTest.php @@ -16,6 +16,7 @@ class RepositoryTest extends Test { /** * @testdox __construct() accepts the path to an XML file as argument + * @doesNotPerformAssertions */ public function testConstructorFile() { @@ -24,6 +25,7 @@ public function testConstructorFile() /** * @testdox __construct() accepts a DOMDocument as argument + * @doesNotPerformAssertions */ public function testConstructorDOMDocument() { @@ -35,37 +37,41 @@ public function testConstructorDOMDocument() /** * @testdox __construct() throws an exception if passed anything else - * @expectedException InvalidArgumentException - * @expectedExceptionMessage NULL is not a valid BBCode repository file */ public function testConstructorInvalidPath() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('NULL is not a valid BBCode repository file'); + $repository = new Repository(null, new BBCodeMonkey(new Configurator)); } /** * @testdox __construct() throws an exception if passed the path to a file that is not valid XML - * @expectedException InvalidArgumentException - * @expectedExceptionMessage is not a valid BBCode repository file */ public function testConstructorInvalidFile() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('is not a valid BBCode repository file'); + $repository = new Repository(__FILE__, new BBCodeMonkey(new Configurator)); } /** * @testdox get() throws an exception if the BBCode is not in repository - * @expectedException RuntimeException - * @expectedExceptionMessage Could not find 'FOOBAR' in repository */ public function testUnknownBBCode() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Could not find 'FOOBAR' in repository"); + $repository = new Repository(__DIR__ . '/../../../../src/Plugins/BBCodes/Configurator/repository.xml', new BBCodeMonkey(new Configurator)); $repository->get('FOOBAR'); } /** * @testdox get() normalizes the name before retrieval + * @doesNotPerformAssertions */ public function testNameIsNormalized() { diff --git a/tests/Plugins/BBCodes/ConfiguratorTest.php b/tests/Plugins/BBCodes/ConfiguratorTest.php index d9f6735621..bcf7da6d28 100644 --- a/tests/Plugins/BBCodes/ConfiguratorTest.php +++ b/tests/Plugins/BBCodes/ConfiguratorTest.php @@ -99,11 +99,12 @@ public function testAddFromRepositoryWithVars() /** * @testdox addFromRepository('B', 'foo') throws an exception if repository 'foo' does not exist - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Repository 'foo' does not exist */ public function testAddFromUnknownRepository() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage("Repository 'foo' does not exist"); + $plugin = $this->configurator->plugins->load('BBCodes'); $plugin->addFromRepository('MYBOLD', 'foo'); } @@ -174,10 +175,11 @@ public function testAddFromRepositoryNormalize() /** * @testdox addFromRepository() checks that the tag is safe before adding it - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException */ public function testAddFromRepositoryCheckUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $dom = new DOMDocument; $dom->loadXML( ' @@ -272,10 +274,11 @@ public function testAddCustomNormalize() /** * @testdox addCustom() checks that the tag is safe before adding it - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException */ public function testAddCustomCheckUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $plugin = $this->configurator->plugins->load('BBCodes'); try diff --git a/tests/Plugins/Censor/ConfiguratorTest.php b/tests/Plugins/Censor/ConfiguratorTest.php index 2b028cf0fe..0374463f34 100644 --- a/tests/Plugins/Censor/ConfiguratorTest.php +++ b/tests/Plugins/Censor/ConfiguratorTest.php @@ -189,7 +189,7 @@ public function testJavaScriptRegexpGrouping() $config = $plugin->asConfig(); $regexp = $config['regexp']->getJS(); - $this->assertNotContains('(?>', $regexp); + $this->assertStringNotContainsString('(?>', $regexp); } /** @@ -247,6 +247,7 @@ public function testGetHelperNoWords() /** * @testdox add() does not throw an exception on duplicates + * @doesNotPerformAssertions */ public function testAddDuplicate() { diff --git a/tests/Plugins/ConfiguratorBaseTest.php b/tests/Plugins/ConfiguratorBaseTest.php index 749f8ed77d..b2ddf25659 100644 --- a/tests/Plugins/ConfiguratorBaseTest.php +++ b/tests/Plugins/ConfiguratorBaseTest.php @@ -50,11 +50,12 @@ public function testSetUpAfterProps() /** * @testdox An exception is thrown if an unknown property is being set by the constructor - * @expectedException RuntimeException - * @expectedExceptionMessage Unknown property 'baz' */ public function testUnknownProperty() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unknown property 'baz'"); + new DummyPluginConfigurator($this->configurator, ['baz' => 'baz']); } @@ -78,21 +79,23 @@ public function testTagNameNormalize() /** * @testdox Constructor throws an exception if we attempt to set an attribute name but the property does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Unknown property 'attrName' */ public function testAttrNameNotExist() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unknown property 'attrName'"); + new EmptyPluginConfigurator($this->configurator, ['attrName' => 'XXX']); } /** * @testdox Constructor throws an exception if we attempt to set a tag name but the property does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Unknown property 'tagName' */ public function testTagNameNotExist() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Unknown property 'tagName'"); + new EmptyPluginConfigurator($this->configurator, ['tagName' => 'XXX']); } @@ -156,16 +159,17 @@ public function testSetQuickMatch() { $dummy = new DummyPluginConfigurator($this->configurator); $dummy->setQuickMatch('@'); - $this->assertAttributeEquals('@', 'quickMatch', $dummy); + $this->assertEquals('@', $this->getObjectProperty($dummy, 'quickMatch')); } /** * @testdox setQuickMatch() throws an exception on non-strings - * @expectedException InvalidArgumentException - * @expectedExceptionMessage quickMatch must be a string */ public function testSetQuickMatchInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('quickMatch must be a string'); + $dummy = new DummyPluginConfigurator($this->configurator); $dummy->setQuickMatch(null); } @@ -178,7 +182,7 @@ public function testDisableQuickMatch() $dummy = new DummyPluginConfigurator($this->configurator); $dummy->setQuickMatch('@'); $dummy->disableQuickMatch(); - $this->assertAttributeEquals(false, 'quickMatch', $dummy); + $this->assertFalse($this->getObjectProperty($dummy, 'quickMatch')); } /** @@ -188,16 +192,17 @@ public function testSetRegexpLimit() { $dummy = new DummyPluginConfigurator($this->configurator); $dummy->setRegexpLimit(1234); - $this->assertAttributeEquals(1234, 'regexpLimit', $dummy); + $this->assertEquals(1234, $this->getObjectProperty($dummy, 'regexpLimit')); } /** * @testdox setRegexpLimit() throws an exception on invalid values - * @expectedException InvalidArgumentException - * @expectedExceptionMessage regexpLimit must be a number greater than 0 */ public function testSetRegexpLimitInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('regexpLimit must be a number greater than 0'); + $dummy = new DummyPluginConfigurator($this->configurator); $dummy->setRegexpLimit(null); } @@ -223,6 +228,7 @@ public function testAsConfig() /** * @testdox Has a default finalize() method that doesn't do anything + * @doesNotPerformAssertions */ public function testFinalize() { @@ -273,11 +279,12 @@ public function testGetTag() /** * @testdox getTag() throws an exception if the plugin does not have a tagName property set - * @expectedException RuntimeException - * @expectedExceptionMessage No tag associated with this plugin */ public function testGetTagError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('No tag associated with this plugin'); + $dummy = new EmptyPluginConfigurator($this->configurator); $dummy->getTag(); @@ -304,7 +311,7 @@ public function setFoo() $this->foo = 'baz'; } - protected function setUp() + protected function setUp(): void { parent::setUp(); $this->setup = $this->bar; @@ -316,7 +323,7 @@ class TagCreatingPluginConfigurator extends ConfiguratorBase public $tagName = 'FOO'; public $attrName = 'BAR'; - protected function setUp() + protected function setUp(): void { $this->configurator->tags->add($this->tagName); } diff --git a/tests/Plugins/Emoji/ConfiguratorTest.php b/tests/Plugins/Emoji/ConfiguratorTest.php index 7969379634..6c4c196497 100644 --- a/tests/Plugins/Emoji/ConfiguratorTest.php +++ b/tests/Plugins/Emoji/ConfiguratorTest.php @@ -151,7 +151,7 @@ public function testConfigAliasesNoQuickMatch() public function testDefaultTemplateEmojiOne() { $this->configurator->Emoji; - $this->assertContains('emojione', (string) $this->configurator->tags['EMOJI']->template); + $this->assertStringContainsString('emojione', (string) $this->configurator->tags['EMOJI']->template); } /** diff --git a/tests/Plugins/Emoticons/Configurator/EmoticonCollectionTest.php b/tests/Plugins/Emoticons/Configurator/EmoticonCollectionTest.php index bae58b80df..7e784d12db 100644 --- a/tests/Plugins/Emoticons/Configurator/EmoticonCollectionTest.php +++ b/tests/Plugins/Emoticons/Configurator/EmoticonCollectionTest.php @@ -23,10 +23,11 @@ public function testHTML() /** * @testdox Throws an exception when an invalid template is set - * @expectedException RuntimeException */ public function testInvalid() { + $this->expectException('RuntimeException'); + $collection = new EmoticonCollection; $collection->set(':)', ''); } @@ -46,11 +47,12 @@ public function testDuplicateDefault() /** * @testdox Throws an meaningful exception message when creating an emoticon that already exists - * @expectedException RuntimeException - * @expectedExceptionMessage Emoticon ':)' already exists */ public function testDuplicateError() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Emoticon ':)' already exists"); + $collection = new EmoticonCollection; $collection->onDuplicate('error'); $collection->add(':)', ':('); @@ -59,11 +61,12 @@ public function testDuplicateError() /** * @testdox Has a customized exception message on uninitialized access - * @expectedException RuntimeException - * @expectedExceptionMessage Emoticon ':)' does not exist */ public function testExceptionMissing() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Emoticon ':)' does not exist"); + $collection = new EmoticonCollection; $collection->get(':)'); } diff --git a/tests/Plugins/Emoticons/ConfiguratorTest.php b/tests/Plugins/Emoticons/ConfiguratorTest.php index 24a0f9c2b9..6cb6ee34aa 100644 --- a/tests/Plugins/Emoticons/ConfiguratorTest.php +++ b/tests/Plugins/Emoticons/ConfiguratorTest.php @@ -51,8 +51,8 @@ public function testSetXSL() $xsl = $plugin->getTemplate(); - $this->assertContains(':)', $xsl); - $this->assertContains('', $xsl); + $this->assertStringContainsString(':)', $xsl); + $this->assertStringContainsString('', $xsl); } /** @@ -65,8 +65,8 @@ public function testSetHTML() $xsl = $plugin->getTemplate(); - $this->assertContains(':)', $xsl); - $this->assertContains('', $xsl); + $this->assertStringContainsString(':)', $xsl); + $this->assertStringContainsString('', $xsl); } /** @@ -79,8 +79,8 @@ public function testSingleQuotes() $xsl = $plugin->getTemplate(); - $this->assertContains(":')", $xsl); - $this->assertContains('', $xsl); + $this->assertStringContainsString(":')", $xsl); + $this->assertStringContainsString('', $xsl); } /** @@ -93,8 +93,8 @@ public function testDoubleQuotes() $xsl = $plugin->getTemplate(); - $this->assertContains("'"_"'", $xsl); - $this->assertContains('', $xsl); + $this->assertStringContainsString("'"_"'", $xsl); + $this->assertStringContainsString('', $xsl); } /** @@ -107,7 +107,7 @@ public function testBothQuotes() $xsl = $plugin->getTemplate(); - $this->assertContains('', $xsl); + $this->assertStringContainsString('', $xsl); } /** diff --git a/tests/Plugins/HTMLElements/ConfiguratorTest.php b/tests/Plugins/HTMLElements/ConfiguratorTest.php index 1de39cf417..42f01a3bb2 100644 --- a/tests/Plugins/HTMLElements/ConfiguratorTest.php +++ b/tests/Plugins/HTMLElements/ConfiguratorTest.php @@ -106,11 +106,12 @@ public function testCustomPrefix() /** * @testdox allowElement('script') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage elements are unsafe */ public function testUnsafeElement() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('elements are unsafe'); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowElement('script'); } @@ -191,22 +192,24 @@ public function testFilter() /** * @testdox allowAttribute('b', 'title') throws an exception if 'b' was not explicitly allowed - * @expectedException RuntimeException - * @expectedExceptionMessage Element 'b' has not been allowed */ public function testAttributeOnUnknownElement() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Element 'b' has not been allowed"); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowAttribute('b', 'title'); } /** * @testdox allowAttribute('span', 'onmouseover') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage attributes are unsafe */ public function testUnsafeAttribute() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('attributes are unsafe'); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowElement('span'); $plugin->allowAttribute('span', 'onmouseover'); @@ -214,11 +217,12 @@ public function testUnsafeAttribute() /** * @testdox allowAttribute('span', 'style') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage attributes are unsafe */ public function testUnsafeAttribute2() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('attributes are unsafe'); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowElement('span'); $plugin->allowAttribute('span', 'style'); @@ -252,10 +256,12 @@ public function testAllowUnsafeAttributeInstance() /** * @testdox allowElement('*invalid*') throws an exception - * @expectedException InvalidArgumentException invalid */ public function testInvalidElementName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('invalid'); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowElement('*invalid*'); } @@ -274,10 +280,12 @@ public function testAttributeNameDash() /** * @testdox allowAttribute('b', '*invalid*') throws an exception - * @expectedException InvalidArgumentException invalid */ public function testInvalidAttributeName() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('invalid'); + $plugin = $this->configurator->plugins->load('HTMLElements'); $plugin->allowElement('b'); $plugin->allowAttribute('b', '*invalid*'); diff --git a/tests/Plugins/Litedown/ConfiguratorTest.php b/tests/Plugins/Litedown/ConfiguratorTest.php index 668470fa7e..6764b8f8e6 100644 --- a/tests/Plugins/Litedown/ConfiguratorTest.php +++ b/tests/Plugins/Litedown/ConfiguratorTest.php @@ -47,7 +47,7 @@ public function testPreservesURL() */ public function testAsConfig() { - $this->assertInternalType('array', $this->configurator->Litedown->asConfig()); + $this->assertIsArray($this->configurator->Litedown->asConfig()); } /** diff --git a/tests/Plugins/MediaEmbed/Configurator/Collections/CachedDefinitionCollectionTest.php b/tests/Plugins/MediaEmbed/Configurator/Collections/CachedDefinitionCollectionTest.php index a3a52770c4..d382bfefae 100644 --- a/tests/Plugins/MediaEmbed/Configurator/Collections/CachedDefinitionCollectionTest.php +++ b/tests/Plugins/MediaEmbed/Configurator/Collections/CachedDefinitionCollectionTest.php @@ -31,11 +31,12 @@ public function testIssetFalse() /** * @testdox get('*invalid*') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testIssetInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $collection = new CachedDefinitionCollection; $collection->get('*invalid*'); } @@ -47,7 +48,7 @@ public function testIsIterable() { $collection = new CachedDefinitionCollection; $sites = iterator_to_array($collection); - $this->assertInternalType('array', $sites); + $this->assertIsArray($sites); $this->assertArrayHasKey('youtube', $sites); } @@ -58,29 +59,31 @@ public function testGet() { $collection = new CachedDefinitionCollection; $siteConfig = $collection->get('youtube'); - $this->assertInternalType('array', $siteConfig); + $this->assertIsArray($siteConfig); $this->assertArrayHasKey('host', $siteConfig); $this->assertContains('youtube.com', $siteConfig['host']); } /** * @testdox get('unknown') returns FALSE - * @expectedException RuntimeException - * @expectedExceptionMessage Media site 'unknown' does not exist */ public function testGetUnknown() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Media site 'unknown' does not exist"); + $collection = new CachedDefinitionCollection; $siteConfig = $collection->get('unknown'); } /** * @testdox get('*invalid*') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testGetInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $collection = new CachedDefinitionCollection; $siteConfig = $collection->get('*invalid*'); } diff --git a/tests/Plugins/MediaEmbed/Configurator/Collections/SiteDefinitionCollectionTest.php b/tests/Plugins/MediaEmbed/Configurator/Collections/SiteDefinitionCollectionTest.php index 6765bb0a7f..39271617a4 100644 --- a/tests/Plugins/MediaEmbed/Configurator/Collections/SiteDefinitionCollectionTest.php +++ b/tests/Plugins/MediaEmbed/Configurator/Collections/SiteDefinitionCollectionTest.php @@ -30,55 +30,60 @@ public function testWorks() /** * @testdox get() throws a meaningful exception if the site ID does not exist - * @expectedException RuntimeException - * @expectedExceptionMessage Media site 'foo' does not exist */ public function testUnknown() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Media site 'foo' does not exist"); + $collection = new SiteDefinitionCollection; $collection->get('foo'); } /** * @testdox Throws an exception if the site ID is not valid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testInvalidID() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $collection = new SiteDefinitionCollection; $collection->set('*x*', []); } /** * @testdox set() throws an exception if the site config is not an array - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site definition type */ public function testInvalidType() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site definition type'); + $collection = new SiteDefinitionCollection; $collection->set('x', ''); } /** * @testdox set() throws an exception if the site config does not contain a host - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Missing host from site definition */ public function testMissingHost() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Missing host from site definition'); + $collection = new SiteDefinitionCollection; $collection->set('x', []); } /** * @testdox add() throws a meaningful exception if the site ID already exists - * @expectedException RuntimeException - * @expectedExceptionMessage Media site 'foo' already exists */ public function testAlreadyExists() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Media site 'foo' already exists"); + $collection = new SiteDefinitionCollection; $collection->onDuplicate('error'); $collection->add('foo', ['host' => ['localhost']]); diff --git a/tests/Plugins/MediaEmbed/Configurator/Collections/XmlFileDefinitionCollectionTest.php b/tests/Plugins/MediaEmbed/Configurator/Collections/XmlFileDefinitionCollectionTest.php index 35a1d669c3..52cd9788cf 100644 --- a/tests/Plugins/MediaEmbed/Configurator/Collections/XmlFileDefinitionCollectionTest.php +++ b/tests/Plugins/MediaEmbed/Configurator/Collections/XmlFileDefinitionCollectionTest.php @@ -55,11 +55,12 @@ public function testIssetFalse() /** * @testdox isset('*invalid*') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testIssetInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); isset($collection['*invalid*']); } @@ -84,7 +85,7 @@ public function testIsIterable() $siteId = $this->generateDefinition(); $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $sites = iterator_to_array($collection); - $this->assertInternalType('array', $sites); + $this->assertIsArray($sites); $this->assertArrayHasKey($siteId, $sites); } @@ -96,40 +97,43 @@ public function testGet() $siteId = $this->generateDefinition(); $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get($siteId); - $this->assertInternalType('array', $siteConfig); + $this->assertIsArray($siteConfig); $this->assertArrayHasKey('host', $siteConfig); $this->assertContains('localhost', $siteConfig['host']); } /** * @testdox get('unknown') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage Media site 'unknown' does not exist */ public function testGetUnknown() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Media site 'unknown' does not exist"); + $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get('unknown'); } /** * @testdox get('*invalid*') throws an exception - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testGetInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get('*invalid*'); } /** * @testdox The constructor throws an exception if the dir does not exist - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site directory */ public function testPathInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site directory'); + new XmlFileDefinitionCollection('/invalid/path'); } @@ -141,7 +145,7 @@ public function testGetMultipleNodes() $siteId = $this->generateDefinition(); $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get($siteId); - $this->assertInternalType('array', $siteConfig); + $this->assertIsArray($siteConfig); $this->assertArrayHasKey('host', $siteConfig); $this->assertContains('localhost', $siteConfig['host']); $this->assertContains('127.0.0.1', $siteConfig['host']); @@ -156,7 +160,7 @@ public function testNoWhitespace() $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get($siteId); $this->assertArrayHasKey('attributes', $siteConfig); - $this->assertInternalType('array', $siteConfig['attributes']); + $this->assertIsArray( $siteConfig['attributes']); $this->assertArrayHasKey('volume', $siteConfig['attributes']); } @@ -169,7 +173,7 @@ public function testCDATA() $collection = new XmlFileDefinitionCollection(sys_get_temp_dir()); $siteConfig = $collection->get($siteId); $this->assertArrayHasKey('onload', $siteConfig['iframe']); - $this->assertInternalType('string', $siteConfig['iframe']['onload']); + $this->assertIsString($siteConfig['iframe']['onload']); $this->assertSame('alert(1)', $siteConfig['iframe']['onload']); } diff --git a/tests/Plugins/MediaEmbed/Configurator/TemplateBuilderTest.php b/tests/Plugins/MediaEmbed/Configurator/TemplateBuilderTest.php index 24a88eaf9b..227799218c 100644 --- a/tests/Plugins/MediaEmbed/Configurator/TemplateBuilderTest.php +++ b/tests/Plugins/MediaEmbed/Configurator/TemplateBuilderTest.php @@ -25,7 +25,7 @@ public function testEmpty() public function testFlash() { $templateBuilder = new TemplateBuilder; - $this->assertContains('getTemplate(['flash' => ['src' => '']])); + $this->assertStringContainsString('getTemplate(['flash' => ['src' => '']])); } /** @@ -34,7 +34,7 @@ public function testFlash() public function testIframe() { $templateBuilder = new TemplateBuilder; - $this->assertContains('getTemplate(['iframe' => ['src' => '']])); + $this->assertStringContainsString('getTemplate(['iframe' => ['src' => '']])); } /** @@ -54,8 +54,8 @@ public function testMulti() ] ] ]); - $this->assertContains('assertContains('assertStringContainsString('assertStringContainsString('assertContains( + $this->assertStringContainsString( 'build('foo', ['iframe' => ['src' => '']]) ); @@ -90,7 +90,7 @@ public function testSiteIdChoose() $templateBuilder = new TemplateBuilder; $template = $templateBuilder->build('foo', $attributes); - $this->assertContains('assertStringContainsString('assertNotRegexp('(]+data-s9e-mediaembed)', $template); } } \ No newline at end of file diff --git a/tests/Plugins/MediaEmbed/ConfiguratorTest.php b/tests/Plugins/MediaEmbed/ConfiguratorTest.php index bd1935e58b..a036314235 100644 --- a/tests/Plugins/MediaEmbed/ConfiguratorTest.php +++ b/tests/Plugins/MediaEmbed/ConfiguratorTest.php @@ -51,11 +51,12 @@ public function testSiteBBCodeDefault() /** * @testdox add('inexistent') throws an exception - * @expectedException RuntimeException - * @expectedExceptionMessage Media site 'inexistent' does not exist */ public function testAddInexistent() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Media site 'inexistent' does not exist"); + $this->configurator->MediaEmbed->add('inexistent'); } @@ -289,11 +290,12 @@ public function testAddChooseMultiple() /** * @testdox add() checks the tag's safety before adding it - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException - * @expectedExceptionMessage Attribute 'id' is not properly sanitized */ public function testAddUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->expectExceptionMessage("Attribute 'id' is not properly sanitized"); + try { $this->configurator->MediaEmbed->add( @@ -353,11 +355,12 @@ public function testAddExplicitAttributes() /** * @testdox add() throws a RuntimeException if a filter is not allowed - * @expectedException RuntimeException - * @expectedExceptionMessage Filter 'eval' is not allowed in media sites */ public function testDisallowedFilter() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage("Filter 'eval' is not allowed in media sites"); + $tag = $this->configurator->MediaEmbed->add( 'youtube', [ @@ -400,11 +403,12 @@ public function testAddDefaultValue() /** * @testdox add() throws an InvalidArgumentException if the site ID is not entirely made of alphanumeric characters - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid site ID */ public function testAddInvalidId() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid site ID'); + $tag = $this->configurator->MediaEmbed->add( '../youtube', [ @@ -449,7 +453,7 @@ public function testAsConfigRegexp() $config = $this->configurator->MediaEmbed->asConfig(); - $this->assertInternalType('array', $config); + $this->assertIsArray($config); $this->assertArrayHasKey('regexp', $config); } diff --git a/tests/Plugins/ParserBaseTest.php b/tests/Plugins/ParserBaseTest.php index d0dee5630f..939c0d9b26 100644 --- a/tests/Plugins/ParserBaseTest.php +++ b/tests/Plugins/ParserBaseTest.php @@ -59,7 +59,7 @@ class DummyPluginParser extends ParserBase public $configWasSet; public $parserWasSet; - public function setUp() + protected function setUp(): void { ++$this->called; $this->configWasSet = isset($this->config); diff --git a/tests/Plugins/Preg/ConfiguratorTest.php b/tests/Plugins/Preg/ConfiguratorTest.php index 96994fde7f..0b06011a24 100644 --- a/tests/Plugins/Preg/ConfiguratorTest.php +++ b/tests/Plugins/Preg/ConfiguratorTest.php @@ -48,11 +48,12 @@ public function testAddCustomTagNameNormalized() /** * @testdox The name of the tag is validated - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid tag name */ public function testAddCustomTagNameInvalid() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid tag name'); + $this->configurator->Preg->replace('/(?[0-9]+)/', '', 'foo:bar:baz'); } @@ -69,11 +70,12 @@ public function testAddReturn() /** * @testdox replace() throws an exception if the regexp is invalid - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Invalid regexp */ public function testInvalidRegexp() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Invalid regexp'); + $plugin = $this->configurator->plugins->load('Preg'); $plugin->replace('invalid', ''); } @@ -391,10 +393,11 @@ public function testNormalize() /** * @testdox replace() checks the safeness of the tag - * @expectedException s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException */ public function testUnsafe() { + $this->expectException('s9e\\TextFormatter\\Configurator\\Exceptions\\UnsafeTemplateException'); + $this->configurator->Preg->replace('#<(.*)>#', ''); } diff --git a/tests/RendererTest.php b/tests/RendererTest.php index ee41826143..a49cb171b7 100644 --- a/tests/RendererTest.php +++ b/tests/RendererTest.php @@ -25,21 +25,23 @@ public function testLoadXML() /** * @testdox render() throws an exception on invalid XML with a "r" root tag - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Cannot load XML: Premature end of data in tag r */ public function testInvalidXMLRich() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Cannot load XML: Premature end of data in tag r'); + $this->configurator->rendering->getRenderer()->render(''); } /** * @testdox render() throws an exception on truncated XML with a "t" root tag - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Cannot load XML: Premature end of data in tag t */ public function testInvalidXMLPlain() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Cannot load XML: Premature end of data in tag t'); + $this->configurator->rendering->getRenderer()->render(''); } } diff --git a/tests/RendererTests.php b/tests/RendererTests.php index 943db9d3b4..0df53c7526 100644 --- a/tests/RendererTests.php +++ b/tests/RendererTests.php @@ -179,10 +179,12 @@ public function testGetParameterUnserialized() /** * @testdox DTDs in the XML representation cause an exception to be thrown - * @expectedException InvalidArgumentException DTD */ public function testDTD() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('DTD'); + $xml = ']>' . 'x&foo;y'; @@ -191,28 +193,34 @@ public function testDTD() /** * @testdox Comments in the XML representation cause an exception to be thrown - * @expectedException InvalidArgumentException comments */ public function testComment() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('comments'); + $this->configurator->rendering->getRenderer()->render('foo'); } /** * @testdox Processing instructions in the XML representation cause an exception to be thrown - * @expectedException InvalidArgumentException Processing */ public function testPI() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Processing'); + $this->configurator->rendering->getRenderer()->render('foo'); } /** * @testdox Is not vulnerable to XXE - * @expectedException InvalidArgumentException DTD */ public function testXXE() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('DTD'); + $xml = ']>' . 'x&xxe;y'; diff --git a/tests/Renderers/PHPTest.php b/tests/Renderers/PHPTest.php index 07a3e4884b..1b6ac31a54 100644 --- a/tests/Renderers/PHPTest.php +++ b/tests/Renderers/PHPTest.php @@ -16,11 +16,16 @@ class PHPTest extends Test { use RendererTests; - public function setUp() + protected function setUp(): void { $this->configurator->rendering->engine = 'PHP'; } + protected function tearDown(): void + { + array_map('unlink', glob(sys_get_temp_dir() . '/Renderer_*.php')); + } + /** * @testdox Is serializable */ @@ -42,7 +47,7 @@ public function testNoSourceSerialize() { $renderer = $this->configurator->rendering->getRenderer(); - $this->assertNotContains('source', serialize($renderer)); + $this->assertStringNotContainsString('source', serialize($renderer)); } /** @@ -53,7 +58,7 @@ public function testNoOutputSerialize() $renderer = $this->configurator->rendering->getRenderer(); $renderer->render('xxx'); - $this->assertNotContains('out', serialize($renderer)); + $this->assertStringNotContainsString('out', serialize($renderer)); } /** @@ -74,38 +79,33 @@ public function testResourcesUnset() { continue; } + $prop->setAccessible(true); - $this->assertAttributeNotInternalType( - 'object', - $prop->getName(), - $renderer - ); - $this->assertAttributeNotInternalType( - 'resource', - $prop->getName(), - $renderer - ); + $this->assertIsNotObject($prop->getValue($renderer)); + $this->assertIsNotResource($prop->getValue($renderer)); } } /** * @testdox The abstract renderer has a default implementation for renderQuickTemplate() - * @expectedException RuntimeException - * @expectedExceptionMessage Not implemented */ public function testDefaultQuickTemplate() { + $this->expectException('RuntimeException'); + $this->expectExceptionMessage('Not implemented'); + $renderer = new DummyRenderer; $renderer->callRenderQuickTemplate(); } /** * @testdox render() throws an exception on invalid XML with a "r" root tag that could be rendered by the Quick renderer - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Cannot load XML: Premature end of data in tag r */ public function testInvalidXMLQuick() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Cannot load XML: Premature end of data in tag r'); + $this->configurator->rendering->getRenderer()->render(''); } } diff --git a/tests/Renderers/UnformattedTest.php b/tests/Renderers/UnformattedTest.php index a4b5b87637..6a7397b149 100644 --- a/tests/Renderers/UnformattedTest.php +++ b/tests/Renderers/UnformattedTest.php @@ -67,6 +67,7 @@ public function testEncodesSpecialChars() /** * @testdox setParameter() doesn't do anything + * @doesNotPerformAssertions */ public function testSetParameter() { diff --git a/tests/Renderers/XSLTTest.php b/tests/Renderers/XSLTTest.php index afd19ea018..87f76f39cf 100644 --- a/tests/Renderers/XSLTTest.php +++ b/tests/Renderers/XSLTTest.php @@ -35,7 +35,7 @@ public function testSerializableNoProc() $renderer = $this->configurator->rendering->getRenderer(); $renderer->render('..'); - $this->assertNotContains( + $this->assertStringNotContainsString( 'XSLTProcessor', serialize($renderer) ); @@ -49,11 +49,7 @@ public function testSerializableCustomProps() $renderer = $this->configurator->rendering->getRenderer(); $renderer->foo = 'bar'; - $this->assertAttributeEquals( - 'bar', - 'foo', - unserialize(serialize($renderer)) - ); + $this->assertStringContainsString('s:3:"foo";s:3:"bar";', serialize($renderer)); } /** diff --git a/tests/Test.php b/tests/Test.php index 4d5e48f137..aea47838b9 100644 --- a/tests/Test.php +++ b/tests/Test.php @@ -3,12 +3,14 @@ namespace s9e\TextFormatter\Tests; use Exception; +use PHPUnit\Framework\TestCase; +use ReflectionClass; use RuntimeException; use s9e\TextFormatter\Configurator; -abstract class Test extends \PHPUnit_Framework_TestCase +abstract class Test extends TestCase { - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { foreach (self::$tmpFiles as $filepath) { @@ -89,7 +91,9 @@ function () use ($callback, $parser) if ($expected instanceof Exception) { - $this->setExpectedException(get_class($expected), $expected->getMessage()); + $this->expectException(get_class($expected)); + $this->expectExceptionMessage($expected->getMessage()); + } $this->assertSame($expected, $parser->parse($original)); @@ -229,4 +233,13 @@ protected function getParser($configurator = null) return $objects['parser']; } + + protected function getObjectProperty($object, $propName) + { + $class = new ReflectionClass(get_class($object)); + $prop = $class->getProperty($propName); + $prop->setAccessible(true); + + return $prop->getValue($object); + } } \ No newline at end of file diff --git a/tests/Utils/Http/Clients/AbstractTest.php b/tests/Utils/Http/Clients/AbstractTest.php index 9a1ebe29a1..3ba4c16fc2 100644 --- a/tests/Utils/Http/Clients/AbstractTest.php +++ b/tests/Utils/Http/Clients/AbstractTest.php @@ -10,7 +10,7 @@ abstract protected function getInstance(); protected $url = 'http://localhost/reflect.php'; - public function setUp() + protected function setUp(): void { if (!empty($_SERVER['TRAVIS'])) { @@ -31,7 +31,7 @@ public function testUsesGzipDefault() $client = $this->getInstance(); $vars = unserialize($client->get($this->url)); $this->assertArrayHasKey('HTTP_ACCEPT_ENCODING', $vars['_SERVER']); - $this->assertContains('gzip', $vars['_SERVER']['HTTP_ACCEPT_ENCODING']); + $this->assertStringContainsString('gzip', $vars['_SERVER']['HTTP_ACCEPT_ENCODING']); } /** diff --git a/tests/Utils/Http/Clients/CachedTest.php b/tests/Utils/Http/Clients/CachedTest.php index e67bd59035..97d852cabc 100644 --- a/tests/Utils/Http/Clients/CachedTest.php +++ b/tests/Utils/Http/Clients/CachedTest.php @@ -10,7 +10,7 @@ */ class CachedTest extends AbstractTest { - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { array_map('unlink', glob(sys_get_temp_dir() . '/http.*.gz')); } diff --git a/tests/Utils/XPathTest.php b/tests/Utils/XPathTest.php index 2722a23010..e02577b5a6 100644 --- a/tests/Utils/XPathTest.php +++ b/tests/Utils/XPathTest.php @@ -75,10 +75,12 @@ public function testExportFloatLocale() /** * @testdox export(new stdClass) throws an exception - * @expectedException InvalidArgumentException non-scalar */ public function testExportObject() { + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('non-scalar'); + XPath::export(new \stdClass); } } \ No newline at end of file