Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / psy / psysh / test / Exception / ErrorExceptionTest.php
diff --git a/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php
new file mode 100644 (file)
index 0000000..2fd9ab7
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2018 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Test\Exception;
+
+use Psy\Exception\ErrorException;
+
+class ErrorExceptionTest extends \PHPUnit\Framework\TestCase
+{
+    public function testInstance()
+    {
+        $e = new ErrorException();
+
+        $this->assertInstanceOf('Psy\Exception\Exception', $e);
+        $this->assertInstanceOf('ErrorException', $e);
+        $this->assertInstanceOf('Psy\Exception\ErrorException', $e);
+    }
+
+    public function testMessage()
+    {
+        $e = new ErrorException('foo');
+
+        $this->assertContains('foo', $e->getMessage());
+        $this->assertSame('foo', $e->getRawMessage());
+    }
+
+    /**
+     * @dataProvider getLevels
+     */
+    public function testErrorLevels($level, $type)
+    {
+        $e = new ErrorException('foo', 0, $level);
+        $this->assertContains('PHP ' . $type, $e->getMessage());
+    }
+
+    /**
+     * @dataProvider getLevels
+     */
+    public function testThrowException($level, $type)
+    {
+        try {
+            ErrorException::throwException($level, '{whot}', '{file}', '13');
+        } catch (ErrorException $e) {
+            $this->assertContains('PHP ' . $type, $e->getMessage());
+            $this->assertContains('{whot}', $e->getMessage());
+            $this->assertContains('in {file}', $e->getMessage());
+            $this->assertContains('on line 13', $e->getMessage());
+        }
+    }
+
+    public function getLevels()
+    {
+        return [
+            [E_WARNING,         'Warning'],
+            [E_CORE_WARNING,    'Warning'],
+            [E_COMPILE_WARNING, 'Warning'],
+            [E_USER_WARNING,    'Warning'],
+            [E_STRICT,          'Strict error'],
+            [0,                 'Error'],
+        ];
+    }
+
+    /**
+     * @dataProvider getUserLevels
+     */
+    public function testThrowExceptionAsErrorHandler($level, $type)
+    {
+        set_error_handler(['Psy\Exception\ErrorException', 'throwException']);
+        try {
+            trigger_error('{whot}', $level);
+        } catch (ErrorException $e) {
+            $this->assertContains('PHP ' . $type, $e->getMessage());
+            $this->assertContains('{whot}', $e->getMessage());
+        }
+        restore_error_handler();
+    }
+
+    public function getUserLevels()
+    {
+        return [
+            [E_USER_ERROR,      'Error'],
+            [E_USER_WARNING,    'Warning'],
+            [E_USER_NOTICE,     'Notice'],
+            [E_USER_DEPRECATED, 'Deprecated'],
+        ];
+    }
+
+    public function testIgnoreExecutionLoopFilename()
+    {
+        $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/ExecutionLoop.php');
+        $this->assertEmpty($e->getFile());
+
+        $e = new ErrorException('{{message}}', 0, 1, 'c:\fake\path\to\Psy\ExecutionLoop.php');
+        $this->assertEmpty($e->getFile());
+
+        $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/File.php');
+        $this->assertNotEmpty($e->getFile());
+    }
+}