Code Coverage Classes and Traits Functions and Methods Lines Total 0.00% covered (danger) 0.00% 0 / 1 60.00% covered (warning) 60.00% 3 / 5 CRAP 63.64% covered (warning) 63.64% 7 / 11 SquareRelations 0.00% covered (danger) 0.00% 0 / 1 60.00% covered (warning) 60.00% 3 / 5 6.20 63.64% covered (warning) 63.64% 7 / 11 __construct 0.00% covered (danger) 0.00% 0 / 1 2 0.00% covered (danger) 0.00% 0 / 3 new 0.00% covered (danger) 0.00% 0 / 1 2 0.00% covered (danger) 0.00% 0 / 1 getDistance 100.00% covered (success) 100.00% 1 / 1 1 100.00% covered (success) 100.00% 5 / 5 haveSameRank 100.00% covered (success) 100.00% 1 / 1 1 100.00% covered (success) 100.00% 1 / 1 haveSameFile 100.00% covered (success) 100.00% 1 / 1 1 100.00% covered (success) 100.00% 1 / 1
 . * * @file SquareRelations * @ingroup ChessBrowser * @author DannyS712 */ namespace MediaWiki\Extension\ChessBrowser; class SquareRelations { /** @var int */ private \$square1; /** @var int */ private \$square2; /** * Can be used, but for chaining ::new is probably better * * @param int \$square1 Square as byte number where in Hex notation *                     the first four bits (0xF0) are rank [1-8] *                     and the second 4 bits (0x0F) are file [a-h] * @param int \$square2 Square as byte number where in Hex notation *                     the first four bits (0xF0) are rank [1-8] *                     and the second 4 bits (0x0F) are file [a-h] */ public function __construct( int \$square1, int \$square2 ) { \$this->square1 = \$square1; \$this->square2 = \$square2; } /** * For chaining * * @param int \$square1 * @param int \$square2 * @return SquareRelations */ public static function new( int \$square1, int \$square2 ): SquareRelations { return new SquareRelations( \$square1, \$square2 ); } /** * Get the distance between 2 squares * @return int */ public function getDistance(): int { \$sq1 = \$this->square1; \$sq2 = \$this->square2; \$rankDiff = abs( ( \$sq1 & 0xF0 ) - ( \$sq2 & 0XF0 ) ) >> 4; \$fileDiff = abs( ( \$sq1 & 0x07 ) - ( \$sq2 & 0x07 ) ); return max( \$rankDiff, \$fileDiff ); } /** * Returns whether two squares are on the same rank. * @return bool */ public function haveSameRank(): bool { return ( \$this->square1 & 0xF0 ) === ( \$this->square2 & 0xF0 ); } /** * Returns whether two squares are on the same file * @return bool */ public function haveSameFile(): bool { return ( \$this->square1 & 0x0F ) === ( \$this->square2 & 0x0F ); } }