com php-src: Add some more tests: Zend/tests/generators/fibonacci.phpt Zend/tests/generators/generator_closure.phpt Zend/tests/g
enerators/generator_closure_with_this.phpt Zend/tests /generators/generator_static_method.phpt
| From: | Gustavo André dos Santos Lopes | Date: | Fri, 20 Jul 2012 15:40:04 +0000 |
| Subject: | com php-src: Add some more tests: Zend/tests/generators/fibonacci.phpt Zend/tests/generators/generator_closure.phpt Zend/tests/g enerators/generator_closure_with_this.phpt Zend/tests /generators/generator_static_method.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-70039@lists.php.net to get a copy of this message | ||
Commit: 1f70a4c5fea97aa577aa5d9ee5f33d91d70e690d
Author: Nikita Popov <nikic@php.net> Fri, 20 Jul 2012 17:40:04 +0200
Parents: 612c2490b7973d71d472860ade48d7ab342b5911
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1f70a4c5fea97aa577aa5d9ee5f33d91d70e690d
Log:
Add some more tests
Changed paths:
A Zend/tests/generators/fibonacci.phpt
A Zend/tests/generators/generator_closure.phpt
A Zend/tests/generators/generator_closure_with_this..phpt
A Zend/tests/generators/generator_static_method.phpt
Diff:
diff --git a/Zend/tests/generators/fibonacci.phpt b/Zend/tests/generators/fibonacci.phpt
new file mode 100644
index 0000000..35b3135
--- /dev/null
+++ b/Zend/tests/generators/fibonacci.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Creating an infinite fibonacci list using a generator
+--FILE--
+<?php
+
+function fib() {
+ list($a, $b) = [1, 1];
+ while (true) {
+ yield $b;
+ list($a, $b) = [$b, $a + $b];
+ }
+}
+
+foreach (fib() as $n) {
+ if ($n > 1000) break;
+
+ var_dump($n);
+}
+
+?>
+--EXPECT--
+int(1)
+int(2)
+int(3)
+int(5)
+int(8)
+int(13)
+int(21)
+int(34)
+int(55)
+int(89)
+int(144)
+int(233)
+int(377)
+int(610)
+int(987)
diff --git a/Zend/tests/generators/generator_closure.phpt
b/Zend/tests/generators/generator_closure.phpt
new file mode 100644
index 0000000..bf80066
--- /dev/null
+++ b/Zend/tests/generators/generator_closure.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Closures can be generators
+--FILE--
+<?php
+
+$genFactory = function() {
+ yield 1;
+ yield 2;
+ yield 3;
+};
+
+foreach ($genFactory() as $value) {
+ var_dump($value);
+}
+
+?>
+--EXPECT--
+int(1)
+int(2)
+int(3)
diff --git a/Zend/tests/generators/generator_closure_with_this.phpt
b/Zend/tests/generators/generator_closure_with_this.phpt
new file mode 100644
index 0000000..d5a4861
--- /dev/null
+++ b/Zend/tests/generators/generator_closure_with_this.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Non-static closures can be generators
+--FILE--
+<?php
+
+class Test {
+ public function getGenFactory() {
+ return function() {
+ yield $this;
+ };
+ }
+}
+
+$genFactory = (new Test)->getGenFactory();
+var_dump($genFactory()->current());
+
+?>
+--EXPECT--
+object(Test)#1 (0) {
+}
diff --git a/Zend/tests/generators/generator_static_method.phpt
b/Zend/tests/generators/generator_static_method.phpt
new file mode 100644
index 0000000..cd9b450
--- /dev/null
+++ b/Zend/tests/generators/generator_static_method.phpt
@@ -0,0 +1,29 @@
+--TEST--
+A static method can be a generator
+--FILE--
+<?php
+
+class Test {
+ public static function gen() {
+ var_dump(get_class());
+ var_dump(get_called_class());
+ yield 1;
+ yield 2;
+ yield 3;
+ }
+}
+
+class ExtendedTest extends Test {
+}
+
+foreach (ExtendedTest::gen() as $i) {
+ var_dump($i);
+}
+
+?>
+--EXPECT--
+string(4) "Test"
+string(12) "ExtendedTest"
+int(1)
+int(2)
+int(3)