]> granicus.if.org Git - php/commitdiff
add tests for batch use declarations with classes, functions and constants
authorMárcio Almada <marcio3w@gmail.com>
Mon, 19 Jan 2015 05:21:11 +0000 (02:21 -0300)
committerMárcio Almada <marcio3w@gmail.com>
Sat, 7 Mar 2015 20:59:48 +0000 (17:59 -0300)
Zend/tests/ns_088.phpt [new file with mode: 0644]
Zend/tests/ns_089.phpt [new file with mode: 0644]
Zend/tests/ns_090.phpt [new file with mode: 0644]
Zend/tests/ns_091.phpt [new file with mode: 0644]

diff --git a/Zend/tests/ns_088.phpt b/Zend/tests/ns_088.phpt
new file mode 100644 (file)
index 0000000..008d358
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+Nested batch use statements syntax error
+--FILE--
+<?php
+namespace Foo\Bar\Baz {
+    class A {}
+    class B {}
+    namespace B {
+        class C {}
+        class D {}
+        class E {}
+    }
+}
+namespace Fiz\Biz\Buz {
+    use Foo\Bar\Baz {
+        A,
+        B {
+            C
+            D,
+            E
+        }
+    };
+}
+?>
+--EXPECTF--
+Parse error: syntax error, unexpected '{', expecting ',' or '}' in %sns_088.php on line 14
diff --git a/Zend/tests/ns_089.phpt b/Zend/tests/ns_089.phpt
new file mode 100644 (file)
index 0000000..e0b066c
--- /dev/null
@@ -0,0 +1,56 @@
+--TEST--
+Batch use statements
+--FILE--
+<?php
+namespace Foo\Bar\Baz {
+    function foo(){echo __FUNCTION__,"\n";}
+    function bar(){echo __FUNCTION__,"\n";}
+    const FOO = 0;
+    const BAR = 1;
+    class A { function __construct() {echo __METHOD__,"\n";} }
+    class B { function __construct() {echo __METHOD__,"\n";} }
+    class C { function __construct() {echo __METHOD__,"\n";} }
+    class D { function __construct() {echo __METHOD__,"\n";} }
+}
+namespace Fiz\Biz\Buz {
+
+    use Foo\Bar\Baz {
+        A,
+        B,
+        C as AC,
+        D,
+        function foo,
+        function bar as buz,
+        const FOO,
+        const BAR AS BOZ
+    };
+
+    class C { function __construct() {echo __METHOD__,"\n";}}
+    function bar(){echo __FUNCTION__,"\n";}
+    const BAR = 100;
+
+    new A;
+    new B;
+    new AC;
+    new D;
+    new C;
+    foo();
+    buz();
+    bar();
+    var_dump(FOO);
+    var_dump(BOZ);
+    var_dump(BAR);
+}
+
+--EXPECTF--
+Foo\Bar\Baz\A::__construct
+Foo\Bar\Baz\B::__construct
+Foo\Bar\Baz\C::__construct
+Foo\Bar\Baz\D::__construct
+Fiz\Biz\Buz\C::__construct
+Foo\Bar\Baz\foo
+Foo\Bar\Baz\bar
+Fiz\Biz\Buz\bar
+int(0)
+int(1)
+int(100)
diff --git a/Zend/tests/ns_090.phpt b/Zend/tests/ns_090.phpt
new file mode 100644 (file)
index 0000000..bf460d0
--- /dev/null
@@ -0,0 +1,48 @@
+--TEST--
+Batch use statements declared inline
+--FILE--
+<?php
+namespace Foo\Bar\Baz {
+    function foo(){echo __FUNCTION__,"\n";}
+    function bar(){echo __FUNCTION__,"\n";}
+    const FOO = 0;
+    const BAR = 1;
+    class A { function __construct() {echo __METHOD__,"\n";} }
+    class B { function __construct() {echo __METHOD__,"\n";} }
+    class C { function __construct() {echo __METHOD__,"\n";} }
+    class D { function __construct() {echo __METHOD__,"\n";} }
+}
+namespace Fiz\Biz\Buz {
+
+    use Foo\Bar\Baz { A, B, C as AC, D };
+    use Foo\Bar\Baz { function foo, function bar as buz, const FOO, const BAR AS BOZ };
+
+    class C { function __construct() {echo __METHOD__,"\n";}}
+    function bar(){echo __FUNCTION__,"\n";}
+    const BAR = 100;
+
+    new A;
+    new B;
+    new AC;
+    new D;
+    new C;
+    foo();
+    buz();
+    bar();
+    var_dump(FOO);
+    var_dump(BOZ);
+    var_dump(BAR);
+}
+
+--EXPECTF--
+Foo\Bar\Baz\A::__construct
+Foo\Bar\Baz\B::__construct
+Foo\Bar\Baz\C::__construct
+Foo\Bar\Baz\D::__construct
+Fiz\Biz\Buz\C::__construct
+Foo\Bar\Baz\foo
+Foo\Bar\Baz\bar
+Fiz\Biz\Buz\bar
+int(0)
+int(1)
+int(100)
diff --git a/Zend/tests/ns_091.phpt b/Zend/tests/ns_091.phpt
new file mode 100644 (file)
index 0000000..2338e88
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+Batch use statements with compound namespaces
+--FILE--
+<?php
+namespace Foo\Bar {
+    class A { function __construct() {echo __METHOD__,"\n";} }
+}
+namespace Foo\Bar\Baz {
+    class B { function __construct() {echo __METHOD__,"\n";} }
+}
+namespace Fiz\Biz\Buz {
+
+    use Foo\Bar { A, Baz\B };
+    new A;
+    new B;
+}
+
+--EXPECTF--
+Foo\Bar\A::__construct
+Foo\Bar\Baz\B::__construct
\ No newline at end of file