Skip to content

Commit

Permalink
tests namespaced + tool
Browse files Browse the repository at this point in the history
  • Loading branch information
dakujem committed Jan 26, 2024
1 parent c3764ad commit 01426c3
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 16 deletions.
7 changes: 4 additions & 3 deletions tests/iterators.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

declare(strict_types=1);

namespace Dakujem\Test;

use Dakujem\Oliva\DataNodeContract;
use Dakujem\Oliva\Iterator\LevelOrderTraversal;
use Dakujem\Oliva\Iterator\Native;
Expand All @@ -10,11 +12,10 @@ use Dakujem\Oliva\Iterator\PreOrderTraversal;
use Dakujem\Oliva\Iterator\Support\Counter;
use Dakujem\Oliva\Node;
use Dakujem\Oliva\TreeNodeContract;
use RecursiveIteratorIterator;
use Tester\Assert;
use Tester\Environment;

require_once __DIR__ . '/../vendor/autoload.php';
Environment::setup();
require_once __DIR__ . '/setup.php';

(function () {
$counter = new Counter();
Expand Down
14 changes: 7 additions & 7 deletions tests/mptree.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

declare(strict_types=1);

namespace Dakujem\Test;

use Dakujem\Oliva\Iterator\PreOrderTraversal;
use Dakujem\Oliva\MaterializedPath\Path;
use Dakujem\Oliva\MaterializedPath\Support\AlmostThere;
Expand All @@ -10,11 +12,11 @@ use Dakujem\Oliva\Node;
use Dakujem\Oliva\Seed;
use Dakujem\Oliva\Tree;
use Dakujem\Oliva\TreeNodeContract;
use LogicException;
use RuntimeException;
use Tester\Assert;
use Tester\Environment;

require_once __DIR__ . '/../vendor/autoload.php';
Environment::setup();
require_once __DIR__ . '/setup.php';

class Item
{
Expand Down Expand Up @@ -92,7 +94,7 @@ class Item
Assert::same([], $vectorExtractor(null));
Assert::throws(function () use ($vectorExtractor) {
$vectorExtractor(4.2);
}, \RuntimeException::class); // TODO improve
}, RuntimeException::class); // TODO improve


// an empty input can not result in any tree
Expand Down Expand Up @@ -165,7 +167,7 @@ class Item
], $toArray($root));


Tree::reindexTree($root, fn(Node $node)=>$node->data()->id, null);
Tree::reindexTree($root, fn(Node $node) => $node->data()->id, null);
Assert::same([
'>' => '[0]',
'>1' => '[1]',
Expand All @@ -190,6 +192,4 @@ class Item
'>3' => '[3]', // .3
'>9' => '[9]', // .9
], $toArray($root));


})();
6 changes: 3 additions & 3 deletions tests/nodes.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

declare(strict_types=1);

namespace Dakujem\Test;

use Dakujem\Oliva\Node;
use Dakujem\Oliva\Simple\NodeBuilder;
use Dakujem\Oliva\Simple\TreeWrapper;
use Tester\Assert;
use Tester\Environment;

require_once __DIR__ . '/../vendor/autoload.php';
Environment::setup();
require_once __DIR__ . '/setup.php';

(function () {
$builder = new NodeBuilder(fn(mixed $data) => new Node($data));
Expand Down
7 changes: 4 additions & 3 deletions tests/recursive.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@

declare(strict_types=1);

namespace Dakujem\Test;

use Dakujem\Oliva\Iterator\Filter;
use Dakujem\Oliva\Iterator\PreOrderTraversal;
use Dakujem\Oliva\Node;
use Dakujem\Oliva\Recursive\TreeBuilder;
use Dakujem\Oliva\Seed;
use Dakujem\Oliva\TreeNodeContract;
use LogicException;
use Tester\Assert;
use Tester\Environment;

require_once __DIR__ . '/../vendor/autoload.php';
Environment::setup();
require_once __DIR__ . '/setup.php';

class Item
{
Expand Down
45 changes: 45 additions & 0 deletions tests/setup.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

declare(strict_types=1);

namespace Dakujem\Test;

use Dakujem\Oliva\DataNodeContract;
use Dakujem\Oliva\Iterator\PreOrderTraversal;
use Dakujem\Oliva\TreeNodeContract;
use Tester\Environment;


require_once __DIR__ . '/../vendor/autoload.php';
Environment::setup();

final class TreeTesterTool
{
public static function concatTree(
TreeNodeContract $node,
string $traversalClass = PreOrderTraversal::class,
string $delimiter = '',
): string {
return self::concat(
new $traversalClass($node),
$delimiter,
);
}

public static function concat(iterable $traversal, string $delimiter = ''): string
{
return self::reduce(
$traversal,
fn(string $carry, DataNodeContract $item) => $carry . $delimiter . $item->data(),
);
}

public static function reduce(iterable $traversal, callable $reducer, string $carry = ''): string
{
foreach ($traversal as $node) {
$carry = $reducer($carry, $node);
}
return $carry;
}
}

0 comments on commit 01426c3

Please sign in to comment.