public function testSignViaRange() { for ($i = 1; $i <= 12; $i++) { $this->out(ZodiacLib::signs($i) . BR); $range = $this->Zodiac->getRange($i); $is = $this->Zodiac->getSign($range[0][0], $range[0][1]); $this->assertSame($is, $i); $is = $this->Zodiac->getSign($range[1][0], $range[1][1]); $this->assertSame($is, $i); // min-1 $month = $range[0][0]; $day = $range[0][1] - 1; $is = $this->Zodiac->getSign($month, $day); $ii = $i; if ($ii == 1) { $ii = 13; } $this->assertSame($is, $ii - 1); // max+1 $month = $range[1][0]; $day = $range[1][1] + 1; $ii = $i; if ($ii == 12) { $ii = 0; } $is = $this->Zodiac->getSign($month, $day); $this->assertSame($is, $ii + 1); } }
/** * Returns age by horoscope info. * * @param int $year Year * @param int $sign Sign * @return int|array Age */ public static function ageByHoroscope($year, $sign) { App::uses('ZodiacLib', 'Tools.Misc'); $Zodiac = new ZodiacLib(); $range = $Zodiac->getRange($sign); if ($sign == ZodiacLib::SIGN_CAPRICORN) { // undefined return [date('Y') - $year - 1, date('Y') - $year]; } if ($range[0][0] > date('m') || $range[0][0] == date('m') && $range[0][1] > date('d')) { // not over return date('Y') - $year - 1; } if ($range[1][0] < date('m') || $range[1][0] == date('m') && $range[1][1] <= date('d')) { // over return date('Y') - $year; } return [date('Y') - $year - 1, date('Y') - $year]; }
/** * 2011-11-22 lb */ public function ageByHoroscope($year, $sign) { App::uses('ZodiacLib', 'Tools.Misc'); $Zodiac = new ZodiacLib(); $range = $Zodiac->getRange($sign); // undefined if ($sign == ZodiacLib::SIGN_CAPRICORN) { return array(date('Y') - $year - 1, date('Y') - $year); } elseif ($range[0][0] > date('m') || $range[0][0] == date('m') && $range[0][1] > date('d')) { return date('Y') - $year - 1; } elseif ($range[1][0] < date('m') || $range[1][0] == date('m') && $range[1][1] <= date('d')) { return date('Y') - $year; } else { return array(date('Y') - $year - 1, date('Y') - $year); } }