diff --git a/Algorithm/Frequency/Apriori.php b/Algorithm/Frequency/Apriori.php index 93f547b3c..3a2063c0f 100644 --- a/Algorithm/Frequency/Apriori.php +++ b/Algorithm/Frequency/Apriori.php @@ -70,8 +70,8 @@ final class Apriori * * The algorithm cheks how often a set exists in a given set of sets. * - * @param array $sets Sets of a set (e.g. [[1,2,3,4], [1,2], [1]]) - * @param array $subset Subset to check for (empty array -> all subsets are checked) + * @param array $sets Sets of a set (e.g. [[1,2,3,4], [1,2], [1]]) + * @param string[] $subset Subset to check for (empty array -> all subsets are checked) * * @return array * diff --git a/Business/Recommendation/MemoryCF.php b/Business/Recommendation/MemoryCF.php index c81ac3a1e..972511543 100644 --- a/Business/Recommendation/MemoryCF.php +++ b/Business/Recommendation/MemoryCF.php @@ -189,11 +189,9 @@ final class MemoryCF $anglePointer = \array_keys($cosine); // Inspect items of the top n comparable users - for ($i = 1; $i <= $size; ++$i) { - $index = (int) ($i / 2) - 1; - - $uId = $i % 2 === 1 ? $distancePointer[$index] : $anglePointer[$index]; - $distances = $i % 2 === 1 ? $euclidean : $cosine; + for ($i = 0; $i < $size; ++$i) { + $uId = $i % 2 === 0 ? $distancePointer[$i] : $anglePointer[$i]; + $distances = $i % 2 === 0 ? $euclidean : $cosine; foreach ($this->rankings[$uId] as $iId => $_) { // Item is not already in dataset and not in historic dataset (we are only interested in new) diff --git a/tests/Algorithm/Frequency/AprioriTest.php b/tests/Algorithm/Frequency/AprioriTest.php index 9bfc8a44c..7501f6b5a 100644 --- a/tests/Algorithm/Frequency/AprioriTest.php +++ b/tests/Algorithm/Frequency/AprioriTest.php @@ -54,14 +54,30 @@ final class AprioriTest extends \PHPUnit\Framework\TestCase ); self::assertEquals( - [], + [ + '4' => 5, + '3' => 3, + '3:4' => 3, + '2' => 5, + '2:4' => 4, + '2:3' => 2, + '2:3:4' => 2, + '1' => 3, + '1:4' => 2, + '1:3' => 1, + '1:3:4' => 1, + '1:2' => 3, + '1:2:4' => 2, + '1:2:3' => 1, + '1:2:3:4' => 1, + ], Apriori::apriori([ - [1, 2, 3, 4], - [1, 2, 4], - [1, 2], - [2, 3, 4], - [3, 4], - [2, 4], + ['1', '2', '3', '4'], + ['1', '2', '4'], + ['1', '2'], + ['2', '3', '4'], + ['3', '4'], + ['2', '4'], ]) ); } @@ -85,14 +101,14 @@ final class AprioriTest extends \PHPUnit\Framework\TestCase ['2:3' => 2], Apriori::apriori( [ - [1, 2, 3, 4], - [1, 2, 4], - [1, 2], - [2, 3, 4], - [3, 4], - [2, 4], + ['1', '2', '3', '4'], + ['1', '2', '4'], + ['1', '2'], + ['2', '3', '4'], + ['3', '4'], + ['2', '4'], ], - [2, 3] + ['2', '3'] ) ); } diff --git a/tests/Algorithm/Graph/DependencyResolverTest.php b/tests/Algorithm/Graph/DependencyResolverTest.php index 13ba3aed1..e6abf5832 100644 --- a/tests/Algorithm/Graph/DependencyResolverTest.php +++ b/tests/Algorithm/Graph/DependencyResolverTest.php @@ -26,17 +26,23 @@ require_once __DIR__ . '/../../Autoloader.php'; final class DependencyResolverTest extends \PHPUnit\Framework\TestCase { /** - * @testdox A value is matched with the minimum quantity of available coins. + * @covers phpOMS\Algorithm\Graph\DependencyResolver + * @group framework + */ + public function testResolveCircular() : void + { + self::assertEquals( + null, + DependencyResolver::resolve([0 => [1, 2], 1 => [0, 2], 2 => []]) + ); + } + + /** * @covers phpOMS\Algorithm\Graph\DependencyResolver * @group framework */ public function testResolve() : void { - self::assertEquals( - null, - DependencyResolver::resolve([0 => [1, 2], 1 => [0, 2], 2 => []]) - ); - self::assertEquals( [0, 1, 2, 3], DependencyResolver::resolve([0 => [1, 2], 1 => [2, 3], 2 => [], 3 => []]) diff --git a/tests/DataStorage/Database/TestModel/BaseModelMapper.php b/tests/DataStorage/Database/TestModel/BaseModelMapper.php index f70e01dc1..7ef5c61d4 100755 --- a/tests/DataStorage/Database/TestModel/BaseModelMapper.php +++ b/tests/DataStorage/Database/TestModel/BaseModelMapper.php @@ -54,10 +54,12 @@ class BaseModelMapper extends DataMapperFactory 'belongsToOne' => [ 'mapper' => BelongsToModelMapper::class, 'external' => 'test_base_belongs_to_one', + 'private' => true, ], 'belongsToOnePrivate' => [ 'mapper' => BelongsToModelMapper::class, 'external' => 'test_base_belongs_to_one', + 'private' => true, ], ];