From 0677b40424f5c753e99fc9f0ee7a03ff4e7efb49 Mon Sep 17 00:00:00 2001 From: Michal Stefanak Date: Mon, 26 Jul 2021 10:44:46 +0200 Subject: [PATCH 1/3] moved nest and unnest from query processing to final processing. --- .phpunit.result.cache | 1 + phpunit.xml.bak | 13 ++++ src/Deepr.php | 136 ++++++++++++---------------------- src/components/Collection.php | 29 +++++++- tests/DeeprTest.php | 28 +++---- tests/classes/Movie.php | 5 +- tests/classes/Movies.php | 10 +-- tests/classes/Root.php | 13 ++-- tests/jsons/11-input.json | 16 ++++ tests/jsons/11-output.json | 10 +++ 10 files changed, 135 insertions(+), 126 deletions(-) create mode 100644 .phpunit.result.cache create mode 100644 phpunit.xml.bak create mode 100644 tests/jsons/11-input.json create mode 100644 tests/jsons/11-output.json diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 0000000..d3f53a5 --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":{"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":2,"Deepr\\tests\\DeeprTest::testOptions":1,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":2},"times":{"Deepr\\tests\\DeeprTest::testDeepr":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #0":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #1":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #2":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #5":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #6":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #7":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #9":0.001,"Deepr\\tests\\DeeprTest::testParallel":0.001,"Deepr\\tests\\DeeprTest::testMissingException":0.001,"Deepr\\tests\\DeeprTest::testOptions":0,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 08\"":0.003,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 10\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 11\"":0.001}} \ No newline at end of file diff --git a/phpunit.xml.bak b/phpunit.xml.bak new file mode 100644 index 0000000..fab8901 --- /dev/null +++ b/phpunit.xml.bak @@ -0,0 +1,13 @@ + + + + tests + + + + + /src/components + /src/Deepr.php + + + diff --git a/src/Deepr.php b/src/Deepr.php index 54ff759..76258e1 100644 --- a/src/Deepr.php +++ b/src/Deepr.php @@ -20,8 +20,6 @@ */ final class Deepr { - const OPTION_UNNEST_ONE_CHILD = 1; - /** * Enable to see query traversal * @var bool @@ -32,9 +30,7 @@ final class Deepr * Default options * @var array */ - private static $defaultOptions = [ - self::OPTION_UNNEST_ONE_CHILD => true - ]; + private static $defaultOptions = []; /** * Current options @@ -54,36 +50,34 @@ public function invokeQuery(Collection $root, array $query, array $options = []) { $this->options = array_replace(self::$defaultOptions, array_intersect_key($options, self::$defaultOptions)); - foreach ($query as $key => $value) { - if ($key === '||') - throw new Exception('Parallel processing not implemented'); + if (reset($query) === '||') + throw new Exception('Parallel processing not implemented'); - $unnest = false; - if ($this->isUnnest($key)) { - $key = $this->getKey($key, false); - $unnest = true; + if (array_filter(array_keys($query), 'is_int') == array_keys($query)) { + $clone = clone $root; + foreach ($query as $key => $value) { + $clone->clear(); + $this->invokeQuery($clone, $value, $options); + $root->add($clone); } + return $root->execute($options); + } + + foreach ($query as $key => $value) { + $action = $this->getKey($key, false); - if (property_exists($root, $key)) { - $collection = $root->$key; + if (property_exists($root, $action)) { + $collection = $root->$action; if (is_string($collection) && class_exists($collection)) { $collection = new $collection(); } - } elseif (method_exists($root, $key) && array_key_exists('()', $value)) { - $collection = $root->{$key}(...$value['()']); + } elseif (method_exists($root, $action) && array_key_exists('()', $value)) { + $collection = $root->{$action}(...$value['()']); } if (isset($collection) && $collection instanceof IComponent) { - $this->recursion($collection, $key, $value); - - if ($unnest) { - if ($collection instanceof Collection) { - foreach ($collection->getChildren() as $child) - $root->add($child); - } - } else { - $root->add($collection, $key); - } + $this->recursion($collection, $action, $value); + $root->add($collection, $key); } else { throw new Exception('Requested value "' . $key . '" is not valid property or method call'); } @@ -104,27 +98,31 @@ private function recursion(IComponent $root, string $action, array $values) $key = $this->getKey($k, false); if (is_int($k)) { - $this->recursion($root, $action, $v); + $clone = clone $root; + $this->recursion($clone, $action, $v); + $root->add($clone); } elseif ($k === '[]' && !empty($action)) { if (self::$debug) var_dump($action . ' []'); if ($root instanceof ILoadable) { - $offset = 0; - $length = null; + $tmpValues = $values; + unset($tmpValues['[]']); + if (is_int($v)) { - $offset = $v; - $length = 1; + foreach ($root->load($v, 1)->getChildren() as $child) { + $this->recursion($child, $action, $tmpValues); + if ($child instanceof Collection) + foreach ($child->getChildren() as $name => $ch) { + $root->add($ch, $name); + } + } } elseif (is_array($v)) { - $offset = $v[0] ?? 0; - $length = $v[1] ?? null; + foreach ($root->load($v[0] ?? 0, $v[1] ?? null)->getChildren() as $child) { + $this->recursion($child, $action, $tmpValues); + $root->add($child); + } } - $tmpValues = $values; - unset($tmpValues['[]']); - foreach ($root->load($offset, $length)->getChildren() as $item) { - $this->recursion($item, $action, $tmpValues); - $root->add($item); - } } else { throw new Exception('To access collection of class it has to implement ILoadable interface'); } @@ -137,71 +135,31 @@ private function recursion(IComponent $root, string $action, array $values) $data = $root->{$key}(...$v['()']); if ($data instanceof Collection) { - $nest = $this->isNest($k); + $this->recursion($data, $key, $v); foreach ($data->getChildren() as $child) { $this->recursion($child, $key, $v); - if (!$nest) - $root->add($child); } - if ($nest) - $root->add($data, $this->getKey($k)); + $root->add($data, $k); } else { throw new Exception('Method response has to be Collection'); } } elseif ($v === true) { if (self::$debug) var_dump($action . ' ' . $k . ' true'); - if (property_exists($root, $key)) - $root->add(new Value($root->$key), $this->getKey($k)); - } elseif (is_array($v)) { - if ($k === '=>') { - if (self::$debug) - var_dump($action . ' array return'); - $this->recursion($root, $action, $v); - } elseif ($this->isNest($k)) { - if (self::$debug) - var_dump($action . ' array nest'); - $clone = clone $root; - $this->recursion($clone, $action, $v); - $root->add($clone, $this->getKey($k)); - } elseif ($this->isUnnest($k)) { - if (self::$debug) - var_dump($action . ' array unnest'); - $this->recursion($root, $this->getKey($k, false), $v); + if (property_exists($root, $key)) { + $root->add(new Value($root->$key), $k); } + } elseif (is_array($v)) { + if (self::$debug) + var_dump($action . ' array nest'); + $clone = clone $root; + $this->recursion($clone, $action, $v); + $root->add($clone, $k); } } } - /** - * Is "=>target", "source=>target" or "key" - * @param string $key - * @return bool - */ - private function isNest(string $key): bool - { - if (strpos($key, '=>') !== false) { - list($a, $b) = explode('=>', $key, 2); - return !empty($b); - } - return true; - } - - /** - * Is "source=>" - * @param string $key - * @return bool - */ - private function isUnnest(string $key): bool - { - if (strpos($key, '=>') !== false) { - list($a, $b) = explode('=>', $key, 2); - return !empty($a) && empty($b); - } - return false; - } - /** * Get final key * @param string $key diff --git a/src/components/Collection.php b/src/components/Collection.php index 77ba4c7..9e76206 100644 --- a/src/components/Collection.php +++ b/src/components/Collection.php @@ -37,6 +37,14 @@ final public function getChildren(): array return $this->children; } + /** + * Clear children collection + */ + final public function clear() + { + $this->children = []; + } + /** * @inheritDoc */ @@ -45,11 +53,24 @@ final public function execute(array $options = []) $output = []; foreach ($this->getChildren() as $key => $child) { - $output = array_merge($output, [$key => $child->execute($options)]); - } + $result = $child->execute($options); - if ($options[\Deepr\Deepr::OPTION_UNNEST_ONE_CHILD] && count($output) == 1 && is_int(key($output))) { - $output = reset($output); + if ($key !== '=>' && substr($key, -2) === '=>') { //unnest + $output = $result; + } elseif (is_array($result)) { + if (strpos($key, '=>') === false) { //just a key + $output[$key] = $result; + } else { + list ($k, $a) = explode('=>', $key); + if (empty($k) && empty($a)) { //to return + $output = array_merge($output, $result); + } elseif (!empty($a)) { //nest + $output = array_merge($output, [$a => $result]); + } + } + } else { //value + $output[$key] = $result; + } } return $output; diff --git a/tests/DeeprTest.php b/tests/DeeprTest.php index d668382..2fe1667 100644 --- a/tests/DeeprTest.php +++ b/tests/DeeprTest.php @@ -12,6 +12,10 @@ * @package Deepr\tests * @author Michal Stefanak * @link https://github.com/stefanak-michal/deepr-php + * + * @covers \Deepr\Deepr + * @covers \Deepr\components\Collection + * @covers \Deepr\components\Value */ class DeeprTest extends TestCase { @@ -35,9 +39,13 @@ public function testDeepr(): ?Deepr */ public function testInvokeQueries(string $input, string $output, Deepr $deepr) { + var_dump($input, $output); try { $root = new Root(); - $result = $deepr->invokeQuery($root, json_decode($input, true)); + $input = json_decode($input, true); + if (json_last_error() != JSON_ERROR_NONE) + throw new Exception(json_last_error_msg()); + $result = $deepr->invokeQuery($root, $input); $result = json_encode($result); $this->assertJsonStringEqualsJsonString($output, $result); } catch (Exception $e) { @@ -49,14 +57,13 @@ public function testInvokeQueries(string $input, string $output, Deepr $deepr) * Use json files in jsons directory as sample data for requests * @return array */ - public function jsonProvider() + public function jsonProvider(): array { $data = []; $dir = __DIR__ . DIRECTORY_SEPARATOR . 'jsons' . DIRECTORY_SEPARATOR; if (file_exists($dir)) { foreach (glob($dir . '*.json') as $file) { list($i, $type) = explode('-', pathinfo($file, PATHINFO_FILENAME), 2); - $i = intval($i); $type = $type == 'input' ? 0 : 1; $json = file_get_contents($file); @@ -65,7 +72,7 @@ public function jsonProvider() $json = json_decode($json, true); if (json_last_error() != JSON_ERROR_NONE) continue; - $data[$i][$type] = json_encode($json); + $data['json ' . $i][$type] = json_encode($json); } } @@ -100,17 +107,6 @@ public function testMissingException(Deepr $deepr) */ public function testOptions(Deepr $deepr) { - $input = json_decode('{"movies":{"[]":5,"=>":{"title": true}}}', true); - $output = '{"movies":[{"title":"Top Gun"}]}'; - $options = [$deepr::OPTION_UNNEST_ONE_CHILD => false]; - - try { - $root = new Root(); - $result = $deepr->invokeQuery($root, $input, $options); - $result = json_encode($result); - $this->assertJsonStringEqualsJsonString($output, $result); - } catch (Exception $e) { - $this->markTestIncomplete($e->getMessage()); - } + $this->markTestSkipped('No options available'); } } diff --git a/tests/classes/Movie.php b/tests/classes/Movie.php index 9ed909f..51811c3 100644 --- a/tests/classes/Movie.php +++ b/tests/classes/Movie.php @@ -3,6 +3,7 @@ namespace Deepr\tests\classes; use Deepr\components\Collection; +use Deepr\components\IComponent; /** * Class Movie @@ -33,10 +34,10 @@ class Movie extends Collection /** * RPC method to get actors of movie * {"movies":{"[]":[],"=>":{"getActors":{"()":[]}}}} - * @return Collection + * @return IComponent * @see \Deepr\tests\classes\Person */ - public function getActors(): Collection + public function getActors(): IComponent { if (is_null($this->actors)) { $this->actors = new Collection(); diff --git a/tests/classes/Movies.php b/tests/classes/Movies.php index 5ada5a6..ddcafea 100644 --- a/tests/classes/Movies.php +++ b/tests/classes/Movies.php @@ -52,21 +52,17 @@ public function load(int $offset, ?int $length): Collection * RPC method to get movie by title * {"movies":{"getByTitle":{"()":["The Matrix"]}}} * @param string $title - * @return Collection + * @return IComponent * @see \Deepr\tests\classes\Movie */ - public function getByTitle(string $title): Collection + public function getByTitle(string $title): IComponent { - $collection = new self(); - $movie = new Movie(); $row = Database::getMovieByTitle($title); $movie->_id = $row['_id']; $movie->title = $row['title']; $movie->released = $row['released']; $movie->tagline = $row['tagline']; - $collection->add($movie); - - return $collection; + return $movie; } } diff --git a/tests/classes/Root.php b/tests/classes/Root.php index d2c92a3..ba2367d 100644 --- a/tests/classes/Root.php +++ b/tests/classes/Root.php @@ -2,8 +2,7 @@ namespace Deepr\tests\classes; -use Deepr\components\Collection; -use Deepr\components\Value; +use Deepr\components\{Collection, Value, IComponent}; /** * Class Root @@ -26,14 +25,12 @@ class Root extends Collection /** * Sample method - * RPC methods has to be public and returns Collection + * RPC methods has to be public and returns IComponent * {"date": {"()": []}} - * @return Collection + * @return IComponent */ - public function date(): Collection + public function date(): IComponent { - $collection = new Collection(); - $collection->add(new Value('2021-07-20')); - return $collection; + return new Value('2021-07-20'); } } diff --git a/tests/jsons/11-input.json b/tests/jsons/11-input.json new file mode 100644 index 0000000..42710db --- /dev/null +++ b/tests/jsons/11-input.json @@ -0,0 +1,16 @@ +[ + { + "movies=>": { + "[]": 1, + "title": true, + "released": true + } + }, + { + "movies=>": { + "[]": 5, + "title": true, + "released": true + } + } +] \ No newline at end of file diff --git a/tests/jsons/11-output.json b/tests/jsons/11-output.json new file mode 100644 index 0000000..50d8dfe --- /dev/null +++ b/tests/jsons/11-output.json @@ -0,0 +1,10 @@ +[ + { + "title": "Top Gun", + "released": 1986 + }, + { + "title": "Top Gun", + "released": 1986 + } +] \ No newline at end of file From c8356f73573b5406951a227327b6e5602f93e8cc Mon Sep 17 00:00:00 2001 From: Michal Stefanak Date: Mon, 26 Jul 2021 10:45:33 +0200 Subject: [PATCH 2/3] removed cache file --- .phpunit.result.cache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index d3f53a5..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":2,"Deepr\\tests\\DeeprTest::testOptions":1,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":2},"times":{"Deepr\\tests\\DeeprTest::testDeepr":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #0":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #1":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #2":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #5":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #6":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #7":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #9":0.001,"Deepr\\tests\\DeeprTest::testParallel":0.001,"Deepr\\tests\\DeeprTest::testMissingException":0.001,"Deepr\\tests\\DeeprTest::testOptions":0,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 08\"":0.003,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 10\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 11\"":0.001}} \ No newline at end of file From 4bc9863b7d91dc2b97ed010892028a434922e576 Mon Sep 17 00:00:00 2001 From: Michal Stefanak Date: Mon, 26 Jul 2021 10:45:33 +0200 Subject: [PATCH 3/3] removed cache file --- .phpunit.result.cache | 1 - phpunit.xml.bak | 13 ------------- 2 files changed, 14 deletions(-) delete mode 100644 .phpunit.result.cache delete mode 100644 phpunit.xml.bak diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index d3f53a5..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":2,"Deepr\\tests\\DeeprTest::testOptions":1,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":2,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":2},"times":{"Deepr\\tests\\DeeprTest::testDeepr":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #0":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #1":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #2":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #3":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #4":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #5":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #6":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #7":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #8":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set #9":0.001,"Deepr\\tests\\DeeprTest::testParallel":0.001,"Deepr\\tests\\DeeprTest::testMissingException":0.001,"Deepr\\tests\\DeeprTest::testOptions":0,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"08\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 01\"":0.002,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 02\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 03\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 04\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 05\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 06\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 07\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 08\"":0.003,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 09\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 10\"":0.001,"Deepr\\tests\\DeeprTest::testInvokeQueries with data set \"json 11\"":0.001}} \ No newline at end of file diff --git a/phpunit.xml.bak b/phpunit.xml.bak deleted file mode 100644 index fab8901..0000000 --- a/phpunit.xml.bak +++ /dev/null @@ -1,13 +0,0 @@ - - - - tests - - - - - /src/components - /src/Deepr.php - - -