Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
CRAP
71.43% covered (warning)
71.43%
10 / 14
Persian
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
5.58
71.43% covered (warning)
71.43%
10 / 14
 isLeapYear
0.00% covered (danger)
0.00%
0 / 1
5.58
71.43% covered (warning)
71.43%
10 / 14
<?php
namespace Popy\Calendar\Converter\LeapYearCalculator;
use Popy\Calendar\Converter\SimpleLeapYearCalculatorInterface;
/**
 * Persian / Solar Hijri leap year calculator.
 *
 * @link https://en.wikipedia.org/wiki/Solar_Hijri_calendar#Solar_Hijri_algorithmic_calendar
 */
class Persian implements SimpleLeapYearCalculatorInterface
{
    /**
     * @inheritDoc
     */
    public function isLeapYear($year)
    {
        $cycle = $year % 2820;
        if ($cycle >= 21 * 128) {
            $cycle -= 21 * 128;
        } else {
            $cycle = $cycle % 128;
        }
        if ($cycle >= 29) {
            $cycle -= 29;
            if ($cycle >= 2*33) {
                $cycle -= 2 * 33;
            } else {
                $cycle = $cycle % 33;
            }
        }
        $cycle++;
        return $cycle > 1 && ($cycle % 4 === 1);
    }
}