1--TEST--
2normalize() NFKC_Casefold
3--SKIPIF--
4<?php if (!extension_loaded('intl')) print 'skip intl extension not loaded'; ?>
5<?php if (!defined('Normalizer::FORM_KC_CF')) print 'skip Normalizer::FORM_KC_CF constant not defined'; ?>
6--FILE--
7<?php
8
9/*
10 * Try normalization and test normalization
11 * with Procedural and Object methods.
12 */
13
14function ut_main()
15{
16    $res_str = '';
17
18    $forms = array(
19        Normalizer::FORM_KC_CF,
20    );
21
22    $forms_str = array (
23        Normalizer::FORM_KC_CF => 'UNORM_FORM_KC_CF',
24    );
25
26    /* just make sure all the form constants are defined as in the api spec */
27    if (Normalizer::FORM_C != Normalizer::NFC) {
28            $res_str .= "Invalid normalization form declarations!\n";
29    }
30
31    $char_a_diaeresis = "\xC3\xA4";	// 'LATIN SMALL LETTER A WITH DIAERESIS' (U+00E4)
32    $char_a_ring = "\xC3\xA5";		// 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5)
33    $char_o_diaeresis = "\xC3\xB6";    // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6)
34
35    $char_angstrom_sign = "\xE2\x84\xAB"; // 'ANGSTROM SIGN' (U+212B)
36    $char_A_ring = "\xC3\x85";	// 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
37
38    $char_ohm_sign = "\xE2\x84\xA6";	// 'OHM SIGN' (U+2126)
39    $char_omega = "\xCE\xA9";  // 'GREEK CAPITAL LETTER OMEGA' (U+03A9)
40
41    $char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)
42
43    $char_fi_ligature = "\xEF\xAC\x81";  // 'LATIN SMALL LIGATURE FI' (U+FB01)
44
45    $char_long_s_dot = "\xE1\xBA\x9B";	// 'LATIN SMALL LETTER LONG S WITH DOT ABOVE' (U+1E9B)
46
47    $strs = array(
48        'ABC',
49        'abc',
50        $char_a_diaeresis . '||' . $char_a_ring . '||' . $char_o_diaeresis,
51        $char_angstrom_sign . '||' . $char_A_ring . '||' . 'A' . $char_combining_ring_above,
52        $char_ohm_sign . '||' . $char_omega,
53        $char_fi_ligature,
54        $char_long_s_dot,
55    );
56
57    foreach( $forms as $form )
58    {
59        foreach( $strs as $str )
60        {
61            $str_norm = ut_norm_normalize( $str, $form );
62            $error_code = intl_get_error_code();
63            $error_message = intl_get_error_message();
64
65            $str_hex = urlencode($str);
66            $str_norm_hex = urlencode($str_norm);
67            $res_str .= "'$str_hex' normalized to form '{$forms_str[$form]}' is '$str_norm_hex'"
68                     .	"\terror info: '$error_message' ($error_code)\n"
69                     .	"";
70
71            $is_norm = ut_norm_is_normalized( $str, $form );
72            $error_code = intl_get_error_code();
73            $error_message = intl_get_error_message();
74
75            $res_str .= "		is in form '{$forms_str[$form]}'? = " . ($is_norm ? "yes" : "no")
76                     .	"\terror info: '$error_message' ($error_code)\n"
77                     .	"";
78        }
79    }
80
81    return $res_str;
82}
83
84include_once( 'ut_common.inc' );
85ut_run();
86
87?>
88--EXPECT--
89'ABC' normalized to form 'UNORM_FORM_KC_CF' is 'abc'	error info: 'U_ZERO_ERROR' (0)
90		is in form 'UNORM_FORM_KC_CF'? = no	error info: 'U_ZERO_ERROR' (0)
91'abc' normalized to form 'UNORM_FORM_KC_CF' is 'abc'	error info: 'U_ZERO_ERROR' (0)
92		is in form 'UNORM_FORM_KC_CF'? = yes	error info: 'U_ZERO_ERROR' (0)
93'%C3%A4%7C%7C%C3%A5%7C%7C%C3%B6' normalized to form 'UNORM_FORM_KC_CF' is '%C3%A4%7C%7C%C3%A5%7C%7C%C3%B6'	error info: 'U_ZERO_ERROR' (0)
94		is in form 'UNORM_FORM_KC_CF'? = yes	error info: 'U_ZERO_ERROR' (0)
95'%E2%84%AB%7C%7C%C3%85%7C%7CA%CC%8A' normalized to form 'UNORM_FORM_KC_CF' is '%C3%A5%7C%7C%C3%A5%7C%7C%C3%A5'	error info: 'U_ZERO_ERROR' (0)
96		is in form 'UNORM_FORM_KC_CF'? = no	error info: 'U_ZERO_ERROR' (0)
97'%E2%84%A6%7C%7C%CE%A9' normalized to form 'UNORM_FORM_KC_CF' is '%CF%89%7C%7C%CF%89'	error info: 'U_ZERO_ERROR' (0)
98		is in form 'UNORM_FORM_KC_CF'? = no	error info: 'U_ZERO_ERROR' (0)
99'%EF%AC%81' normalized to form 'UNORM_FORM_KC_CF' is 'fi'	error info: 'U_ZERO_ERROR' (0)
100		is in form 'UNORM_FORM_KC_CF'? = no	error info: 'U_ZERO_ERROR' (0)
101'%E1%BA%9B' normalized to form 'UNORM_FORM_KC_CF' is '%E1%B9%A1'	error info: 'U_ZERO_ERROR' (0)
102		is in form 'UNORM_FORM_KC_CF'? = no	error info: 'U_ZERO_ERROR' (0)
103