Annotation of embedaddon/php/ext/sybase_ct/tests/bug29064.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: Sybase-CT bug #29064 (Exact numeric/decimal/money datatypes lose precision)
                      3: --SKIPIF--
                      4: <?php require('skipif.inc'); ?>
                      5: --FILE--
                      6: <?php
                      7: /* This file is part of PHP test framework for ext/sybase_ct
                      8:  *
1.1.1.2 ! misho       9:  * $Id$
1.1       misho      10:  */
                     11: 
                     12:   require('test.inc');
                     13: 
                     14:   $db= sybase_connect_ex();
                     15:   
                     16:   // Create a temporary table and fill it with test values
                     17:   var_dump(sybase_query('
                     18:     create table #test (
                     19:       test_decimal      decimal(38, 6)  null,
                     20:       test_numeric      numeric(38, 12) null,
                     21:       test_money        money           null,
                     22:       test_bigint       decimal(38, 0)  null,
                     23:       test_int          int             null,
                     24:       test_smallmoney   smallmoney      null,
                     25:       test_smallint     smallint        null,
                     26:       test_tinyint      tinyint         null,
                     27:       test_real         float           null,
                     28:       test_double       float           null
                     29:     )
                     30:   ', $db));
                     31:   var_dump(sybase_query('
                     32:     insert into #test (
                     33:       test_decimal, 
                     34:       test_numeric, 
                     35:       test_money, 
                     36:       test_bigint, 
                     37:       test_int,
                     38:       test_smallmoney, 
                     39:       test_smallint, 
                     40:       test_tinyint, 
                     41:       test_real, 
                     42:       test_double
                     43:     ) values (
                     44:       12345678901234567890123456789012.123456,
                     45:       12345678901234567890123456.123456789012,
                     46:       123456789012345.1234,
                     47:       12345678901234567890123456789012345678,
                     48:       1234567890,
                     49:       123456.1234,
                     50:       12345,
                     51:       123,
                     52:       123456789.12345679,
                     53:       123456789.12345679
                     54:     )
                     55:   ', $db));
                     56:   var_dump(sybase_query('
                     57:     insert into #test (
                     58:       test_decimal, 
                     59:       test_numeric, 
                     60:       test_money, 
                     61:       test_bigint, 
                     62:       test_int,
                     63:       test_smallmoney, 
                     64:       test_smallint, 
                     65:       test_tinyint, 
                     66:       test_real, 
                     67:       test_double
                     68:     ) values (
                     69:       -12345678901234567890123456789012.123456,
                     70:       -12345678901234567890123456.123456789012,
                     71:       -123456789012345.1234,
                     72:       -12345678901234567890123456789012345678,
                     73:       -1234567890,
                     74:       -123456.1234,
                     75:       -12345,
                     76:       255,
                     77:       -123456789.12345679,
                     78:       -123456789.12345679
                     79:     )
                     80:   ', $db));
                     81: 
                     82:   // Select the data  
                     83:   var_dump(sybase_select_ex($db, 'select * from #test'));
                     84:   
                     85:   // Clean up and close connection
                     86:   var_dump(sybase_query('drop table #test', $db));
                     87:   sybase_close($db);
                     88: ?>
                     89: --EXPECTF--
                     90: bool(true)
                     91: bool(true)
                     92: bool(true)
                     93: >>> Query: select * from #test
                     94: <<< Return: resource
                     95: array(2) {
                     96:   [0]=>
                     97:   array(10) {
                     98:     ["test_decimal"]=>
                     99:     string(39) "12345678901234567890123456789012.123456"
                    100:     ["test_numeric"]=>
                    101:     string(39) "12345678901234567890123456.123456789012"
                    102:     ["test_money"]=>
                    103:     string(18) "123456789012345.12"
                    104:     ["test_bigint"]=>
                    105:     string(38) "12345678901234567890123456789012345678"
                    106:     ["test_int"]=>
                    107:     int(1234567890)
                    108:     ["test_smallmoney"]=>
                    109:     float(123456.12)
                    110:     ["test_smallint"]=>
                    111:     int(12345)
                    112:     ["test_tinyint"]=>
                    113:     int(123)
                    114:     ["test_real"]=>
                    115:     string(18) "123456789.12345679"
                    116:     ["test_double"]=>
                    117:     string(18) "123456789.12345679"
                    118:   }
                    119:   [1]=>
                    120:   array(10) {
                    121:     ["test_decimal"]=>
                    122:     string(40) "-12345678901234567890123456789012.123456"
                    123:     ["test_numeric"]=>
                    124:     string(40) "-12345678901234567890123456.123456789012"
                    125:     ["test_money"]=>
                    126:     string(19) "-123456789012345.12"
                    127:     ["test_bigint"]=>
                    128:     string(39) "-12345678901234567890123456789012345678"
                    129:     ["test_int"]=>
                    130:     int(-1234567890)
                    131:     ["test_smallmoney"]=>
                    132:     float(-123456.12)
                    133:     ["test_smallint"]=>
                    134:     int(-12345)
                    135:     ["test_tinyint"]=>
                    136:     int(255)
                    137:     ["test_real"]=>
                    138:     string(19) "-123456789.12345679"
                    139:     ["test_double"]=>
                    140:     string(19) "-123456789.12345679"
                    141:   }
                    142: }
                    143: bool(true)

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