ObjectHelpers.getSuggestion().phpt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Test: Nette\Utils\ObjectHelpers::getSuggestion()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\ObjectHelpers;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. Assert::same(null, ObjectHelpers::getSuggestion([], ''));
  10. Assert::same(null, ObjectHelpers::getSuggestion([], 'a'));
  11. Assert::same(null, ObjectHelpers::getSuggestion(['a'], 'a'));
  12. Assert::same('a', ObjectHelpers::getSuggestion(['a', 'b'], ''));
  13. Assert::same('b', ObjectHelpers::getSuggestion(['a', 'b'], 'a')); // ignore 100% match
  14. Assert::same('a1', ObjectHelpers::getSuggestion(['a1', 'a2'], 'a')); // take first
  15. Assert::same(null, ObjectHelpers::getSuggestion(['aaa', 'bbb'], 'a'));
  16. Assert::same(null, ObjectHelpers::getSuggestion(['aaa', 'bbb'], 'ab'));
  17. Assert::same(null, ObjectHelpers::getSuggestion(['aaa', 'bbb'], 'abc'));
  18. Assert::same('bar', ObjectHelpers::getSuggestion(['foo', 'bar', 'baz'], 'baz'));
  19. Assert::same('abcd', ObjectHelpers::getSuggestion(['abcd'], 'acbd'));
  20. Assert::same('abcd', ObjectHelpers::getSuggestion(['abcd'], 'axbd'));
  21. Assert::same(null, ObjectHelpers::getSuggestion(['abcd'], 'axyd')); // 'tags' vs 'this'
  22. Assert::same(null, ObjectHelpers::getSuggestion(['setItem'], 'item'));
  23. Assert::same('setItem', ObjectHelpers::getSuggestion(['setItem'], 'Item'));
  24. Assert::same('setItem', ObjectHelpers::getSuggestion(['setItem'], 'addItem'));
  25. Assert::same(null, ObjectHelpers::getSuggestion(['addItem'], 'addItem'));
  26. Assert::same('set', ObjectHelpers::getSuggestion(['set'], 'get'));
  27. Assert::same('getA', ObjectHelpers::getSuggestion(['getA'], 'gtA'));
  28. Assert::same('trim', ObjectHelpers::getSuggestion([new ReflectionFunction('trim')], 'trm'));
  29. Assert::same('trim', ObjectHelpers::getSuggestion([new ReflectionFunction('trim')], 'getTrim'));
  30. Assert::same(null, ObjectHelpers::getSuggestion(['123'], 'x'));
  31. /*
  32. length allowed ins/del replacements
  33. -------------------------------------
  34. 0 1 0
  35. 1 1 1
  36. 2 1 1
  37. 3 1 1
  38. 4 2 1
  39. 5 2 2
  40. 6 2 2
  41. 7 2 2
  42. 8 3 2
  43. */