mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-23 09:02:41 +00:00
297 lines
12 KiB
PHP
297 lines
12 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
namespace JKingWeb\Arsse;
|
|
|
|
use JKingWeb\Arsse\Misc\ValueInfo as I;
|
|
use JKingWeb\Arsse\Test\Misc\StrClass;
|
|
|
|
/** @covers \JKingWeb\Arsse\Misc\ValueInfo */
|
|
class TestValueInfo extends Test\AbstractTest {
|
|
public function testGetIntegerInfo() {
|
|
$tests = [
|
|
[null, I::NULL],
|
|
["", I::NULL],
|
|
[1, I::VALID],
|
|
[PHP_INT_MAX, I::VALID],
|
|
[1.0, I::VALID],
|
|
["1.0", I::VALID],
|
|
["001.0", I::VALID],
|
|
["1.0e2", I::VALID],
|
|
["1", I::VALID],
|
|
["001", I::VALID],
|
|
["1e2", I::VALID],
|
|
["+1.0", I::VALID],
|
|
["+001.0", I::VALID],
|
|
["+1.0e2", I::VALID],
|
|
["+1", I::VALID],
|
|
["+001", I::VALID],
|
|
["+1e2", I::VALID],
|
|
[0, I::VALID | I::ZERO],
|
|
["0", I::VALID | I::ZERO],
|
|
["000", I::VALID | I::ZERO],
|
|
[0.0, I::VALID | I::ZERO],
|
|
["0.0", I::VALID | I::ZERO],
|
|
["000.000", I::VALID | I::ZERO],
|
|
["+0", I::VALID | I::ZERO],
|
|
["+000", I::VALID | I::ZERO],
|
|
["+0.0", I::VALID | I::ZERO],
|
|
["+000.000", I::VALID | I::ZERO],
|
|
[-1, I::VALID | I::NEG],
|
|
[-1.0, I::VALID | I::NEG],
|
|
["-1.0", I::VALID | I::NEG],
|
|
["-001.0", I::VALID | I::NEG],
|
|
["-1.0e2", I::VALID | I::NEG],
|
|
["-1", I::VALID | I::NEG],
|
|
["-001", I::VALID | I::NEG],
|
|
["-1e2", I::VALID | I::NEG],
|
|
[-0, I::VALID | I::ZERO],
|
|
["-0", I::VALID | I::ZERO],
|
|
["-000", I::VALID | I::ZERO],
|
|
[-0.0, I::VALID | I::ZERO],
|
|
["-0.0", I::VALID | I::ZERO],
|
|
["-000.000", I::VALID | I::ZERO],
|
|
[false, 0],
|
|
[true, 0],
|
|
["on", 0],
|
|
["off", 0],
|
|
["yes", 0],
|
|
["no", 0],
|
|
["true", 0],
|
|
["false", 0],
|
|
[INF, 0],
|
|
[-INF, 0],
|
|
[NAN, 0],
|
|
[[], 0],
|
|
["some string", 0],
|
|
[" ", 0],
|
|
[new \StdClass, 0],
|
|
[new StrClass(""), I::NULL],
|
|
[new StrClass("1"), I::VALID],
|
|
[new StrClass("0"), I::VALID | I::ZERO],
|
|
[new StrClass("-1"), I::VALID | I::NEG],
|
|
[new StrClass("Msg"), 0],
|
|
[new StrClass(" "), 0],
|
|
];
|
|
foreach ($tests as $test) {
|
|
list($value, $exp) = $test;
|
|
$this->assertSame($exp, I::int($value), "Test returned ".decbin(I::int($value))." for value: ".var_export($value, true));
|
|
}
|
|
}
|
|
public function testGetStringInfo() {
|
|
$tests = [
|
|
[null, I::NULL],
|
|
["", I::VALID | I::EMPTY],
|
|
[1, I::VALID],
|
|
[PHP_INT_MAX, I::VALID],
|
|
[1.0, I::VALID],
|
|
["1.0", I::VALID],
|
|
["001.0", I::VALID],
|
|
["1.0e2", I::VALID],
|
|
["1", I::VALID],
|
|
["001", I::VALID],
|
|
["1e2", I::VALID],
|
|
["+1.0", I::VALID],
|
|
["+001.0", I::VALID],
|
|
["+1.0e2", I::VALID],
|
|
["+1", I::VALID],
|
|
["+001", I::VALID],
|
|
["+1e2", I::VALID],
|
|
[0, I::VALID],
|
|
["0", I::VALID],
|
|
["000", I::VALID],
|
|
[0.0, I::VALID],
|
|
["0.0", I::VALID],
|
|
["000.000", I::VALID],
|
|
["+0", I::VALID],
|
|
["+000", I::VALID],
|
|
["+0.0", I::VALID],
|
|
["+000.000", I::VALID],
|
|
[-1, I::VALID],
|
|
[-1.0, I::VALID],
|
|
["-1.0", I::VALID],
|
|
["-001.0", I::VALID],
|
|
["-1.0e2", I::VALID],
|
|
["-1", I::VALID],
|
|
["-001", I::VALID],
|
|
["-1e2", I::VALID],
|
|
[-0, I::VALID],
|
|
["-0", I::VALID],
|
|
["-000", I::VALID],
|
|
[-0.0, I::VALID],
|
|
["-0.0", I::VALID],
|
|
["-000.000", I::VALID],
|
|
[false, 0],
|
|
[true, 0],
|
|
["on", I::VALID],
|
|
["off", I::VALID],
|
|
["yes", I::VALID],
|
|
["no", I::VALID],
|
|
["true", I::VALID],
|
|
["false", I::VALID],
|
|
[INF, 0],
|
|
[-INF, 0],
|
|
[NAN, 0],
|
|
[[], 0],
|
|
["some string", I::VALID],
|
|
[" ", I::VALID | I::WHITE],
|
|
[new \StdClass, 0],
|
|
[new StrClass(""), I::VALID | I::EMPTY],
|
|
[new StrClass("1"), I::VALID],
|
|
[new StrClass("0"), I::VALID],
|
|
[new StrClass("-1"), I::VALID],
|
|
[new StrClass("Msg"), I::VALID],
|
|
[new StrClass(" "), I::VALID | I::WHITE],
|
|
];
|
|
foreach ($tests as $test) {
|
|
list($value, $exp) = $test;
|
|
$this->assertSame($exp, I::str($value), "Test returned ".decbin(I::str($value))." for value: ".var_export($value, true));
|
|
}
|
|
}
|
|
|
|
public function testValidateDatabaseIdentifier() {
|
|
$tests = [
|
|
[null, false, true],
|
|
["", false, true],
|
|
[1, true, true],
|
|
[PHP_INT_MAX, true, true],
|
|
[1.0, true, true],
|
|
["1.0", true, true],
|
|
["001.0", true, true],
|
|
["1.0e2", true, true],
|
|
["1", true, true],
|
|
["001", true, true],
|
|
["1e2", true, true],
|
|
["+1.0", true, true],
|
|
["+001.0", true, true],
|
|
["+1.0e2", true, true],
|
|
["+1", true, true],
|
|
["+001", true, true],
|
|
["+1e2", true, true],
|
|
[0, false, true],
|
|
["0", false, true],
|
|
["000", false, true],
|
|
[0.0, false, true],
|
|
["0.0", false, true],
|
|
["000.000", false, true],
|
|
["+0", false, true],
|
|
["+000", false, true],
|
|
["+0.0", false, true],
|
|
["+000.000", false, true],
|
|
[-1, false, false],
|
|
[-1.0, false, false],
|
|
["-1.0", false, false],
|
|
["-001.0", false, false],
|
|
["-1.0e2", false, false],
|
|
["-1", false, false],
|
|
["-001", false, false],
|
|
["-1e2", false, false],
|
|
[-0, false, true],
|
|
["-0", false, true],
|
|
["-000", false, true],
|
|
[-0.0, false, true],
|
|
["-0.0", false, true],
|
|
["-000.000", false, true],
|
|
[false, false, false],
|
|
[true, false, false],
|
|
["on", false, false],
|
|
["off", false, false],
|
|
["yes", false, false],
|
|
["no", false, false],
|
|
["true", false, false],
|
|
["false", false, false],
|
|
[INF, false, false],
|
|
[-INF, false, false],
|
|
[NAN, false, false],
|
|
[[], false, false],
|
|
["some string", false, false],
|
|
[" ", false, false],
|
|
[new \StdClass, false, false],
|
|
[new StrClass(""), false, true],
|
|
[new StrClass("1"), true, true],
|
|
[new StrClass("0"), false, true],
|
|
[new StrClass("-1"), false, false],
|
|
[new StrClass("Msg"), false, false],
|
|
[new StrClass(" "), false, false],
|
|
];
|
|
foreach ($tests as $test) {
|
|
list($value, $exp, $expNull) = $test;
|
|
$this->assertSame($exp, I::id($value), "Non-null test failed for value: ".var_export($value, true));
|
|
$this->assertSame($expNull, I::id($value, true), "Null test failed for value: ".var_export($value, true));
|
|
}
|
|
}
|
|
|
|
public function testValidateBoolean() {
|
|
$tests = [
|
|
[null, null],
|
|
["", false],
|
|
[1, true],
|
|
[PHP_INT_MAX, null],
|
|
[1.0, true],
|
|
["1.0", true],
|
|
["001.0", true],
|
|
["1.0e2", null],
|
|
["1", true],
|
|
["001", true],
|
|
["1e2", null],
|
|
["+1.0", true],
|
|
["+001.0", true],
|
|
["+1.0e2", null],
|
|
["+1", true],
|
|
["+001", true],
|
|
["+1e2", null],
|
|
[0, false],
|
|
["0", false],
|
|
["000", false],
|
|
[0.0, false],
|
|
["0.0", false],
|
|
["000.000", false],
|
|
["+0", false],
|
|
["+000", false],
|
|
["+0.0", false],
|
|
["+000.000", false],
|
|
[-1, true],
|
|
[-1.0, true],
|
|
["-1.0", true],
|
|
["-001.0", true],
|
|
["-1.0e2", null],
|
|
["-1", true],
|
|
["-001", true],
|
|
["-1e2", null],
|
|
[-0, false],
|
|
["-0", false],
|
|
["-000", false],
|
|
[-0.0, false],
|
|
["-0.0", false],
|
|
["-000.000", false],
|
|
[false, false],
|
|
[true, true],
|
|
["on", true],
|
|
["off", false],
|
|
["yes", true],
|
|
["no", false],
|
|
["true", true],
|
|
["false", false],
|
|
[INF, null],
|
|
[-INF, null],
|
|
[NAN, null],
|
|
[[], null],
|
|
["some string", null],
|
|
[" ", null],
|
|
[new \StdClass, null],
|
|
[new StrClass(""), false],
|
|
[new StrClass("1"), true],
|
|
[new StrClass("0"), false],
|
|
[new StrClass("-1"), true],
|
|
[new StrClass("Msg"), null],
|
|
[new StrClass(" "), null],
|
|
];
|
|
foreach ($tests as $test) {
|
|
list($value, $exp) = $test;
|
|
$this->assertSame($exp, I::bool($value), "Null Test failed for value: ".var_export($value, true));
|
|
if (is_null($exp)) {
|
|
$this->assertTrue(I::bool($value, true), "True Test failed for value: ".var_export($value, true));
|
|
$this->assertFalse(I::bool($value, false), "False Test failed for value: ".var_export($value, true));
|
|
}
|
|
}
|
|
}
|
|
}
|