1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-23 09:02:41 +00:00
Arsse/tests/cases/Misc/TestRule.php
J. King 6dba8aa66b Fixes for rules
- Whitespace is now collapsed before evaluating rules
- Feed tests are fixed to retrieve a dumy set of rules
- Rule evaluation during feed parsing also filled out
2021-01-07 15:08:50 -05:00

52 lines
2.3 KiB
PHP

<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse\TestCase\Misc;
use JKingWeb\Arsse\Rule\Rule;
use JKingWeb\Arsse\Rule\Exception;
/** @covers \JKingWeb\Arsse\Rule\Rule */
class TestRule extends \JKingWeb\Arsse\Test\AbstractTest {
public function testPrepareAPattern(): void {
$exp = "`\\`..\\`..\\`..\\\\\\`..`u";
$this->assertTrue(Rule::validate("`..`..\\`..\\\\`.."));
$this->assertSame($exp, Rule::prep("`..`..\\`..\\\\`.."));
}
public function testPrepareAnInvalidPattern(): void {
$this->assertFalse(Rule::validate("["));
$this->assertException("invalidPattern", "Rule");
Rule::prep("[");
}
/** @dataProvider provideApplications */
public function testApplyRules(string $keepRule, string $blockRule, string $title, array $categories, $exp): void {
if ($exp instanceof \Exception) {
$this->assertException($exp);
Rule::apply($keepRule, $blockRule, $title, $categories);
} else {
$this->assertSame($exp, Rule::apply($keepRule, $blockRule, $title, $categories));
}
}
public function provideApplications(): iterable {
return [
["", "", "Title", ["Dummy", "Category"], true],
["^Title$", "", "Title", ["Dummy", "Category"], true],
["^Category$", "", "Title", ["Dummy", "Category"], true],
["^Naught$", "", "Title", ["Dummy", "Category"], false],
["", "^Title$", "Title", ["Dummy", "Category"], false],
["", "^Category$", "Title", ["Dummy", "Category"], false],
["", "^Naught$", "Title", ["Dummy", "Category"], true],
["^Category$", "^Category$", "Title", ["Dummy", "Category"], false],
["[", "", "Title", ["Dummy", "Category"], true],
["", "[", "Title", ["Dummy", "Category"], true],
["", "^A B C$", "A B\nC", ["X\n Y \t \r Z"], false],
["", "^X Y Z$", "A B\nC", ["X\n Y \t \r Z"], false],
];
}
}