Changeset 391

Show
Ignore:
Timestamp:
03/09/10 17:09:53 (5 months ago)
Author:
solar
Message:

Numerical tests (hopefully) finished.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • helpers/stdio/test.c

    r390 r391  
    11#include <stdio.h> 
    22#include <string.h> 
     3#include <limits.h> 
    34 
    45#define symbol2value( x ) #x 
     
    2526    suite_three(); 
    2627    suite_four(); 
     28    suite_five(); 
    2729} 
    2830 
     
    880882    int n; 
    881883    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    882     CHECK_EQUAL( i, 0 ); 
     884    CHECK_EQUAL( i, 0l ); 
    883885    CHECK_EQUAL( n, 1 ); 
    884886    CHECK_EQUAL( ftell( file ), 2 ); 
     
    890892    int n; 
    891893    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    892     CHECK_EQUAL( i, 0 ); 
     894    CHECK_EQUAL( i, 0l ); 
    893895    CHECK_EQUAL( n, 2 ); 
    894896    CHECK_EQUAL( ftell( file ), 2 ); 
     
    900902    int n; 
    901903    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    902     CHECK_EQUAL( i, 0 ); 
     904    CHECK_EQUAL( i, 0l ); 
    903905    CHECK_EQUAL( n, 2 ); 
    904906    CHECK_EQUAL( ftell( file ), 5 ); 
     
    910912    int n; 
    911913    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    912     CHECK_EQUAL( i, -2147483648 ); 
     914    CHECK_EQUAL( i, -2147483648l ); 
    913915    CHECK_EQUAL( n, 11 ); 
    914916    CHECK_EQUAL( ftell( file ), 53 ); 
     
    920922    int n; 
    921923    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    922     CHECK_EQUAL( i, 2147483647 ); 
     924    CHECK_EQUAL( i, 2147483647l ); 
    923925    CHECK_EQUAL( n, 10 ); 
    924926    CHECK_EQUAL( ftell( file ), 65 ); 
     
    930932    int n; 
    931933    CHECK_EQUAL( fscanf( file, "%ld%n", &i, &n ), 1 ); 
    932     CHECK_EQUAL( i, 2147483647 ); 
     934    CHECK_EQUAL( i, 2147483647l ); 
    933935    CHECK_EQUAL( n, 11 ); 
    934936    CHECK_EQUAL( ftell( file ), 65 ); 
     
    940942    int n; 
    941943    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    942     CHECK_EQUAL( i, 0 ); 
     944    CHECK_EQUAL( i, 0ul ); 
    943945    CHECK_EQUAL( n, 1 ); 
    944946    CHECK_EQUAL( ftell( file ), 2 ); 
     
    950952    int n; 
    951953    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    952     CHECK_EQUAL( i, 0 ); 
     954    CHECK_EQUAL( i, 0ul ); 
    953955    CHECK_EQUAL( n, 2 ); 
    954956    CHECK_EQUAL( ftell( file ), 2 ); 
     
    960962    int n; 
    961963    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    962     CHECK_EQUAL( i, 0 ); 
     964    CHECK_EQUAL( i, 0ul ); 
    963965    CHECK_EQUAL( n, 2 ); 
    964966    CHECK_EQUAL( ftell( file ), 5 ); 
     
    970972    int n; 
    971973    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    972     CHECK_EQUAL( i, 2147483647 ); 
     974    CHECK_EQUAL( i, 2147483647ul ); 
    973975    CHECK_EQUAL( n, 10 ); 
    974976    CHECK_EQUAL( ftell( file ), 65 ); 
     
    980982    int n; 
    981983    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    982     CHECK_EQUAL( i, 2147483647 ); 
     984    CHECK_EQUAL( i, 2147483647ul ); 
    983985    CHECK_EQUAL( n, 11 ); 
    984986    CHECK_EQUAL( ftell( file ), 65 ); 
     
    990992    int n; 
    991993    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    992     CHECK_FEQUAL( i, 4294967295, unsigned long, "%lu" ); 
     994    CHECK_FEQUAL( i, 4294967295ul, unsigned long, "%lu" ); 
    993995    CHECK_EQUAL( n, 10 ); 
    994996    CHECK_EQUAL( ftell( file ), 77 ); 
     
    10001002    int n; 
    10011003    CHECK_EQUAL( fscanf( file, "%lu%n", &i, &n ), 1 ); 
    1002     CHECK_FEQUAL( i, 4294967295, unsigned long, "%lu" ); 
     1004    CHECK_FEQUAL( i, 4294967295ul, unsigned long, "%lu" ); 
    10031005    CHECK_EQUAL( n, 11 ); 
    10041006    CHECK_EQUAL( ftell( file ), 77 ); 
     
    10101012    int n; 
    10111013    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1012     CHECK_EQUAL( i, 0 ); 
     1014    CHECK_EQUAL( i, 0l ); 
    10131015    CHECK_EQUAL( n, 1 ); 
    10141016    CHECK_EQUAL( ftell( file ), 2 ); 
     
    10201022    int n; 
    10211023    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1022     CHECK_EQUAL( i, 0 ); 
     1024    CHECK_EQUAL( i, 0l ); 
    10231025    CHECK_EQUAL( n, 2 ); 
    10241026    CHECK_EQUAL( ftell( file ), 2 ); 
     
    10301032    int n; 
    10311033    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1032     CHECK_EQUAL( i, 0 ); 
     1034    CHECK_EQUAL( i, 0l ); 
    10331035    CHECK_EQUAL( n, 2 ); 
    10341036    CHECK_EQUAL( ftell( file ), 5 ); 
     
    10401042    int n; 
    10411043    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1042     CHECK_EQUAL( i, -2147483648 ); 
     1044    CHECK_EQUAL( i, -2147483648l ); 
    10431045    CHECK_EQUAL( n, 11 ); 
    10441046    CHECK_EQUAL( ftell( file ), 53 ); 
     
    10501052    int n; 
    10511053    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1052     CHECK_EQUAL( i, 2147483647 ); 
     1054    CHECK_EQUAL( i, 2147483647l ); 
    10531055    CHECK_EQUAL( n, 10 ); 
    10541056    CHECK_EQUAL( ftell( file ), 65 ); 
     
    10601062    int n; 
    10611063    CHECK_EQUAL( fscanf( file, "%li%n", &i, &n ), 1 ); 
    1062     CHECK_EQUAL( i, 2147483647 ); 
     1064    CHECK_EQUAL( i, 2147483647l ); 
    10631065    CHECK_EQUAL( n, 11 ); 
    10641066    CHECK_EQUAL( ftell( file ), 65 ); 
     
    10701072    int n; 
    10711073    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1072     CHECK_EQUAL( i, 0 ); 
     1074    CHECK_EQUAL( i, 0ll ); 
    10731075    CHECK_EQUAL( n, 1 ); 
    10741076    CHECK_EQUAL( ftell( file ), 2 ); 
     
    10801082    int n; 
    10811083    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1082     CHECK_EQUAL( i, 0 ); 
     1084    CHECK_EQUAL( i, 0ll ); 
    10831085    CHECK_EQUAL( n, 2 ); 
    10841086    CHECK_EQUAL( ftell( file ), 2 ); 
     
    10901092    int n; 
    10911093    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1092     CHECK_EQUAL( i, 0 ); 
     1094    CHECK_EQUAL( i, 0ll ); 
    10931095    CHECK_EQUAL( n, 2 ); 
    10941096    CHECK_EQUAL( ftell( file ), 5 ); 
     
    11001102    int n; 
    11011103    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1102     CHECK_FEQUAL( i, -9223372036854775808, signed long long, "%lld" ); 
    1103     CHECK_EQUAL( i < 0, 1 ); 
     1104    CHECK_FEQUAL( i, LLONG_MIN, signed long long, "%lld" ); // should be literal -9223372036854775808ll but GCC balks. 
     1105    CHECK_EQUAL( i < 0ll, 1 ); 
    11041106    CHECK_EQUAL( n, 20 ); 
    11051107    CHECK_EQUAL( ftell( file ), 98 ); 
     
    11111113    int n; 
    11121114    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1113     CHECK_FEQUAL( i, 9223372036854775807, signed long long, "%lld" ); 
     1115    CHECK_FEQUAL( i, 9223372036854775807ll, signed long long, "%lld" ); 
    11141116    CHECK_EQUAL( n, 19 ); 
    11151117    CHECK_EQUAL( ftell( file ), 119 ); 
     
    11211123    int n; 
    11221124    CHECK_EQUAL( fscanf( file, "%lld%n", &i, &n ), 1 ); 
    1123     CHECK_FEQUAL( i, 9223372036854775807, signed long long, "%lld" ); 
     1125    CHECK_FEQUAL( i, 9223372036854775807ll, signed long long, "%lld" ); 
    11241126    CHECK_EQUAL( n, 20 ); 
    11251127    CHECK_EQUAL( ftell( file ), 119 ); 
     
    11311133    int n; 
    11321134    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1133     CHECK_EQUAL( i, 0 ); 
     1135    CHECK_EQUAL( i, 0ull ); 
    11341136    CHECK_EQUAL( n, 1 ); 
    11351137    CHECK_EQUAL( ftell( file ), 2 ); 
     
    11411143    int n; 
    11421144    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1143     CHECK_EQUAL( i, 0 ); 
     1145    CHECK_EQUAL( i, 0ull ); 
    11441146    CHECK_EQUAL( n, 2 ); 
    11451147    CHECK_EQUAL( ftell( file ), 2 ); 
     
    11511153    int n; 
    11521154    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1153     CHECK_EQUAL( i, 0 ); 
     1155    CHECK_EQUAL( i, 0ull ); 
    11541156    CHECK_EQUAL( n, 2 ); 
    11551157    CHECK_EQUAL( ftell( file ), 5 ); 
     
    11611163    int n; 
    11621164    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1163     CHECK_FEQUAL( i, 9223372036854775807, unsigned long long, "%llu" ); 
     1165    CHECK_FEQUAL( i, 9223372036854775807ull, unsigned long long, "%llu" ); 
    11641166    CHECK_EQUAL( n, 19 ); 
    11651167    CHECK_EQUAL( ftell( file ), 119 ); 
     
    11711173    int n; 
    11721174    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1173     CHECK_FEQUAL( i, 9223372036854775807, unsigned long long, "%llu" ); 
     1175    CHECK_FEQUAL( i, 9223372036854775807ull, unsigned long long, "%llu" ); 
    11741176    CHECK_EQUAL( n, 20 ); 
    11751177    CHECK_EQUAL( ftell( file ), 119 ); 
     
    11811183    int n; 
    11821184    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1183     CHECK_FEQUAL( i, 18446744073709551615, unsigned long long, "%llu" ); 
     1185    CHECK_FEQUAL( i, 18446744073709551615ull, unsigned long long, "%llu" ); 
    11841186    CHECK_EQUAL( n, 20 ); 
    11851187    CHECK_EQUAL( ftell( file ), 141 ); 
     
    11911193    int n; 
    11921194    CHECK_EQUAL( fscanf( file, "%llu%n", &i, &n ), 1 ); 
    1193     CHECK_FEQUAL( i, 18446744073709551615, unsigned long long, "%llu" ); 
     1195    CHECK_FEQUAL( i, 18446744073709551615ull, unsigned long long, "%llu" ); 
    11941196    CHECK_EQUAL( n, 21 ); 
    11951197    CHECK_EQUAL( ftell( file ), 141 ); 
     
    12011203    int n; 
    12021204    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1203     CHECK_EQUAL( i, 0 ); 
     1205    CHECK_EQUAL( i, 0ll ); 
    12041206    CHECK_EQUAL( n, 1 ); 
    12051207    CHECK_EQUAL( ftell( file ), 2 ); 
     
    12111213    int n; 
    12121214    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1213     CHECK_EQUAL( i, 0 ); 
     1215    CHECK_EQUAL( i, 0ll ); 
    12141216    CHECK_EQUAL( n, 2 ); 
    12151217    CHECK_EQUAL( ftell( file ), 2 ); 
     
    12211223    int n; 
    12221224    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1223     CHECK_EQUAL( i, 0 ); 
     1225    CHECK_EQUAL( i, 0ll ); 
    12241226    CHECK_EQUAL( n, 2 ); 
    12251227    CHECK_EQUAL( ftell( file ), 5 ); 
     
    12311233    int n; 
    12321234    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1233     CHECK_FEQUAL( i, -9223372036854775808, signed long long, "%lli" ); 
    1234     CHECK_EQUAL( i < 0, 1 ); 
     1235    CHECK_FEQUAL( i, LLONG_MIN, signed long long, "%lli" ); // should be literal -9223372036854775808ll but GCC balks. 
     1236    CHECK_EQUAL( i < 0ll, 1 ); 
    12351237    CHECK_EQUAL( n, 20 ); 
    12361238    CHECK_EQUAL( ftell( file ), 98 ); 
     
    12421244    int n; 
    12431245    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1244     CHECK_FEQUAL( i, 9223372036854775807, signed long long, "%lli" ); 
     1246    CHECK_FEQUAL( i, 9223372036854775807ll, signed long long, "%lli" ); 
    12451247    CHECK_EQUAL( n, 19 ); 
    12461248    CHECK_EQUAL( ftell( file ), 119 ); 
     
    12521254    int n; 
    12531255    CHECK_EQUAL( fscanf( file, "%lli%n", &i, &n ), 1 ); 
    1254     CHECK_FEQUAL( i, 9223372036854775807, signed long long, "%lli" ); 
     1256    CHECK_FEQUAL( i, 9223372036854775807ll, signed long long, "%lli" ); 
    12551257    CHECK_EQUAL( n, 20 ); 
    12561258    CHECK_EQUAL( ftell( file ), 119 ); 
     
    14341436    } 
    14351437    { 
    1436     // TODO 
    14371438    // reading 7fff, x 
    14381439    fseek( file, 31, SEEK_SET ); 
     
    14931494    CHECK_EQUAL( n, 6 ); 
    14941495    CHECK_EQUAL( ftell( file ), 49 ); 
     1496    } 
     1497    { 
     1498    // reading 0, x 
     1499    fseek( file, 3, SEEK_SET ); 
     1500    unsigned int i = -1; 
     1501    int n; 
     1502    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1503    CHECK_EQUAL( i, 0 ); 
     1504    CHECK_EQUAL( n, 1 ); 
     1505    CHECK_EQUAL( ftell( file ), 4 ); 
     1506    } 
     1507    { 
     1508    // reading -0x0, x 
     1509    fseek( file, 0, SEEK_SET ); 
     1510    unsigned int i = -1; 
     1511    int n; 
     1512    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1513    CHECK_EQUAL( i, 0 ); 
     1514    CHECK_EQUAL( n, 4 ); 
     1515    CHECK_EQUAL( ftell( file ), 4 ); 
     1516    } 
     1517    { 
     1518    // reading -0x, x 
     1519    fseek( file, -4, SEEK_END ); 
     1520    unsigned int i = -1; 
     1521    int n; 
     1522    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1523    CHECK_EQUAL( i, 0 ); 
     1524    CHECK_EQUAL( n, 3 ); 
     1525    CHECK_EQUAL( ftell( file ), 145 ); 
     1526    } 
     1527    { 
     1528    // reading 0x000, x 
     1529    fseek( file, 5, SEEK_SET ); 
     1530    unsigned int i = -1; 
     1531    int n; 
     1532    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1533    CHECK_EQUAL( i, 0 ); 
     1534    CHECK_EQUAL( n, 6 ); 
     1535    CHECK_EQUAL( ftell( file ), 11 ); 
     1536    } 
     1537    { 
     1538    // reading 0x0, i 
     1539    fseek( file, 0, SEEK_SET ); 
     1540    signed int i = -1; 
     1541    int n; 
     1542    CHECK_EQUAL( fscanf( file, "%i%n", &i, &n ), 1 ); 
     1543    CHECK_EQUAL( i, 0 ); 
     1544    CHECK_EQUAL( n, 4 ); 
     1545    CHECK_EQUAL( ftell( file ), 4 ); 
     1546    } 
     1547    { 
     1548    // reading 7fffffff, x 
     1549    fseek( file, 53, SEEK_SET ); 
     1550    unsigned int i = -1; 
     1551    int n; 
     1552    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1553    CHECK_EQUAL( i, 2147483647 ); 
     1554    CHECK_EQUAL( n, 8 ); 
     1555    CHECK_EQUAL( ftell( file ), 61 ); 
     1556    } 
     1557    { 
     1558    // reading -0x7fffffff, x 
     1559    fseek( file, 50, SEEK_SET ); 
     1560    unsigned int i = -1; 
     1561    int n; 
     1562    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1563    CHECK_FEQUAL( i, -2147483647, unsigned int, "%u" ); 
     1564    CHECK_EQUAL( n, 11 ); 
     1565    CHECK_EQUAL( ftell( file ), 61 ); 
     1566    } 
     1567    { 
     1568    // reading 0x80000000, i 
     1569    fseek( file, 62, SEEK_SET ); 
     1570    signed int i = -1; 
     1571    int n; 
     1572    CHECK_EQUAL( fscanf( file, "%i%n", &i, &n ), 1 ); 
     1573    CHECK_FEQUAL( i, 2147483647, signed int, "%d" ); // NOT overflowing, see strtol() specs. 
     1574    CHECK_EQUAL( n, 10 ); 
     1575    CHECK_EQUAL( ftell( file ), 72 ); 
     1576    } 
     1577    { 
     1578    // reading ffffffff, x 
     1579    fseek( file, 75, SEEK_SET ); 
     1580    unsigned int i = -1; 
     1581    int n; 
     1582    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1583    CHECK_FEQUAL( i, 4294967295, unsigned int, "%d" ); 
     1584    CHECK_EQUAL( n, 8 ); 
     1585    CHECK_EQUAL( ftell( file ), 83 ); 
     1586    } 
     1587    { 
     1588    // reading 0xffffffff, x 
     1589    fseek( file, 73, SEEK_SET ); 
     1590    unsigned int i = -1; 
     1591    int n; 
     1592    CHECK_EQUAL( fscanf( file, "%x%n", &i, &n ), 1 ); 
     1593    CHECK_FEQUAL( i, 4294967295, unsigned int, "%d" ); 
     1594    CHECK_EQUAL( n, 10 ); 
     1595    CHECK_EQUAL( ftell( file ), 83 ); 
     1596    } 
     1597    { 
     1598    // reading 0xffffffff, i 
     1599    fseek( file, 73, SEEK_SET ); 
     1600    signed int i = 0; 
     1601    int n; 
     1602    CHECK_EQUAL( fscanf( file, "%i%n", &i, &n ), 1 ); 
     1603    CHECK_FEQUAL( i, 2147483647, signed int, "%d" ); // NOT overflowing; see strtol() specs. 
     1604    CHECK_EQUAL( n, 10 ); 
     1605    CHECK_EQUAL( ftell( file ), 83 ); 
    14951606    } 
    14961607    fclose( file ); 
     
    15071618        return; 
    15081619    } 
    1509     fprintf( file, "0177 -0200 0377 077777 0100000 0177777 017777777777 020000000000 037777777777\n" ); 
    1510     fprintf( file, "0777777777777777777777 01000000000000000000000 01777777777777777777777\n" ); 
    1511     CHECK_EQUAL( ftell( file ), 149 ); 
    1512  
     1620    fprintf( file, "+0000 -0000 +0177 +0377 -0377 +077777 +0177777 -0177777\n" ); 
     1621    fprintf( file, "+017777777777 +037777777777 -037777777777\n" ); 
     1622    fprintf( file, "+0777777777777777777777 +01777777777777777777777\n" ); 
     1623    fprintf( file, "-01777777777777777777777\n" ); 
     1624    CHECK_EQUAL( ftell( file ), 172 ); 
     1625    { 
     1626    // reading 0, o 
     1627    fseek( file, 4, SEEK_SET ); 
     1628    unsigned char i = -1; 
     1629    int n; 
     1630    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1631    CHECK_EQUAL( i, 0u ); 
     1632    CHECK_EQUAL( n, 1 ); 
     1633    CHECK_EQUAL( ftell( file ), 5 ); 
     1634    } 
     1635    { 
     1636    // reading +0000, o 
     1637    fseek( file, 0, SEEK_SET ); 
     1638    unsigned char i = -1; 
     1639    int n; 
     1640    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1641    CHECK_EQUAL( i, 0u ); 
     1642    CHECK_EQUAL( n, 5 ); 
     1643    CHECK_EQUAL( ftell( file ), 5 ); 
     1644    } 
     1645    { 
     1646    // reading -0000, o 
     1647    fseek( file, 6, SEEK_SET ); 
     1648    unsigned char i = -1; 
     1649    int n; 
     1650    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1651    CHECK_EQUAL( i, 0u ); 
     1652    CHECK_EQUAL( n, 5 ); 
     1653    CHECK_EQUAL( ftell( file ), 11 ); 
     1654    } 
     1655    { 
     1656    // reading 0177, o 
     1657    fseek( file, 13, SEEK_SET ); 
     1658    unsigned char i = -1; 
     1659    int n; 
     1660    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1661    CHECK_EQUAL( i, 127u ); 
     1662    CHECK_EQUAL( n, 4 ); 
     1663    CHECK_EQUAL( ftell( file ), 17 ); 
     1664    } 
     1665    { 
     1666    // reading +0177, o 
     1667    fseek( file, 12, SEEK_SET ); 
     1668    unsigned char i = -1; 
     1669    int n; 
     1670    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1671    CHECK_EQUAL( i, 127u ); 
     1672    CHECK_EQUAL( n, 5 ); 
     1673    CHECK_EQUAL( ftell( file ), 17 ); 
     1674    } 
     1675    { 
     1676    // reading 0377, o 
     1677    fseek( file, 19, SEEK_SET ); 
     1678    unsigned char i = -1; 
     1679    int n; 
     1680    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1681    CHECK_FEQUAL( i, 255u, unsigned char, "%hhu" ); 
     1682    CHECK_EQUAL( n, 4 ); 
     1683    CHECK_EQUAL( ftell( file ), 23 ); 
     1684    } 
     1685    { 
     1686    // reading +0377, o 
     1687    fseek( file, 18, SEEK_SET ); 
     1688    unsigned char i = -1; 
     1689    int n; 
     1690    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1691    CHECK_FEQUAL( i, 255u, unsigned char, "%hhu" ); 
     1692    CHECK_EQUAL( n, 5 ); 
     1693    CHECK_EQUAL( ftell( file ), 23 ); 
     1694    } 
     1695    { 
     1696    // reading -0377, o 
     1697    fseek( file, 24, SEEK_SET ); 
     1698    unsigned char i = -1; 
     1699    int n; 
     1700    CHECK_EQUAL( fscanf( file, "%hho%n", &i, &n ), 1 ); 
     1701    CHECK_FEQUAL( i, 1u, unsigned char, "%hhu" ); 
     1702    CHECK_EQUAL( n, 5 ); 
     1703    CHECK_EQUAL( ftell( file ), 29 ); 
     1704    } 
     1705    { 
     1706    // reading 077777, o 
     1707    fseek( file, 31, SEEK_SET ); 
     1708    unsigned short i = -1; 
     1709    int n; 
     1710    CHECK_EQUAL( fscanf( file, "%ho%n", &i, &n ), 1 ); 
     1711    CHECK_EQUAL( i, 32767u ); 
     1712    CHECK_EQUAL( n, 6 ); 
     1713    CHECK_EQUAL( ftell( file ), 37 ); 
     1714    } 
     1715    { 
     1716    // reading +077777, o 
     1717    fseek( file, 30, SEEK_SET ); 
     1718    unsigned short i = -1; 
     1719    int n; 
     1720    CHECK_EQUAL( fscanf( file, "%ho%n", &i, &n ), 1 ); 
     1721    CHECK_EQUAL( i, 32767u ); 
     1722    CHECK_EQUAL( n, 7 ); 
     1723    CHECK_EQUAL( ftell( file ), 37 ); 
     1724    } 
     1725    { 
     1726    // reading 0177777, o 
     1727    fseek( file, 39, SEEK_SET ); 
     1728    unsigned short i = -1; 
     1729    int n; 
     1730    CHECK_EQUAL( fscanf( file, "%ho%n", &i, &n ), 1 ); 
     1731    CHECK_FEQUAL( i, 65535u, unsigned short, "%hu" ); 
     1732    CHECK_EQUAL( n, 7 ); 
     1733    CHECK_EQUAL( ftell( file ), 46 ); 
     1734    } 
     1735    { 
     1736    // reading +0177777, o 
     1737    fseek( file, 38, SEEK_SET ); 
     1738    unsigned short i = -1; 
     1739    int n; 
     1740    CHECK_EQUAL( fscanf( file, "%ho%n", &i, &n ), 1 ); 
     1741    CHECK_FEQUAL( i, 65535u, unsigned short, "%hu" ); 
     1742    CHECK_EQUAL( n, 8 ); 
     1743    CHECK_EQUAL( ftell( file ), 46 ); 
     1744    } 
     1745    { 
     1746    // reading -0177777, o 
     1747    fseek( file, 47, SEEK_SET ); 
     1748    unsigned short i = -1; 
     1749    int n; 
     1750    CHECK_EQUAL( fscanf( file, "%ho%n", &i, &n ), 1 ); 
     1751    CHECK_FEQUAL( i, 1u, unsigned short, "%hu" ); 
     1752    CHECK_EQUAL( n, 8 ); 
     1753    CHECK_EQUAL( ftell( file ), 55 ); 
     1754    } 
     1755    { 
     1756    // reading 017777777777, o 
     1757    fseek( file, 57, SEEK_SET ); 
     1758    unsigned int i = -1; 
     1759    int n; 
     1760    CHECK_EQUAL( fscanf( file, "%o%n", &i, &n ), 1 ); 
     1761    CHECK_EQUAL( i, 2147483647u ); 
     1762    CHECK_EQUAL( n, 12 ); 
     1763    CHECK_EQUAL( ftell( file ), 69 ); 
     1764    } 
     1765    { 
     1766    // reading +017777777777, o 
     1767    fseek( file, 56, SEEK_SET ); 
     1768    unsigned int i = -1; 
     1769    int n; 
     1770    CHECK_EQUAL( fscanf( file, "%o%n", &i, &n ), 1 ); 
     1771    CHECK_EQUAL( i, 2147483647u ); 
     1772    CHECK_EQUAL( n, 13 ); 
     1773    CHECK_EQUAL( ftell( file ), 69 ); 
     1774    } 
     1775    { 
     1776    // reading 037777777777, o 
     1777    fseek( file, 71, SEEK_SET ); 
     1778    unsigned int i = -1; 
     1779    int n; 
     1780    CHECK_EQUAL( fscanf( file, "%o%n", &i, &n ), 1 ); 
     1781    CHECK_FEQUAL( i, 4294967295u, unsigned int, "%u" ); 
     1782    CHECK_EQUAL( n, 12 ); 
     1783    CHECK_EQUAL( ftell( file ), 83 ); 
     1784    } 
     1785    { 
     1786    // reading +037777777777, o 
     1787    fseek( file, 70, SEEK_SET ); 
     1788    unsigned int i = -1; 
     1789    int n; 
     1790    CHECK_EQUAL( fscanf( file, "%o%n", &i, &n ), 1 ); 
     1791    CHECK_FEQUAL( i, 4294967295u, unsigned int, "%u" ); 
     1792    CHECK_EQUAL( n, 13 ); 
     1793    CHECK_EQUAL( ftell( file ), 83 ); 
     1794    } 
     1795    { 
     1796    // reading -037777777777, o 
     1797    fseek( file, 84, SEEK_SET ); 
     1798    unsigned int i = -1; 
     1799    int n; 
     1800    CHECK_EQUAL( fscanf( file, "%o%n", &i, &n ), 1 ); 
     1801    CHECK_FEQUAL( i, 1u, unsigned int, "%u" ); 
     1802    CHECK_EQUAL( n, 13 ); 
     1803    CHECK_EQUAL( ftell( file ), 97 ); 
     1804    } 
     1805    { 
     1806    // reading 017777777777, o 
     1807    fseek( file, 57, SEEK_SET ); 
     1808    unsigned long i = -1; 
     1809    int n; 
     1810    CHECK_EQUAL( fscanf( file, "%lo%n", &i, &n ), 1 ); 
     1811    CHECK_EQUAL( i, 2147483647lu ); 
     1812    CHECK_EQUAL( n, 12 ); 
     1813    CHECK_EQUAL( ftell( file ), 69 ); 
     1814    } 
     1815    { 
     1816    // reading +017777777777, o 
     1817    fseek( file, 56, SEEK_SET ); 
     1818    unsigned long i = -1; 
     1819    int n; 
     1820    CHECK_EQUAL( fscanf( file, "%lo%n", &i, &n ), 1 ); 
     1821    CHECK_EQUAL( i, 2147483647lu ); 
     1822    CHECK_EQUAL( n, 13 ); 
     1823    CHECK_EQUAL( ftell( file ), 69 ); 
     1824    } 
     1825    { 
     1826    // reading 037777777777, o 
     1827    fseek( file, 71, SEEK_SET ); 
     1828    unsigned long i = -1; 
     1829    int n; 
     1830    CHECK_EQUAL( fscanf( file, "%lo%n", &i, &n ), 1 ); 
     1831    CHECK_FEQUAL( i, 4294967295lu, unsigned long, "%lu" ); 
     1832    CHECK_EQUAL( n, 12 ); 
     1833    CHECK_EQUAL( ftell( file ), 83 ); 
     1834    } 
     1835    { 
     1836    // reading +037777777777, o 
     1837    fseek( file, 70, SEEK_SET ); 
     1838    unsigned long i = -1; 
     1839    int n; 
     1840    CHECK_EQUAL( fscanf( file, "%lo%n", &i, &n ), 1 ); 
     1841    CHECK_FEQUAL( i, 4294967295lu, unsigned long, "%lu" ); 
     1842    CHECK_EQUAL( n, 13 ); 
     1843    CHECK_EQUAL( ftell( file ), 83 ); 
     1844    } 
     1845    { 
     1846    // reading -037777777777, o 
     1847    fseek( file, 84, SEEK_SET ); 
     1848    unsigned long i = -1; 
     1849    int n; 
     1850    CHECK_EQUAL( fscanf( file, "%lo%n", &i, &n ), 1 ); 
     1851    CHECK_FEQUAL( i, 1lu, unsigned long, "%lu" ); 
     1852    CHECK_EQUAL( n, 13 ); 
     1853    CHECK_EQUAL( ftell( file ), 97 ); 
     1854    } 
     1855    { 
     1856    // reading 0777777777777777777777, o 
     1857    fseek( file, 99, SEEK_SET ); 
     1858    unsigned long long i = -1; 
     1859    int n; 
     1860    CHECK_EQUAL( fscanf( file, "%llo%n", &i, &n ), 1 ); 
     1861    CHECK_FEQUAL( i, 9223372036854775807llu, unsigned long long, "%llu" ); 
     1862    CHECK_EQUAL( n, 22 ); 
     1863    CHECK_EQUAL( ftell( file ), 121 ); 
     1864    } 
     1865    { 
     1866    // reading +0777777777777777777777, o 
     1867    fseek( file, 98, SEEK_SET ); 
     1868    unsigned long long i = -1; 
     1869    int n; 
     1870    CHECK_EQUAL( fscanf( file, "%llo%n", &i, &n ), 1 ); 
     1871    CHECK_FEQUAL( i, 9223372036854775807llu, unsigned long long, "%llu" ); 
     1872    CHECK_EQUAL( n, 23 ); 
     1873    CHECK_EQUAL( ftell( file ), 121 ); 
     1874    } 
     1875    { 
     1876    // reading 01777777777777777777777, o 
     1877    fseek( file, 123, SEEK_SET ); 
     1878    unsigned long long i = -1; 
     1879    int n; 
     1880    CHECK_EQUAL( fscanf( file, "%llo%n", &i, &n ), 1 ); 
     1881    CHECK_FEQUAL( i, 18446744073709551615llu, unsigned long long, "%llu" ); 
     1882    CHECK_EQUAL( n, 23 ); 
     1883    CHECK_EQUAL( ftell( file ), 146 ); 
     1884    } 
     1885    { 
     1886    // reading +01777777777777777777777, o 
     1887    fseek( file, 122, SEEK_SET ); 
     1888    unsigned long long i = -1; 
     1889    int n; 
     1890    CHECK_EQUAL( fscanf( file, "%llo%n", &i, &n ), 1 ); 
     1891    CHECK_FEQUAL( i, 18446744073709551615llu, unsigned long long, "%llu" ); 
     1892    CHECK_EQUAL( n, 24 ); 
     1893    CHECK_EQUAL( ftell( file ), 146 ); 
     1894    } 
     1895    { 
     1896    // reading -01777777777777777777777, o 
     1897    fseek( file, 147, SEEK_SET ); 
     1898    unsigned long long i = -1; 
     1899    int n; 
     1900    CHECK_EQUAL( fscanf( file, "%llo%n", &i, &n ), 1 ); 
     1901    CHECK_FEQUAL( i, 1llu, unsigned long long, "%llu" ); 
     1902    CHECK_EQUAL( n, 24 ); 
     1903    CHECK_EQUAL( ftell( file ), 171 ); 
     1904    } 
    15131905    fclose( file ); 
    1514     remove( "tmpfile" ); 
     1906    remove( "tmpfile" );     
    15151907} 
    15161908 
     
    15241916        return; 
    15251917    } 
    1526     fprintf( file, "five" ); 
     1918    fprintf( file, "foo\n" ); 
    15271919    CHECK_EQUAL( ftell( file ), 4 ); 
    1528      
     1920    { 
     1921    } 
    15291922    fclose( file ); 
    1530     remove( "tmpfile" ); 
     1923    remove( "tmpfile" );     
    15311924} 
    15321925