Annotation of embedaddon/php/ext/intl/tests/formatter_get_set_attribute.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: numfmt_get/set_attribute()
                      3: --SKIPIF--
                      4: <?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
                      5: --FILE--
                      6: <?php
                      7: 
                      8: /*
                      9:  * Get/set various number formatting attributes.
                     10:  */
                     11: 
                     12: 
                     13: function ut_main()
                     14: {
                     15:     // attr_name => array( attr, value )
                     16:     $attributes = array(
                     17:         'PARSE_INT_ONLY' => array( NumberFormatter::PARSE_INT_ONLY, 1, 12345.123456 ),
                     18:         'GROUPING_USED' => array( NumberFormatter::GROUPING_USED, 0, 12345.123456 ),
                     19:         'DECIMAL_ALWAYS_SHOWN' => array( NumberFormatter::DECIMAL_ALWAYS_SHOWN, 1, 12345 ),
                     20:         'MAX_INTEGER_DIGITS' => array( NumberFormatter::MAX_INTEGER_DIGITS, 2, 12345.123456 ),
                     21:         'MIN_INTEGER_DIGITS' => array( NumberFormatter::MIN_INTEGER_DIGITS, 20, 12345.123456 ),
                     22:         'INTEGER_DIGITS' => array( NumberFormatter::INTEGER_DIGITS, 7, 12345.123456 ),
                     23:         'MAX_FRACTION_DIGITS' => array( NumberFormatter::MAX_FRACTION_DIGITS, 2, 12345.123456 ),
                     24:         'MIN_FRACTION_DIGITS' => array( NumberFormatter::MIN_FRACTION_DIGITS, 20, 12345.123456 ),
                     25:         'FRACTION_DIGITS' => array( NumberFormatter::FRACTION_DIGITS, 5, 12345.123456 ),
                     26:         'MULTIPLIER' => array( NumberFormatter::MULTIPLIER, 2, 12345.123456 ),
                     27:         'GROUPING_SIZE' => array( NumberFormatter::GROUPING_SIZE, 2, 12345.123456 ),
                     28:         'ROUNDING_MODE' => array( NumberFormatter::ROUNDING_MODE, 1, 12345.123456 ),
                     29:         'ROUNDING_INCREMENT' => array( NumberFormatter::ROUNDING_INCREMENT, (float)2, 12345.123456 ),
                     30:         'FORMAT_WIDTH' => array( NumberFormatter::FORMAT_WIDTH, 27, 12345.123456 ),
                     31:         'PADDING_POSITION' => array( NumberFormatter::PADDING_POSITION, 21, 12345.123456 ),
                     32:         'SECONDARY_GROUPING_SIZE' => array( NumberFormatter::SECONDARY_GROUPING_SIZE, 2, 12345.123456 ),
                     33:         'SIGNIFICANT_DIGITS_USED' => array( NumberFormatter::SIGNIFICANT_DIGITS_USED, 1, 12345.123456 ),
                     34:         'MIN_SIGNIFICANT_DIGITS' => array( NumberFormatter::MIN_SIGNIFICANT_DIGITS, 3, 1 ),
                     35:         'MAX_SIGNIFICANT_DIGITS' => array( NumberFormatter::MAX_SIGNIFICANT_DIGITS, 4, 12345.123456 ),
                     36:         // 'LENIENT_PARSE' => array( NumberFormatter::LENIENT_PARSE, 2, 12345.123456 )
                     37:     );
                     38: 
                     39:     $res_str = '';
                     40: 
                     41:     $fmt = ut_nfmt_create( "en_US", NumberFormatter::DECIMAL );
                     42: 
                     43:     foreach( $attributes as $attr_name => $args )
                     44:     {
                     45:         list( $attr, $new_val, $number ) = $args;
                     46:         $res_str .= "\nAttribute $attr_name\n";
                     47: 
                     48:         // Get original value of the attribute.
                     49:         $orig_val = ut_nfmt_get_attribute( $fmt, $attr );
                     50: 
                     51:         // Format the number using the original attribute value.
                     52:         $rc = ut_nfmt_format( $fmt, $number );
                     53: 
                     54:         $ps = ut_nfmt_parse( $fmt, $rc );
                     55: 
                     56:         $res_str .= sprintf( "Old attribute value: %s ;  Format result: %s ; Parse result: %s\n",
                     57:                              dump( $orig_val ),
                     58:                              dump( $rc ),
                     59:                              dump( $ps ) );
                     60: 
                     61:         // Set new attribute value.
                     62:         $rc = ut_nfmt_set_attribute( $fmt, $attr, $new_val );
                     63:         if( $rc )
                     64:             $res_str .= "Setting attribute: ok\n";
                     65:         else
                     66:             $res_str .= sprintf( "Setting attribute failed: %s\n", ut_nfmt_get_error_message( $fmt ) );
                     67: 
                     68:         // Format the number using the new value.
                     69:         $rc = ut_nfmt_format( $fmt, $number );
                     70: 
                     71:         // Get current value of the attribute and check if it equals $new_val.
                     72:         $attr_val_check = ut_nfmt_get_attribute( $fmt, $attr );
                     73:         if( $attr_val_check !== $new_val )
                     74:             $res_str .= "ERROR: New $attr_name attribute value has not been set correctly.\n";
                     75: 
                     76:         $ps = ut_nfmt_parse( $fmt, $rc );
                     77: 
                     78:         $res_str .= sprintf( "New attribute value: %s ;  Format result: %s ; Parse result: %s\n",
                     79:                              dump( $new_val ),
                     80:                              dump( $rc ),
                     81:                              dump( $ps ) );
                     82: 
                     83: 
                     84:         // Restore original attribute of the  value
                     85:         if( $attr != NumberFormatter::INTEGER_DIGITS && $attr != NumberFormatter::FRACTION_DIGITS
                     86:              && $attr != NumberFormatter::FORMAT_WIDTH && $attr != NumberFormatter::SIGNIFICANT_DIGITS_USED )
                     87:             ut_nfmt_set_attribute( $fmt, $attr, $orig_val );
                     88:     }
                     89: 
                     90:     return $res_str;
                     91: }
                     92: 
                     93: include_once( 'ut_common.inc' );
                     94: 
                     95: // Run the test
                     96: ut_run();
                     97: 
                     98: ?>
                     99: --EXPECT--
                    100: Attribute PARSE_INT_ONLY
                    101: Old attribute value: 0 ;  Format result: '12,345.123' ; Parse result: 12345.123
                    102: Setting attribute: ok
                    103: New attribute value: 1 ;  Format result: '12,345.123' ; Parse result: 12345
                    104: 
                    105: Attribute GROUPING_USED
                    106: Old attribute value: 1 ;  Format result: '12,345.123' ; Parse result: 12345.123
                    107: Setting attribute: ok
                    108: New attribute value: 0 ;  Format result: '12345.123' ; Parse result: 12345.123
                    109: 
                    110: Attribute DECIMAL_ALWAYS_SHOWN
                    111: Old attribute value: 0 ;  Format result: '12,345' ; Parse result: 12345
                    112: Setting attribute: ok
                    113: New attribute value: 1 ;  Format result: '12,345.' ; Parse result: 12345
                    114: 
                    115: Attribute MAX_INTEGER_DIGITS
                    116: Old attribute value: 309 ;  Format result: '12,345.123' ; Parse result: 12345.123
                    117: Setting attribute: ok
                    118: New attribute value: 2 ;  Format result: '45.123' ; Parse result: 45.123
                    119: 
                    120: Attribute MIN_INTEGER_DIGITS
                    121: Old attribute value: 1 ;  Format result: '12,345.123' ; Parse result: 12345.123
                    122: Setting attribute: ok
                    123: New attribute value: 20 ;  Format result: '00,000,000,000,000,012,345.123' ; Parse result: 12345.123
                    124: 
                    125: Attribute INTEGER_DIGITS
                    126: Old attribute value: 1 ;  Format result: '12,345.123' ; Parse result: 12345.123
                    127: Setting attribute: ok
                    128: New attribute value: 7 ;  Format result: '0,012,345.123' ; Parse result: 12345.123
                    129: 
                    130: Attribute MAX_FRACTION_DIGITS
                    131: Old attribute value: 3 ;  Format result: '0,012,345.123' ; Parse result: 12345.123
                    132: Setting attribute: ok
                    133: New attribute value: 2 ;  Format result: '0,012,345.12' ; Parse result: 12345.12
                    134: 
                    135: Attribute MIN_FRACTION_DIGITS
                    136: Old attribute value: 0 ;  Format result: '0,012,345.123' ; Parse result: 12345.123
                    137: Setting attribute: ok
                    138: New attribute value: 20 ;  Format result: '0,012,345.12345600000000000000' ; Parse result: 12345.123456
                    139: 
                    140: Attribute FRACTION_DIGITS
                    141: Old attribute value: 0 ;  Format result: '0,012,345.123456' ; Parse result: 12345.123456
                    142: Setting attribute: ok
                    143: New attribute value: 5 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    144: 
                    145: Attribute MULTIPLIER
                    146: Old attribute value: 1 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    147: Setting attribute: ok
                    148: New attribute value: 2 ;  Format result: '0,024,690.24691' ; Parse result: 12345.123455
                    149: 
                    150: Attribute GROUPING_SIZE
                    151: Old attribute value: 3 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    152: Setting attribute: ok
                    153: New attribute value: 2 ;  Format result: '0,01,23,45.12346' ; Parse result: 12345.12346
                    154: 
                    155: Attribute ROUNDING_MODE
                    156: Old attribute value: 4 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    157: Setting attribute: ok
                    158: New attribute value: 1 ;  Format result: '0,012,345.12345' ; Parse result: 12345.12345
                    159: 
                    160: Attribute ROUNDING_INCREMENT
                    161: Old attribute value: 1.0E-5 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    162: Setting attribute: ok
                    163: New attribute value: 2 ;  Format result: '0,012,346.00000' ; Parse result: 12346
                    164: 
                    165: Attribute FORMAT_WIDTH
                    166: Old attribute value: 0 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    167: Setting attribute: ok
                    168: New attribute value: 27 ;  Format result: '************0,012,345.12346' ; Parse result: 12345.12346
                    169: 
                    170: Attribute PADDING_POSITION
                    171: Old attribute value: 0 ;  Format result: '************0,012,345.12346' ; Parse result: 12345.12346
                    172: Setting attribute: ok
                    173: New attribute value: 21 ;  Format result: '0,012,345.12346' ; Parse result: 12345.12346
                    174: 
                    175: Attribute SECONDARY_GROUPING_SIZE
                    176: Old attribute value: 0 ;  Format result: '************0,012,345.12346' ; Parse result: 12345.12346
                    177: Setting attribute: ok
                    178: New attribute value: 2 ;  Format result: '************00,12,345.12346' ; Parse result: 12345.12346
                    179: 
                    180: Attribute SIGNIFICANT_DIGITS_USED
                    181: Old attribute value: 0 ;  Format result: '************0,012,345.12346' ; Parse result: 12345.12346
                    182: Setting attribute: ok
                    183: New attribute value: 1 ;  Format result: '*******************12,345.1' ; Parse result: 12345.1
                    184: 
                    185: Attribute MIN_SIGNIFICANT_DIGITS
                    186: Old attribute value: 1 ;  Format result: '**************************1' ; Parse result: 1
                    187: Setting attribute: ok
                    188: New attribute value: 3 ;  Format result: '***********************1.00' ; Parse result: 1
                    189: 
                    190: Attribute MAX_SIGNIFICANT_DIGITS
                    191: Old attribute value: 6 ;  Format result: '*******************12,345.1' ; Parse result: 12345.1
                    192: Setting attribute: ok
                    193: New attribute value: 4 ;  Format result: '*********************12,350' ; Parse result: 12350

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>