コード例 #1
0
ファイル: ArraysTest.php プロジェクト: VijitCoder/Kira
 /**
  * Рекурсивная фильтрация ключей и значений массива через callback-функцию.
  *
  * Функция проверяет значение на четность. Останутся только нечетные элементы.
  *
  * Поскольку Флаг ARRAY_FILTER_USE_BOTH для подмассива неоднозначен, определим такое поведение callback-функции:
  * если полученное значение - массив, тогда проверим на четность ключ, к которому этот подмассив назначен. Иначе
  * проверяем на четность элемент. Вообще мне трудно придумать какую-то вразумительную ситуацию, когда могла бы
  * потребоваться фильтрация многомерного массива и по ключам и по значениям.
  */
 public function test_array_filter_recursive_both()
 {
     $arr = [[11, 12, 13, 14], [15, 16, 17, 18], [2, 4, 6], [19, 20]];
     $arr = Arrays::array_filter_recursive($arr, function ($val, $key) {
         return is_array($val) ? $key & 1 : $val & 1;
     }, ARRAY_FILTER_USE_BOTH);
     $expect = [1 => [0 => 15, 2 => 17], 3 => [19]];
     $this->assertEquals($expect, $arr, 'Рекурсивная фильтрация ключей и значений массива через callback-функцию');
 }
コード例 #2
0
 /**
  * Пробуем пробить валидаторы
  *
  * Результаты можно получить несколькими способами, аналогично с self::test_validate()
  *
  * Прим.: пересоздаем модель формы, т.к. ее повторное использование не предусмотрено.
  */
 public function test_invalid_data()
 {
     self::setUpBeforeClass();
     $form = self::$form;
     $data = ['app_path' => '\\valid\\path\\tooLong', 'app_namespace' => null, 'email' => '*****@*****.**', 'db' => ['switch' => 'on', 'base' => [' my_base ', 'base2']], 'modules' => ' user '];
     $result = $form->load($data)->validate();
     $this->assertFalse($result, 'Валидация не прошла');
     $this->assertFalse($form->isValid(), 'Результат проведенной валидации - неверные данные');
     $this->assertTrue($form->hasErrors(), 'Есть ошибки валидации');
     $errorsByField = Arrays::array_filter_recursive($form->getErrorsAsString());
     $this->assertEquals(5, count($errorsByField), 'Есть ошибки по 5 полям');
 }