collation_customization.phpt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --TEST--
  2. Collation customization
  3. --EXTENSIONS--
  4. intl
  5. --FILE--
  6. <?php
  7. /*
  8. * Check effects of changing misc collattion options.
  9. */
  10. function cmp_array( &$coll, $a )
  11. {
  12. $res = '';
  13. $prev = null;
  14. foreach( $a as $i )
  15. {
  16. if( is_null( $prev ) )
  17. $res .= "$i";
  18. else
  19. {
  20. $eqrc = ut_coll_compare( $coll, $prev, $i );
  21. $eq = $eqrc < 0 ? "<" : ( $eqrc > 0 ? ">" : "=" );
  22. $res .= " $eq $i";
  23. }
  24. $prev = $i;
  25. }
  26. $res .= "\n";
  27. return $res;
  28. }
  29. function check_alternate_handling( &$coll )
  30. {
  31. $res = '';
  32. ut_coll_set_strength( $coll, Collator::TERTIARY );
  33. ut_coll_set_attribute( $coll, Collator::ALTERNATE_HANDLING, Collator::NON_IGNORABLE );
  34. $res .= cmp_array( $coll, array( 'di Silva', 'Di Silva', 'diSilva', 'U.S.A.', 'USA' ) );
  35. ut_coll_set_attribute( $coll, Collator::ALTERNATE_HANDLING, Collator::SHIFTED );
  36. $res .= cmp_array( $coll, array( 'di Silva', 'diSilva', 'Di Silva', 'U.S.A.', 'USA' ) );
  37. ut_coll_set_strength( $coll, Collator::QUATERNARY );
  38. $res .= cmp_array( $coll, array( 'di Silva', 'diSilva', 'Di Silva', 'U.S.A.', 'USA' ) );
  39. $res .= "\n";
  40. return $res;
  41. }
  42. function ut_main()
  43. {
  44. $coll = ut_coll_create( 'en_US' );
  45. return
  46. check_alternate_handling( $coll );
  47. }
  48. include_once( 'ut_common.inc' );
  49. ut_run();
  50. ?>
  51. --EXPECT--
  52. di Silva < Di Silva < diSilva < U.S.A. < USA
  53. di Silva = diSilva < Di Silva < U.S.A. = USA
  54. di Silva < diSilva < Di Silva < U.S.A. < USA