Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $chunk = array(
- 'min' => array(
- 'x' => 16,
- 'y' => 16
- ),
- 'max' => array(
- 'x' => 32,
- 'y' => 32
- )
- );
- // Тесты:
- // 1. Чанк и приват не пересекаются
- // 2. Чанк внутри привата
- // 3. Приват внутри чанка
- // 4. Приват и чанк пересекаются уголочком
- $tests = array(
- 1 => array(
- 'min' => array('x' => 0, 'y' => 0),
- 'max' => array('x' => 1, 'y' => 1),
- 'result' => false
- ),
- 2 => array(
- 'min' => array('x' => 0, 'y' => 0),
- 'max' => array('x' => 64, 'y' => 64),
- 'result' => true
- ),
- 3 => array(
- 'min' => array('x' => 20, 'y' => 20),
- 'max' => array('x' => 26, 'y' => 26),
- 'result' => true
- ),
- 4 => array(
- 'min' => array('x' => 0, 'y' => 0),
- 'max' => array('x' => 20, 'y' => 20),
- 'result' => true
- ),
- );
- /**
- * Тестируем функцию для проверки пересечения регионов
- **/
- function check(array $region, array $chunk) : bool {
- if ($region['max']['y'] > $chunk['min']['y'] &&
- $region['max']['x'] > $chunk['min']['x'] &&
- $region['min']['y'] < $chunk['max']['y'] &&
- $region['min']['x'] < $chunk['max']['x'])
- {
- return true;
- }else {
- return false;
- }
- }
- $fail_test = 0;
- foreach ($tests as $num => $test) {
- if ($test['result'] == check($test, $chunk)) {
- echo "Test $num passed!" . PHP_EOL;
- }else {
- echo "Test $num NO passed!" . PHP_EOL;
- $fail_test++;
- }
- }
- if ($fail_test > 0) {
- echo "Not all tests were successful!";
- die();
- }
- /**
- * Тестируем функцию для получения координат, по которым пересекаются регионы
- **/
- function getIntersection(array $region, array $chunk) : array {
- $result = array(
- 'min' => array(
- 'x' => max($region['min']['x'], $chunk['min']['x']),
- 'y' => max($region['min']['y'], $chunk['min']['y'])
- ),
- 'max' => array(
- 'x' => min($region['max']['x'], $chunk['max']['x']),
- 'y' => min($region['max']['y'], $chunk['max']['y'])
- )
- );
- if ($result['min']['x'] > $result['max']['x']) {
- $result = array();
- }elseif ($result['min']['y'] > $result['max']['y']) {
- $result = array();
- }
- return $result;
- }
- foreach ($tests as $num => $test) {
- var_dump($num, getIntersection($test, $chunk));
- }
- ?>
Advertisement