uconverter_oop_callback.phpt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --TEST--
  2. UConverter::convert() w/ Callback Reasons
  3. --EXTENSIONS--
  4. intl
  5. --SKIPIF--
  6. <?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
  7. --FILE--
  8. <?php
  9. class MyConverter extends UConverter {
  10. /**
  11. * Called during conversion from source encoding to internal UChar representation
  12. */
  13. public function toUCallback($reason, $source, $codeUnits, &$error): string|int|array|null {
  14. echo "toUCallback(", UConverter::reasonText($reason), ", ...)\n";
  15. return parent::toUCallback($reason, $source, $codeUnits, $error);
  16. }
  17. /**
  18. * Called during conversion from internal UChar to destination encoding
  19. */
  20. public function fromUCallback($reason, $source, $codePoint, &$error): string|int|array|null {
  21. echo "fromUCallback(", UConverter::reasonText($reason), ", ...)\n";
  22. return parent::fromUCallback($reason, $source, $codePoint, $error);
  23. }
  24. }
  25. $c = new MyConverter('ascii', 'utf-8');
  26. foreach(array("regular", "irregul\xC1\xA1r", "\xC2\xA1unsupported!") as $word) {
  27. $c->convert($word);
  28. }
  29. ?>
  30. --EXPECT--
  31. toUCallback(REASON_RESET, ...)
  32. toUCallback(REASON_RESET, ...)
  33. fromUCallback(REASON_RESET, ...)
  34. fromUCallback(REASON_RESET, ...)
  35. toUCallback(REASON_RESET, ...)
  36. toUCallback(REASON_ILLEGAL, ...)
  37. toUCallback(REASON_RESET, ...)
  38. toUCallback(REASON_ILLEGAL, ...)
  39. fromUCallback(REASON_RESET, ...)
  40. fromUCallback(REASON_UNASSIGNED, ...)
  41. fromUCallback(REASON_RESET, ...)
  42. fromUCallback(REASON_UNASSIGNED, ...)
  43. toUCallback(REASON_RESET, ...)
  44. toUCallback(REASON_RESET, ...)
  45. fromUCallback(REASON_RESET, ...)
  46. fromUCallback(REASON_UNASSIGNED, ...)
  47. fromUCallback(REASON_RESET, ...)
  48. fromUCallback(REASON_UNASSIGNED, ...)
  49. toUCallback(REASON_CLOSE, ...)
  50. fromUCallback(REASON_CLOSE, ...)
  51. toUCallback(REASON_CLOSE, ...)
  52. fromUCallback(REASON_CLOSE, ...)