heterogenous.phpt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. declare(strict_types=1);
  3. use Nette\Schema\Context;
  4. use Nette\Schema\Expect;
  5. use Nette\Schema\Processor;
  6. use Nette\Schema\Schema;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. class MySchema implements Schema
  10. {
  11. public function normalize($value, Context $context)
  12. {
  13. return $value * 2;
  14. }
  15. public function merge($value, $base)
  16. {
  17. return $base . $value;
  18. }
  19. public function complete($value, Context $context)
  20. {
  21. return "'" . $value . "'";
  22. }
  23. public function completeDefault(Context $context)
  24. {
  25. return 'def';
  26. }
  27. }
  28. test('', function () {
  29. $schema = Expect::arrayOf(new MySchema);
  30. $processor = new Processor;
  31. Assert::same([], $processor->process($schema, []));
  32. Assert::same(["'2'"], $processor->process($schema, [1]));
  33. Assert::same(["'2'", "'4'"], $processor->process($schema, [1, 2]));
  34. });
  35. test('', function () {
  36. $schema = Expect::arrayOf(new MySchema);
  37. $processor = new Processor;
  38. Assert::same([], $processor->processMultiple($schema, []));
  39. Assert::same([], $processor->processMultiple($schema, [[]]));
  40. Assert::same(["'2'"], $processor->processMultiple($schema, [[1]]));
  41. Assert::same(["'2'", "'4'"], $processor->processMultiple($schema, [[1], [2]]));
  42. Assert::same(['key' => "'24'"], $processor->processMultiple($schema, [['key' => 1], ['key' => 2]]));
  43. });