From 64aebc4c567afc3df5868f62ed9beaf04d0b2d30 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sun, 10 Nov 2024 16:40:17 +0100 Subject: [PATCH] Change compatibility type to float --- src/AbstractZodiac.php | 2 +- src/Compatibility.php | 294 ++++++++++++++--------------- src/Interfaces/ZodiacInterface.php | 4 +- tests/CompatibilityTest.php | 4 +- 4 files changed, 152 insertions(+), 152 deletions(-) diff --git a/src/AbstractZodiac.php b/src/AbstractZodiac.php index 7264ea0..021b067 100644 --- a/src/AbstractZodiac.php +++ b/src/AbstractZodiac.php @@ -95,7 +95,7 @@ public function html(): string * * @see ZodiacInterface::compatibility() */ - public function compatibility(ZodiacInterface $zodiac): int + public function compatibility(ZodiacInterface $zodiac): float { return call_user_func(new Compatibility(), $this, $zodiac); } diff --git a/src/Compatibility.php b/src/Compatibility.php index c3d6626..d92cb29 100644 --- a/src/Compatibility.php +++ b/src/Compatibility.php @@ -21,176 +21,176 @@ class Compatibility { /** - * @var array> $factors + * @var array> $factors */ protected array $factors = [ Aquarius::class => [ - Aquarius::class => 9, - Aries::class => 9, - Cancer::class => 4, - Capricorn::class => 4, - Gemini::class => 10, - Leo::class => 8, - Libra::class => 7, - Pisces::class => 6, - Sagittarius::class => 8, - Scorpio::class => 4, - Taurus::class => 5, - Virgo::class => 7, + Aquarius::class => .9, + Aries::class => .9, + Cancer::class => .2, + Capricorn::class => .3, + Gemini::class => 1, + Leo::class => .8, + Libra::class => .7, + Pisces::class => .6, + Sagittarius::class => .8, + Scorpio::class => .1, + Taurus::class => .5, + Virgo::class => .7, ], Aries::class => [ - Aquarius::class => 9, - Aries::class => 10, - Cancer::class => 7, - Capricorn::class => 5, - Gemini::class => 9, - Leo::class => 9, - Libra::class => 9, - Pisces::class => 7, - Sagittarius::class => 10, - Scorpio::class => 6, - Taurus::class => 6, - Virgo::class => 7, + Aquarius::class => .9, + Aries::class => 1, + Cancer::class => .7, + Capricorn::class => .5, + Gemini::class => .9, + Leo::class => .9, + Libra::class => .9, + Pisces::class => .7, + Sagittarius::class => 1, + Scorpio::class => .6, + Taurus::class => .6, + Virgo::class => .7, ], Cancer::class => [ - Aquarius::class => 4, - Aries::class => 7, - Cancer::class => 10, - Capricorn::class => 8, - Gemini::class => 6, - Leo::class => 8, - Libra::class => 7, - Pisces::class => 10, - Sagittarius::class => 5, - Scorpio::class => 8, - Taurus::class => 9, - Virgo::class => 8, + Aquarius::class => .2, + Aries::class => .7, + Cancer::class => 1, + Capricorn::class => .8, + Gemini::class => .6, + Leo::class => .8, + Libra::class => .7, + Pisces::class => 1, + Sagittarius::class => .5, + Scorpio::class => .8, + Taurus::class => .9, + Virgo::class => .8, ], Capricorn::class => [ - Aquarius::class => 4, - Aries::class => 6, - Cancer::class => 9, - Capricorn::class => 9, - Gemini::class => 4, - Leo::class => 5, - Libra::class => 5, - Pisces::class => 8, - Sagittarius::class => 5, - Scorpio::class => 9, - Taurus::class => 9, - Virgo::class => 10, + Aquarius::class => .2, + Aries::class => .6, + Cancer::class => .9, + Capricorn::class => .9, + Gemini::class => .2, + Leo::class => .5, + Libra::class => .5, + Pisces::class => .8, + Sagittarius::class => .5, + Scorpio::class => .9, + Taurus::class => .9, + Virgo::class => 1, ], Gemini::class => [ - Aquarius::class => 10, - Aries::class => 8, - Cancer::class => 5, - Capricorn::class => 5, - Gemini::class => 6, - Leo::class => 8, - Libra::class => 8, - Pisces::class => 9, - Sagittarius::class => 7, - Scorpio::class => 4, - Taurus::class => 5, - Virgo::class => 7, + Aquarius::class => 1, + Aries::class => .8, + Cancer::class => .5, + Capricorn::class => .5, + Gemini::class => .6, + Leo::class => .8, + Libra::class => .8, + Pisces::class => .9, + Sagittarius::class => .7, + Scorpio::class => .1, + Taurus::class => .5, + Virgo::class => .7, ], Leo::class => [ - Aquarius::class => 9, - Aries::class => 9, - Cancer::class => 5, - Capricorn::class => 4, - Gemini::class => 8, - Leo::class => 7, - Libra::class => 8, - Pisces::class => 7, - Sagittarius::class => 5, - Scorpio::class => 7, - Taurus::class => 7, - Virgo::class => 8, + Aquarius::class => .9, + Aries::class => .9, + Cancer::class => .5, + Capricorn::class => .2, + Gemini::class => .8, + Leo::class => .7, + Libra::class => .8, + Pisces::class => .7, + Sagittarius::class => .5, + Scorpio::class => .7, + Taurus::class => .7, + Virgo::class => .8, ], Libra::class => [ - Aquarius::class => 7, - Aries::class => 9, - Cancer::class => 5, - Capricorn::class => 7, - Gemini::class => 9, - Leo::class => 8, - Libra::class => 9, - Pisces::class => 5, - Sagittarius::class => 8, - Scorpio::class => 5, - Taurus::class => 5, - Virgo::class => 7, + Aquarius::class => .7, + Aries::class => .9, + Cancer::class => .5, + Capricorn::class => .7, + Gemini::class => .9, + Leo::class => .8, + Libra::class => .9, + Pisces::class => .5, + Sagittarius::class => .8, + Scorpio::class => .5, + Taurus::class => .5, + Virgo::class => .7, ], Pisces::class => [ - Aquarius::class => 9, - Aries::class => 5, - Cancer::class => 10, - Capricorn::class => 9, - Gemini::class => 9, - Leo::class => 5, - Libra::class => 5, - Pisces::class => 5, - Sagittarius::class => 5, - Scorpio::class => 8, - Taurus::class => 6, - Virgo::class => 8, + Aquarius::class => .9, + Aries::class => .5, + Cancer::class => 1, + Capricorn::class => .9, + Gemini::class => .9, + Leo::class => .5, + Libra::class => .5, + Pisces::class => .5, + Sagittarius::class => .5, + Scorpio::class => .8, + Taurus::class => .6, + Virgo::class => .8, ], Sagittarius::class => [ - Aquarius::class => 8, - Aries::class => 8, - Cancer::class => 5, - Capricorn::class => 4, - Gemini::class => 8, - Leo::class => 7, - Libra::class => 8, - Pisces::class => 6, - Sagittarius::class => 8, - Scorpio::class => 4, - Taurus::class => 5, - Virgo::class => 7, + Aquarius::class => .8, + Aries::class => .8, + Cancer::class => .5, + Capricorn::class => .3, + Gemini::class => .8, + Leo::class => .7, + Libra::class => .8, + Pisces::class => .6, + Sagittarius::class => .8, + Scorpio::class => .1, + Taurus::class => .5, + Virgo::class => .7, ], Scorpio::class => [ - Aquarius::class => 6, - Aries::class => 6, - Cancer::class => 9, - Capricorn::class => 9, - Gemini::class => 4, - Leo::class => 7, - Libra::class => 5, - Pisces::class => 8, - Sagittarius::class => 4, - Scorpio::class => 10, - Taurus::class => 9, - Virgo::class => 10, + Aquarius::class => .6, + Aries::class => .6, + Cancer::class => .9, + Capricorn::class => .9, + Gemini::class => .3, + Leo::class => .7, + Libra::class => .5, + Pisces::class => .8, + Sagittarius::class => .3, + Scorpio::class => 1, + Taurus::class => .9, + Virgo::class => .1, ], Taurus::class => [ - Aquarius::class => 6, - Aries::class => 6, - Cancer::class => 9, - Capricorn::class => 10, - Gemini::class => 5, - Leo::class => 6, - Libra::class => 6, - Pisces::class => 6, - Sagittarius::class => 5, - Scorpio::class => 9, - Taurus::class => 9, - Virgo::class => 9, + Aquarius::class => .6, + Aries::class => .6, + Cancer::class => .9, + Capricorn::class => 1, + Gemini::class => .5, + Leo::class => .6, + Libra::class => .6, + Pisces::class => .6, + Sagittarius::class => .4, + Scorpio::class => .9, + Taurus::class => .9, + Virgo::class => .9, ], Virgo::class => [ - Aquarius::class => 7, - Aries::class => 7, - Cancer::class => 8, - Capricorn::class => 9, - Gemini::class => 8, - Leo::class => 5, - Libra::class => 6, - Pisces::class => 9, - Sagittarius::class => 7, - Scorpio::class => 9, - Taurus::class => 9, - Virgo::class => 9, + Aquarius::class => .7, + Aries::class => .7, + Cancer::class => .8, + Capricorn::class => .9, + Gemini::class => .8, + Leo::class => .5, + Libra::class => .6, + Pisces::class => .9, + Sagittarius::class => .7, + Scorpio::class => .9, + Taurus::class => .9, + Virgo::class => .9, ], ]; @@ -199,9 +199,9 @@ class Compatibility * * @param ZodiacInterface $a * @param ZodiacInterface $b - * @return int + * @return float */ - public function __invoke(ZodiacInterface $a, ZodiacInterface $b): int + public function __invoke(ZodiacInterface $a, ZodiacInterface $b): float { return $this->factors[$a::class][$b::class]; } diff --git a/src/Interfaces/ZodiacInterface.php b/src/Interfaces/ZodiacInterface.php index d658fd6..43e5791 100644 --- a/src/Interfaces/ZodiacInterface.php +++ b/src/Interfaces/ZodiacInterface.php @@ -53,9 +53,9 @@ public function localized(?string $locale = null): ?string; * Completely made up :) Don't plan your life around it. * * @param ZodiacInterface $zodiac - * @return int + * @return float */ - public function compatibility(self $zodiac): int; + public function compatibility(self $zodiac): float; /** * Cast current object to string diff --git a/tests/CompatibilityTest.php b/tests/CompatibilityTest.php index 06a3e31..ffa4993 100644 --- a/tests/CompatibilityTest.php +++ b/tests/CompatibilityTest.php @@ -26,8 +26,8 @@ final class CompatibilityTest extends TestCase public function testCalculate(string $a, string $b): void { $result = call_user_func(new Compatibility(), new $a(), new $b()); - $this->assertIsInt($result); - $this->assertTrue(in_array($result, range(0, 10))); + $this->assertIsFloat($result); + $this->assertTrue($result >= 0 && $result <= 1); } public static function factorDataProvider(): array