View source
<?php
namespace Drupal\Tests\Component\Assertion;
use PHPUnit\Framework\TestCase;
use Drupal\Component\Assertion\Inspector;
class InspectorTest extends TestCase {
public function testAssertTraversable() {
$this
->assertTrue(Inspector::assertTraversable([]));
$this
->assertTrue(Inspector::assertTraversable(new \ArrayObject()));
$this
->assertFalse(Inspector::assertTraversable(new \stdClass()));
$this
->assertFalse(Inspector::assertTraversable('foo'));
}
public function testAssertAllStrings($input, $expected) {
$this
->assertSame($expected, Inspector::assertAllStrings($input));
}
public function providerTestAssertAllStrings() {
$data = [
'empty-array' => [
[],
TRUE,
],
'array-with-strings' => [
[
'foo',
'bar',
],
TRUE,
],
'string' => [
'foo',
FALSE,
],
'array-with-strings-with-colon' => [
[
'foo',
'bar',
'llama:2001988',
'baz',
'llama:14031991',
],
TRUE,
],
'with-FALSE' => [
[
FALSE,
],
FALSE,
],
'with-TRUE' => [
[
TRUE,
],
FALSE,
],
'with-string-and-boolean' => [
[
'foo',
FALSE,
],
FALSE,
],
'with-NULL' => [
[
NULL,
],
FALSE,
],
'string-with-NULL' => [
[
'foo',
NULL,
],
FALSE,
],
'integer' => [
[
1337,
],
FALSE,
],
'string-and-integer' => [
[
'foo',
1337,
],
FALSE,
],
'double' => [
[
3.14,
],
FALSE,
],
'string-and-double' => [
[
'foo',
3.14,
],
FALSE,
],
'array' => [
[
[],
],
FALSE,
],
'string-and-array' => [
[
'foo',
[],
],
FALSE,
],
'string-and-nested-array' => [
[
'foo',
[
'bar',
],
],
FALSE,
],
'object' => [
[
new \stdClass(),
],
FALSE,
],
'string-and-object' => [
[
'foo',
new StringObject(),
],
FALSE,
],
];
return $data;
}
public function testAssertAllStringable() {
$this
->assertTrue(Inspector::assertAllStringable([]));
$this
->assertTrue(Inspector::assertAllStringable([
'foo',
'bar',
]));
$this
->assertFalse(Inspector::assertAllStringable('foo'));
$this
->assertTrue(Inspector::assertAllStringable([
'foo',
new StringObject(),
]));
}
public function testAssertAllArrays() {
$this
->assertTrue(Inspector::assertAllArrays([]));
$this
->assertTrue(Inspector::assertAllArrays([
[],
[],
]));
$this
->assertFalse(Inspector::assertAllArrays([
[],
'foo',
]));
}
public function testAssertStrictArray() {
$this
->assertTrue(Inspector::assertStrictArray([]));
$this
->assertTrue(Inspector::assertStrictArray([
'bar',
'foo',
]));
$this
->assertFalse(Inspector::assertStrictArray([
'foo' => 'bar',
'bar' => 'foo',
]));
}
public function testAssertAllStrictArrays() {
$this
->assertTrue(Inspector::assertAllStrictArrays([]));
$this
->assertTrue(Inspector::assertAllStrictArrays([
[],
[],
]));
$this
->assertFalse(Inspector::assertAllStrictArrays([
[
'foo' => 'bar',
'bar' => 'foo',
],
]));
}
public function testAssertAllHaveKey() {
$this
->assertTrue(Inspector::assertAllHaveKey([]));
$this
->assertTrue(Inspector::assertAllHaveKey([
[
'foo' => 'bar',
'bar' => 'foo',
],
]));
$this
->assertTrue(Inspector::assertAllHaveKey([
[
'foo' => 'bar',
'bar' => 'foo',
],
], 'foo'));
$this
->assertTrue(Inspector::assertAllHaveKey([
[
'foo' => 'bar',
'bar' => 'foo',
],
], 'bar', 'foo'));
$this
->assertFalse(Inspector::assertAllHaveKey([
[
'foo' => 'bar',
'bar' => 'foo',
],
], 'bar', 'foo', 'moo'));
}
public function testAssertAllIntegers() {
$this
->assertTrue(Inspector::assertAllIntegers([]));
$this
->assertTrue(Inspector::assertAllIntegers([
1,
2,
3,
]));
$this
->assertFalse(Inspector::assertAllIntegers([
1,
2,
3.14,
]));
$this
->assertFalse(Inspector::assertAllIntegers([
1,
'2',
3,
]));
}
public function testAssertAllFloat() {
$this
->assertTrue(Inspector::assertAllFloat([]));
$this
->assertTrue(Inspector::assertAllFloat([
1.0,
2.1,
3.14,
]));
$this
->assertFalse(Inspector::assertAllFloat([
1,
2.1,
3.14,
]));
$this
->assertFalse(Inspector::assertAllFloat([
1.0,
'2',
3,
]));
$this
->assertFalse(Inspector::assertAllFloat([
'Titanic',
]));
}
public function testAllCallable() {
$this
->assertTrue(Inspector::assertAllCallable([
'strchr',
[
$this,
'callMe',
],
[
__CLASS__,
'callMeStatic',
],
function () {
return TRUE;
},
]));
$this
->assertFalse(Inspector::assertAllCallable([
'strchr',
[
$this,
'callMe',
],
[
__CLASS__,
'callMeStatic',
],
function () {
return TRUE;
},
"I'm not callable",
]));
}
public function testAllNotEmpty() {
$this
->assertTrue(Inspector::assertAllNotEmpty([
1,
'two',
]));
$this
->assertFalse(Inspector::assertAllNotEmpty([
'',
]));
}
public function testAssertAllNumeric() {
$this
->assertTrue(Inspector::assertAllNumeric([
1,
'2',
3.14,
]));
$this
->assertFalse(Inspector::assertAllNumeric([
1,
'two',
3.14,
]));
}
public function testAssertAllMatch() {
$this
->assertTrue(Inspector::assertAllMatch('f', [
'fee',
'fi',
'fo',
]));
$this
->assertTrue(Inspector::assertAllMatch('F', [
'fee',
'fi',
'fo',
]));
$this
->assertTrue(Inspector::assertAllMatch('f', [
'fee',
'fi',
'fo',
], TRUE));
$this
->assertFalse(Inspector::assertAllMatch('F', [
'fee',
'fi',
'fo',
], TRUE));
$this
->assertFalse(Inspector::assertAllMatch('e', [
'fee',
'fi',
'fo',
]));
$this
->assertFalse(Inspector::assertAllMatch('1', [
12,
]));
}
public function testAssertAllRegularExpressionMatch() {
$this
->assertTrue(Inspector::assertAllRegularExpressionMatch('/f/i', [
'fee',
'fi',
'fo',
]));
$this
->assertTrue(Inspector::assertAllRegularExpressionMatch('/F/i', [
'fee',
'fi',
'fo',
]));
$this
->assertTrue(Inspector::assertAllRegularExpressionMatch('/f/', [
'fee',
'fi',
'fo',
]));
$this
->assertFalse(Inspector::assertAllRegularExpressionMatch('/F/', [
'fee',
'fi',
'fo',
]));
$this
->assertFalse(Inspector::assertAllRegularExpressionMatch('/e/', [
'fee',
'fi',
'fo',
]));
$this
->assertFalse(Inspector::assertAllRegularExpressionMatch('/1/', [
12,
]));
}
public function testAssertAllObjects() {
$this
->assertTrue(Inspector::assertAllObjects([
new \ArrayObject(),
new \ArrayObject(),
]));
$this
->assertFalse(Inspector::assertAllObjects([
new \ArrayObject(),
new \ArrayObject(),
'foo',
]));
$this
->assertTrue(Inspector::assertAllObjects([
new \ArrayObject(),
new \ArrayObject(),
], '\\Traversable'));
$this
->assertFalse(Inspector::assertAllObjects([
new \ArrayObject(),
new \ArrayObject(),
'foo',
], '\\Traversable'));
$this
->assertFalse(Inspector::assertAllObjects([
new \ArrayObject(),
new StringObject(),
], '\\Traversable'));
$this
->assertTrue(Inspector::assertAllObjects([
new \ArrayObject(),
new StringObject(),
], '\\Traversable', '\\Drupal\\Tests\\Component\\Assertion\\StringObject'));
$this
->assertFalse(Inspector::assertAllObjects([
new \ArrayObject(),
new StringObject(),
new \stdClass(),
], '\\ArrayObject', '\\Drupal\\Tests\\Component\\Assertion\\StringObject'));
}
public function callMe() {
return TRUE;
}
public static function callMeStatic() {
return TRUE;
}
}
class StringObject {
public function __toString() {
return 'foo';
}
}