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

« back to all changes in this revision

Viewing changes to tests/simulate/string/strncasecmp.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: strncasecmp.c,v 1.1 2007/02/24 14:20:17 dmix Exp $      */
 
2
 
 
3
#ifndef __AVR__
 
4
# include <stdio.h>
 
5
#endif
 
6
#include <stdlib.h>
 
7
#include <string.h>
 
8
#include "progmem.h"
 
9
 
 
10
void Check (int line, const char *s1, const char *s2, size_t len, int expect)
 
11
{
 
12
    char t1[200];
 
13
    char t2[200];
 
14
    int i;
 
15
    if (   strlen_P(s1) > sizeof(t1) - 1
 
16
        || strlen_P(s2) > sizeof(t2) - 1)
 
17
      exit (1);
 
18
    strcpy_P (t1, s1);
 
19
    strcpy_P (t2, s2);
 
20
    i = strncasecmp (t1, t2, len);
 
21
    if (i == expect)
 
22
        return;
 
23
#if     !defined(__AVR__)
 
24
    printf ("\nLine %d: expect: %d, result: %d\n",
 
25
            line, expect, i);
 
26
    if (line > 255) line = 255;
 
27
#elif   defined(DEBUG)
 
28
    exit (i);
 
29
#endif
 
30
    exit (line);
 
31
}
 
32
 
 
33
#define CHECK(s1, s2, len,expect)       do {            \
 
34
    Check (__LINE__, PSTR(s1), PSTR(s2), len, expect);  \
 
35
} while (0)
 
36
 
 
37
int main ()
 
38
{
 
39
    /* One or both strings are empty.   */
 
40
    CHECK ("", "", 10, 0);
 
41
    CHECK ("", "\001", 10, -1);
 
42
    CHECK ("", "\377", 10, -255);
 
43
    CHECK ("\001", "", 10, 1);
 
44
    CHECK ("\377", "", 10, 255);
 
45
 
 
46
    /* bug #19134       */
 
47
    CHECK ("a", "[", 10, 'a' - '[');
 
48
    CHECK ("[", "a", 10, '[' - 'a');
 
49
 
 
50
    /* Agrs are equal.  */
 
51
    CHECK ("\001", "\001", 10, 0);
 
52
    CHECK ("1234\377", "1234\377", 10, 0);
 
53
    CHECK ("ABC", "abc", 10, 0);
 
54
    CHECK ("FoO", "fOO", 10, 0);
 
55
 
 
56
    /* Args are not equal.      */
 
57
    CHECK ("@", "`", 10, '@' - '`');    /* '@'=='A'-1, '`'=='a'-1       */
 
58
    CHECK ("{", "[", 10, '{' - '[');    /* '{'=='z'+1, '['=='A'+1       */
 
59
 
 
60
    /* Alpha is always converted to lower       */
 
61
    CHECK ("1", "A", 10, '1'-'a');
 
62
    CHECK ("Z", "2", 10, 'z'-'2');
 
63
 
 
64
    /* Chars are unsigned       */
 
65
    CHECK ("\200", "\177", 10, 1);
 
66
    CHECK ("\177", "\200", 10, -1);
 
67
    CHECK ("\001", "\377", 10, -254);
 
68
    CHECK ("\377", "\001", 10, 254);
 
69
    
 
70
    /* Length too small */
 
71
    CHECK ("", "", 0, 0);
 
72
    CHECK ("ab", "ac", 1, 0);
 
73
    CHECK ("FOO", "foo123", 3, 0);
 
74
    CHECK ("ABCDEF", "AbcD", 4, 0);
 
75
    
 
76
    /* Length too big   */
 
77
    CHECK ("", "", ~0, 0);
 
78
    CHECK ("foo", "Foo", ~0, 0);
 
79
    
 
80
    /* Length is equal to string length */
 
81
    CHECK ("12345678", "12345678", 8, 0);
 
82
    CHECK ("12345679", "12345678", 8, 1);
 
83
    CHECK ("12345678", "12345679", 8, -1);
 
84
    
 
85
    return 0;
 
86
}