diff options
| author | Russell Belfer <rb@github.com> | 2014-01-27 14:57:03 -0800 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2014-01-27 14:57:03 -0800 |
| commit | daebb598690c47600cf033be77acaad1ae8c4a70 (patch) | |
| tree | c9d8a2124b4b47768d3e95defb1e5900db53bddf /tests/resources/userdiff/after/file.php | |
| parent | 082e82dba5b5174756b3a5fc2e385ccc59626164 (diff) | |
| download | libgit2-daebb598690c47600cf033be77acaad1ae8c4a70.tar.gz | |
Add PHP tests and fix bug in PHP builtin driver
Diffstat (limited to 'tests/resources/userdiff/after/file.php')
| -rw-r--r-- | tests/resources/userdiff/after/file.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/resources/userdiff/after/file.php b/tests/resources/userdiff/after/file.php new file mode 100644 index 000000000..967d6466c --- /dev/null +++ b/tests/resources/userdiff/after/file.php @@ -0,0 +1,50 @@ +<?php + +namespace Faker; + +/** + * Proxy for other generators, to return only unique values. Works with + * Faker\Generator\Base->unique() + */ +class UniqueGenerator +{ + protected $generator; + protected $maxRetries; + protected $moreStuff; + protected $uniques = array(); + + public function __construct(Generator $generator, $maxRetries) + { + $this->generator = $generator; + $this->maxRetries = $maxRetries + 1; + } + + /** + * Catch and proxy all generator calls but return only unique values + */ + public function __get($attribute) + { + return $this->__call($attribute, array()); + } + + /** + * Catch and proxy all generator calls with arguments but return only unique values + */ + public function __call($name, $arguments) + { + $i = 0; + if (!isset($this->uniques[$name])) { + $this->uniques[$name] = array(); + } + do { + $res = call_user_func_array(array($this->generator, $name), $arguments); + $i++; + if ($i >= $this->maxRetries) { + throw new \OverflowException(sprintf('Maximum retries of %d reached without finding a unique value', $this->maxRetries)); + } + } while (in_array($res, $this->uniques[$name])); + $this->uniques[$name][]= $res; + + return $res; + } +} |
