1
0
mirror of https://github.com/danog/amp.git synced 2024-12-03 18:07:57 +01:00
amp/test/StructTest.php

82 lines
2.8 KiB
PHP
Raw Normal View History

<?php
namespace Amp\Test;
2020-09-28 05:19:52 +02:00
use Amp\PHPUnit\AsyncTestCase;
2018-06-18 20:00:01 +02:00
class StructTestFixture
{
2016-07-19 07:05:40 +02:00
use \Amp\Struct;
2020-09-28 05:19:52 +02:00
public \Closure $callback;
public string $_foofoofoofoofoofoofoofoobar;
2016-07-19 07:05:40 +02:00
}
2020-09-28 05:19:52 +02:00
class StructTest extends AsyncTestCase
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
public function testSetErrorWithSuggestion(): void
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
$this->expectException(\Error::class);
$this->expectExceptionMessage('Amp\Test\StructTestFixture property "callbac" does not exist ... did you mean "callback?"');
2015-07-30 05:23:53 +02:00
$struct = new StructTestFixture;
2018-06-18 20:00:01 +02:00
$struct->callbac = function () {
};
}
2015-07-30 05:23:53 +02:00
2020-09-28 05:19:52 +02:00
public function testGetErrorWithSuggestion(): void
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
$this->expectException(\Error::class);
$this->expectExceptionMessage('Amp\Test\StructTestFixture property "callbac" does not exist ... did you mean "callback?"');
2015-07-30 05:23:53 +02:00
$struct = new StructTestFixture;
$test = $struct->callbac;
}
2020-09-28 05:19:52 +02:00
public function testSetErrorWithoutSuggestion(): void
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
$this->expectException(\Error::class);
$this->expectExceptionMessage('Amp\Test\StructTestFixture property "callZZZZZZZZZZZ" does not exist');
2015-07-30 05:23:53 +02:00
$struct = new StructTestFixture;
$struct->callZZZZZZZZZZZ = "test";
}
2015-07-30 05:23:53 +02:00
2020-09-28 05:19:52 +02:00
public function testGetErrorWithoutSuggestion(): void
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
$this->expectException(\Error::class);
$this->expectExceptionMessage('Amp\Test\StructTestFixture property "callZZZZZZZZZZZ" does not exist');
2015-07-30 05:23:53 +02:00
$struct = new StructTestFixture;
$test = $struct->callZZZZZZZZZZZ;
}
2020-09-28 05:19:52 +02:00
public function testSuggestionIgnoresPropertyStartingWithUnderscore(): void
2018-06-18 20:00:01 +02:00
{
2020-09-28 05:19:52 +02:00
$this->expectException(\Error::class);
$this->expectExceptionMessage('Amp\Test\StructTestFixture property "__propertySuggestThreshold" does not exist');
2015-07-30 05:23:53 +02:00
$struct = new StructTestFixture;
$struct->__propertySuggestThreshold;
}
2020-09-28 05:19:52 +02:00
public function testSetErrorWithoutSuggestionBecauseUnderscore(): void
2018-06-18 20:00:01 +02:00
{
// Use regexp to ensure no property is suggested, because expected message is a prefix then and still passes
$this->expectException(\Error::class);
2020-09-28 05:19:52 +02:00
$this->expectExceptionMessageMatches("(Amp\\\\Test\\\\StructTestFixture property \"foofoofoofoofoofoofoofoobar\" does not exist$)");
$struct = new StructTestFixture;
$struct->foofoofoofoofoofoofoofoobar = "test";
}
2020-09-28 05:19:52 +02:00
public function testGetErrorWithoutSuggestionBecauseUnderscore(): void
2018-06-18 20:00:01 +02:00
{
// Use regexp to ensure no property is suggested, because expected message is a prefix then and still passes
$this->expectException(\Error::class);
2020-09-28 05:19:52 +02:00
$this->expectExceptionMessageMatches("(Amp\\\\Test\\\\StructTestFixture property \"foofoofoofoofoofoofoofoobar\" does not exist$)");
$struct = new StructTestFixture;
$struct->foofoofoofoofoofoofoofoobar;
}
}