summaryrefslogtreecommitdiff
path: root/tests/resources/userdiff/after/file.php
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2014-01-27 14:57:03 -0800
committerRussell Belfer <rb@github.com>2014-01-27 14:57:03 -0800
commitdaebb598690c47600cf033be77acaad1ae8c4a70 (patch)
treec9d8a2124b4b47768d3e95defb1e5900db53bddf /tests/resources/userdiff/after/file.php
parent082e82dba5b5174756b3a5fc2e385ccc59626164 (diff)
downloadlibgit2-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.php50
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;
+ }
+}