Fixes from tests

This commit is contained in:
Dennis Eichhorn 2017-03-10 20:03:16 +01:00
parent 5c1fe7d40f
commit eadc52d9d6
5 changed files with 74 additions and 12 deletions

View File

@ -94,6 +94,8 @@ class Auth
*
* @return int Login code
*
* @todo move this to the admin accountMapper
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/

View File

@ -221,9 +221,7 @@ class Money implements \Serializable
$this->value += $value;
} elseif ($value instanceof Money) {
$this->value += $value->getInt();
} else {
throw new \InvalidArgumentException();
}
}
return $this;
}
@ -259,10 +257,7 @@ class Money implements \Serializable
$this->value -= $value;
} elseif ($value instanceof Money) {
$this->value -= $value->getInt();
} else {
throw new \InvalidArgumentException();
}
}
return $this;
}

View File

@ -100,12 +100,12 @@ class Router
/**
* Route request.
*
* @param RequestAbstract $request Request to route
* @param string|RequestAbstract $request Request to route
* @param int $verb Route verb
*
* @return string[]
*
* @throws \Exception
* @throws \InvalidArgumentException
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
@ -118,7 +118,7 @@ class Router
} elseif (is_string($request)) {
$uri = $request;
} else {
throw new \Exception();
throw new \InvalidArgumentException();
}
$bound = [];

View File

@ -73,6 +73,34 @@ class StringUtils
return false;
}
/**
* Check if a string contains any of the provided needles.
*
* The validation is done case sensitive.
*
* @param string $haystack Haystack
* @param array $needles Needles to check if any of them are part of the haystack
*
* @example StringUtils::mb_contains('This string', ['This', 'test']); // true
* @example StringUtils::mb_contains('This string', 'is st'); // true
* @example StringUtils::mb_contains('This string', 'something'); // false
*
* @return bool The function returns true if any of the needles is part of the haystack, false otherwise.
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public static function mb_contains(string $haystack, array $needles) : bool
{
foreach ($needles as $needle) {
if (mb_strpos($haystack, $needle) !== false) {
return true;
}
}
return false;
}
/**
* Tests if a string ends with a certain string.
*
@ -334,4 +362,35 @@ class StringUtils
return $count;
}
public static function getEntropy(string $value) : int
{
$entroy = 0;
$size = mb_strlen($value);
$countChars = self::mb_count_chars($value, 1);
foreach ($countChars as $v) {
$p = $v / $size;
$entroy -= $p * log($p) / log(2);
}
return $entroy;
}
public static function mb_count_chars(string $input) {
$l = mb_strlen($input, 'UTF-8');
$unique = [];
for($i = 0; $i < $l; $i++) {
$char = mb_substr($input, $i, 1, 'UTF-8');
if(!array_key_exists($char, $unique)) {
$unique[$char] = 0;
}
$unique[$char]++;
}
return $unique;
}
}

View File

@ -145,14 +145,20 @@ class View extends ViewAbstract
* @param string $id Data ID
* @param mixed $data Data
*
* @return void
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addData(string $id, $data) /* : void */
public function addData(string $id, $data) : bool
{
if(isset($this->data[$id])) {
return false;
}
$this->data[$id] = $data;
return true;
}
/**