~ubuntu-branches/ubuntu/raring/avr-libc/raring-proposed

« back to all changes in this revision

Viewing changes to tests/simulate/stdlib/atol-1.c

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2008-08-10 09:59:16 UTC
  • mfrom: (1.2.1 upstream) (8 intrepid)
  • mto: (4.1.7 sid)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: james.westby@ubuntu.com-20080810095916-7ku06pjsfia3hz16
Added build-depends on texlive-extra-utils (closes: #493454)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $Id: atol-1.c,v 1.1 2007/02/05 21:35:59 dmix Exp $ */
 
2
 
 
3
#include <stdio.h>
 
4
#include <stdlib.h>
 
5
#include <string.h>
 
6
#include "progmem.h"
 
7
 
 
8
PROGMEM const struct {
 
9
    char s[12];
 
10
    long val;
 
11
} t[] = {
 
12
 
 
13
    /* Empty string     */
 
14
    { "", 0 },
 
15
    { " ", 0 },
 
16
    { "\t\n\v\f\r", 0 },
 
17
 
 
18
    /* Common values    */
 
19
    { "0", 0 },
 
20
    { "+0", 0 },
 
21
    { "-0", 0 },
 
22
    { "1", 1 },
 
23
    { "+1", 1 },
 
24
    { "-1", -1 },
 
25
    { "32767", 32767 },
 
26
    { "32768", 32768 },
 
27
    { "-32767", -32767 },
 
28
    { "-32768", -32768 },
 
29
    { "-987654321", -987654321 },
 
30
    { "+1234567890", 1234567890 },
 
31
    { "2147483647", 2147483647 },
 
32
    { "-2147483647", -2147483647 },
 
33
    { "-2147483648", 0x80000000 },
 
34
    
 
35
    /* Nonzero end character    */
 
36
    { "12\001", 12 },
 
37
    { "123\377", 123 },
 
38
    { "1234/", 1234 },          /* '0'-1 == '/' */
 
39
    { "12345:", 12345 },        /* '9'+1 == ':' */
 
40
    { "321 4", 321 },
 
41
    
 
42
    /* Empty symbols at begin   */
 
43
    { " -4", -4 },
 
44
    { "\t+5", 5 },
 
45
    { "\t\n\v\f\r-321", -321 },         /* bug #18899   */
 
46
    
 
47
    /* No digits        */
 
48
    { "\001123", 0 },
 
49
    { "\377-123", 0 },
 
50
    { "\010123", 0 },           /* '\t'-1 == 010        */
 
51
    { "\016+123", 0 },          /* '\r'+1 == 016        */
 
52
    
 
53
    /* atol() accepts 10-base only      */
 
54
    { "010", 10 },
 
55
    { "0x10", 0 },
 
56
    { "0X10", 0 },
 
57
};
 
58
 
 
59
volatile long vlt = 1;          /* for debug conveniency        */
 
60
 
 
61
void t_exit (int idx)
 
62
{
 
63
#ifdef  __AVR__
 
64
    exit (idx + 1);
 
65
#else
 
66
    printf ("result=%ld against t[%d]={\"%s\", %ld}\n",
 
67
            vlt, idx, t[idx].s, t[idx].val);
 
68
    exit (1);
 
69
#endif
 
70
}
 
71
 
 
72
int main ()
 
73
{
 
74
    int i;
 
75
    char s[sizeof(t[0].s)];
 
76
 
 
77
    for (i = 0; i < (int)(sizeof(t) / sizeof(t[0])); i++) {
 
78
        strcpy_P (s, t[i].s);
 
79
        vlt = atol (s);
 
80
        if (vlt != (long)pgm_read_dword (& t[i].val))
 
81
            t_exit (i);
 
82
    }
 
83
    return 0;
 
84
}