Added the Search API Synonym module to deal specifically with licence and license...
[yaffs-website] / vendor / symfony / config / Tests / Definition / ArrayNodeTest.php
index 0b5565e0b379bf08b30608dc90f578149bb70cd5..089cb56638d352b8ecdb344380eff61cfe58f299 100644 (file)
@@ -56,10 +56,10 @@ class ArrayNodeTest extends TestCase
     {
         if ($expected instanceof \Exception) {
             if (method_exists($this, 'expectException')) {
-                $this->expectException(get_class($expected));
+                $this->expectException(\get_class($expected));
                 $this->expectExceptionMessage($expected->getMessage());
             } else {
-                $this->setExpectedException(get_class($expected), $expected->getMessage());
+                $this->setExpectedException(\get_class($expected), $expected->getMessage());
             }
         }
         $node = new ArrayNode('root');
@@ -216,4 +216,36 @@ class ArrayNodeTest extends TestCase
         $node = new ArrayNode('foo');
         $node->getDefaultValue();
     }
+
+    public function testSetDeprecated()
+    {
+        $childNode = new ArrayNode('foo');
+        $childNode->setDeprecated('"%node%" is deprecated');
+
+        $this->assertTrue($childNode->isDeprecated());
+        $this->assertSame('"foo" is deprecated', $childNode->getDeprecationMessage($childNode->getName(), $childNode->getPath()));
+
+        $node = new ArrayNode('root');
+        $node->addChild($childNode);
+
+        $deprecationTriggered = false;
+        $deprecationHandler = function ($level, $message, $file, $line) use (&$prevErrorHandler, &$deprecationTriggered) {
+            if (E_USER_DEPRECATED === $level) {
+                return $deprecationTriggered = true;
+            }
+
+            return $prevErrorHandler ? $prevErrorHandler($level, $message, $file, $line) : false;
+        };
+
+        $prevErrorHandler = set_error_handler($deprecationHandler);
+        $node->finalize(array());
+        restore_error_handler();
+
+        $this->assertFalse($deprecationTriggered, '->finalize() should not trigger if the deprecated node is not set');
+
+        $prevErrorHandler = set_error_handler($deprecationHandler);
+        $node->finalize(array('foo' => array()));
+        restore_error_handler();
+        $this->assertTrue($deprecationTriggered, '->finalize() should trigger if the deprecated node is set');
+    }
 }