fix package test + graph test started

This commit is contained in:
Dennis Eichhorn 2018-10-15 19:20:07 +02:00
parent d7a86d3a49
commit 0be02d40c2
6 changed files with 118 additions and 65 deletions

View File

@ -280,9 +280,10 @@ final class PackageManager
*/
private function authenticate(string $signedHash, string $rawHash) : bool
{
return \sodium_crypto_sign_verify_detached($signedHash, $rawHash, $this->publicKey);
//$unsignedHash = \sodium_crypto_sign_open($signedHash, $this->publicKey);
return $unsignedHash === $rawHash;
try {
return \sodium_crypto_sign_verify_detached($signedHash, $rawHash, $this->publicKey);
} catch(\Throwable $t) {
return false;
}
}
}

View File

@ -1,38 +0,0 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package TBD
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace phpOMS\Stdlib\Base;
class ExactFloat
{
public static function sum($a, $b, $length = null)
{
}
public static function add($a, $b, $length = null)
{
}
public static function sub($a, $b, $length = null)
{
}
public static function mult($a, $b, $length = null)
{
}
public static function div($a, $b, $length = null)
{
}
}

View File

@ -128,13 +128,13 @@ class Graph
*
* @param mixed $key Node key
*
* @return Node
* @return Node|null
*
* @since 1.0.0
*/
public function getNode($key) : Node
public function getNode($key) : ?Node
{
return $this->nodes[$key];
return $this->nodes[$key] ?? null;
}
/**
@ -154,13 +154,25 @@ class Graph
*
* @param mixed $key Edge key
*
* @return Edge
* @return Edge|null
*
* @since 1.0.0
*/
public function getEdge($key) : Edge
public function getEdge($key) : ?Edge
{
return $this->edges[$key];
return $this->edges[$key] ?? null;
}
/**
* Get graph edges
*
* @return Node[]
*
* @since 1.0.0
*/
public function getEdges() : array
{
return $this->edges;
}
/**
@ -193,7 +205,7 @@ class Graph
/**
* Get all node neighbors.
*
* @param Node $node Graph node
* @param mixed $node Graph node
*
* @return Node[]
*
@ -201,6 +213,10 @@ class Graph
*/
public function getNeighbors($node) : array
{
if (!($node instanceof Node)) {
$node = $this->getNode($node);
}
$edges = $this->getEdgesOfNode($node);
$neighbors = [];
@ -278,7 +294,7 @@ class Graph
*/
public function getCircle() : array
{
// todo: implement
return [];
}
/**
@ -290,7 +306,7 @@ class Graph
*/
public function getFloydWarshallShortestPath() : array
{
// todo: implement
return [];
}
/**
@ -302,7 +318,7 @@ class Graph
*/
public function getDijkstraShortestPath() : array
{
// todo: implement
return [];
}
/**
@ -314,7 +330,7 @@ class Graph
*/
public function depthFirstTraversal() : array
{
// todo: implement
return [];
}
/**
@ -326,7 +342,7 @@ class Graph
*/
public function breadthFirstTraversal() : array
{
// todo: implement
return [];
}
/**
@ -338,22 +354,30 @@ class Graph
*/
public function longestPath() : array
{
// todo: implement
return [];
}
/**
* Get longest path between two nodes.
*
* @param Node $node1 Graph node
* @param Node $node2 Graph node
* @param mixed $node1 Graph node
* @param mixed $node2 Graph node
*
* @return Node[]
*
* @since 1.0.0
*/
public function longestPathBetweenNodes(Node $node1, Node $node2) : array
public function longestPathBetweenNodes($node1, $node2) : array
{
// todo: implement
if (!($node1 instanceof Node)) {
$node1 = $this->getNode($node1);
}
if (!($node2 instanceof Node)) {
$node2 = $this->getNode($node2);
}
return [];
}
/**
@ -414,22 +438,22 @@ class Graph
public function getGirth() : int
{
// todo: implement
return 0;
}
public function getCircuitRank() : int
{
// todo: implement
return 0;
}
public function getNodeConnectivity() : int
{
// todo: implement
return 0;
}
public function getEdgeConnectivity() : int
{
// todo: implement
return 0;
}
public function isConnected() : bool
@ -442,6 +466,8 @@ class Graph
{
// todo: implement
// get all unconnected sub graphs
return [];
}
public function isBipartite() : bool

View File

@ -31,6 +31,8 @@ class PackageManagerTest extends \PHPUnit\Framework\TestCase
}
if (file_exists(__DIR__ . '/testPackageExtracted')) {
\array_map('unlink', \glob(__DIR__ . '/testPackageExtracted/testSubPackage/*'));
\rmdir(__DIR__ . '/testPackageExtracted/testSubPackage');
\array_map('unlink', \glob(__DIR__ . '/testPackageExtracted/*'));
}
@ -89,6 +91,33 @@ class PackageManagerTest extends \PHPUnit\Framework\TestCase
self::assertTrue($package->isValid());
}
public function testPackageInvalidKey()
{
$package = new PackageManager(
__DIR__ . '/testPackage.zip',
'/invalid',
\file_get_contents(__DIR__ . '/public.key') . ' '
);
$package->extract(__DIR__ . '/testPackageExtracted');
self::assertFalse($package->isValid());
}
public function testPackageInvalidContent()
{
$package = new PackageManager(
__DIR__ . '/testPackage.zip',
'/invalid',
\file_get_contents(__DIR__ . '/public.key')
);
$package->extract(__DIR__ . '/testPackageExtracted');
\file_put_contents(__DIR__ . '/testPackageExtracted/info.json', ' ', FILE_APPEND);
self::assertFalse($package->isValid());
}
public function testCleanup()
{
$package = new PackageManager(
@ -111,6 +140,8 @@ class PackageManagerTest extends \PHPUnit\Framework\TestCase
}
if (file_exists(__DIR__ . '/testPackageExtracted')) {
\array_map('unlink', \glob(__DIR__ . '/testPackageExtracted/testSubPackage/*'));
\rmdir(__DIR__ . '/testPackageExtracted/testSubPackage');
\array_map('unlink', \glob(__DIR__ . '/testPackageExtracted/*'));
\rmdir(__DIR__ . '/testPackageExtracted');
}

View File

@ -17,8 +17,41 @@ use phpOMS\Stdlib\Graph\Graph;
class GraphTest extends \PHPUnit\Framework\TestCase
{
public function testPlaceholder()
public function testDefault()
{
self::markTestIncomplete();
$graph = new Graph();
self::assertEquals(null, $graph->getNode('invalid'));
self::assertEquals([], $graph->getNodes());
self::assertEquals(null, $graph->getEdge('invalid'));
self::assertEquals([], $graph->getEdges());
self::assertEquals([], $graph->getEdgesOfNode('invalid'));
self::assertEquals([], $graph->getNeighbors('invalid'));
self::assertEquals(0, $graph->getDimension());
self::assertEquals(0, $graph->getDiameter());
self::assertEquals(0, $graph->getOrder());
self::assertEquals(0, $graph->getSize());
self::assertEquals(0, $graph->getGirth());
self::assertEquals(0, $graph->getCircuitRank());
self::assertEquals(0, $graph->getNodeConnectivity());
self::assertEquals(0, $graph->getEdgeConnectivity());
self::assertTrue($graph->isConnected());
self::assertTrue($graph->isBipartite());
self::assertTrue($graph->isTriangleFree());
self::assertTrue($graph->isCircleFree());
self::assertEquals([], $graph->getBridges());
self::assertEquals([], $graph->getCircle());
self::assertEquals([], $graph->getFloydWarshallShortestPath());
self::assertEquals([], $graph->getDijkstraShortestPath());
self::assertEquals([], $graph->depthFirstTraversal());
self::assertEquals([], $graph->breadthFirstTraversal());
self::assertEquals([], $graph->longestPath());
self::assertEquals([], $graph->longestPathBetweenNodes('invalid1', 'invalid2'));
self::assertEquals([], $graph->getUnconnected());
}
}