<?php

use Bat\StringTool;
use PhpBeast\AuthorTestAggregator;
use PhpBeast\PrettyTestInterpreter;
require_once "bigbang.php";
//------------------------------------------------------------------------------/
// EXHAUSTING TEST DEMO
//------------------------------------------------------------------------------/
$agg = AuthorTestAggregator::create();
$a = ['hello68', 'hello', 'hello-78.79', '123'];
$b = [['hello', 68], ['hello', false], ['hello-78.', 79], ['', 123]];
$agg->addTestsByColumn($a, $b, function ($value, $expected, &$msg) {
    $res = StringTool::cutNumericalSuffix($value);
    return $expected === $res;
});
PrettyTestInterpreter::create()->execute($agg);
<?php

use Bat\StringTool;
use PhpBeast\AuthorTestAggregator;
use PhpBeast\PrettyTestInterpreter;
require_once "bigbang.php";
//------------------------------------------------------------------------------/
// EXHAUSTING TEST DEMO
//------------------------------------------------------------------------------/
$agg = AuthorTestAggregator::create();
$a = [['Hum, hello, did you hear me say hello?', 'hello', 0], ["Cet été, il faisait beau. Cet été c'était bien.", 'été', 0], ["Cet été, il faisait beau. Cet été c'était bien.", 'été', 4], ["Cet été, il faisait beau. Cet été c'était bien.", 'été', 5], ["Cet été, il faisait beau. Cet été c'était bien.", 'été', 0, 'iso-8859-1']];
$b = [[5, 32], [4, 30], [4, 30], [30], [4, 32]];
$agg->addTestsByColumn($a, $b, function ($value, $expected, &$msg) {
    $encoding = 'utf-8';
    if (array_key_exists(3, $value)) {
        $encoding = $value[3];
    }
    mb_internal_encoding($encoding);
    list($haystack, $needle, $offset) = $value;
    $res = StringTool::strPosAll($haystack, $needle, $offset);
    return $expected === $res;
});
PrettyTestInterpreter::create()->execute($agg);
<?php

use Bat\FileSystemTool;
use Bat\StringTool;
use PhpBeast\AuthorTestAggregator;
use PhpBeast\PrettyTestInterpreter;
require_once "bigbang.php";
//------------------------------------------------------------------------------/
//
//------------------------------------------------------------------------------/
$agg = AuthorTestAggregator::create();
$a = [['', 0, 0, ''], ['abcdefgh', 0, 0, ''], ['abcdefgh', 0, 1, ''], ['abcdefgh', 0, 1, 'ppp'], ['abcdefgh', 2, 1, 'ppp'], ['aéliope', 2, 1, 'ppp'], ['aéliope', 2, 4, 'ppp']];
$b = ['', 'abcdefgh', 'bcdefgh', 'pppbcdefgh', 'abpppdefgh', 'aépppiope', 'aépppe'];
$agg->addTestsByColumn($a, $b, function ($value, $expected, &$msg) {
    list($string, $start, $length, $replacement) = $value;
    $res = StringTool::replacePortion($string, $start, $length, $replacement);
    return $expected === $res;
});
PrettyTestInterpreter::create()->execute($agg);
<?php

use Bat\StringTool;
use PhpBeast\AuthorTestAggregator;
use PhpBeast\PrettyTestInterpreter;
require_once "bigbang.php";
$agg = AuthorTestAggregator::create();
$a = ['camelCase', 'thisIsNotCorrect', 'simpleXML', 'localDb2Remote', 'notFound404'];
$b = ['CAMEL_CASE', 'THIS_IS_NOT_CORRECT', 'SIMPLE_XML', 'LOCAL_DB_2_REMOTE', 'NOT_FOUND_404'];
$c = [456, null, true, false];
$agg->addTestsByColumn($a, $b, function ($value, $expected, &$msg) {
    $res = StringTool::camelCase2Constant($value);
    return $expected === $res;
});
$agg->addExceptionTests($c, function ($v) {
    StringTool::camelCase2Constant($v);
}, ['0-2' => 'InvalidArgumentException', '3' => ['msgSub' => 'argument']]);
PrettyTestInterpreter::create()->execute($agg);
 /**
  * @return mixed
  */
 public function getValue($line)
 {
     return StringTool::autoCast($line);
 }
<?php

use Bat\FileSystemTool;
use Bat\StringTool;
use PhpBeast\AuthorTestAggregator;
use PhpBeast\PrettyTestInterpreter;
require_once "bigbang.php";
$agg = AuthorTestAggregator::create();
$a = [[], ['required'], ['class' => 'doo'], ['class' => 'doo', 'required', "id" => "foo"], ['src' => '/cet-été/dummy']];
$b = ['', ' required', ' class="doo"', ' class="doo" required id="foo"', ' src="/cet-été/dummy"'];
$agg->addTestsByColumn($a, $b, function ($value, $expected, &$msg) {
    $res = StringTool::htmlAttributes($value);
    return $expected === $res;
});
PrettyTestInterpreter::create()->execute($agg);