OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [testsuite/] [libjava.lang/] [String_overflow.java] - Blame information for rev 765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 765 jeremybenn
class String_overflow
2
{
3
  static void getChars()
4
  {
5
    String source = "abcdefg";
6
    char[] dest = new char [3];
7
 
8
    try
9
      {
10
        source.getChars (0, 5,   // Source
11
                         dest, (1<<31) - 1);
12
        Fail ("getChars", "Should not have succeeded");
13
      }
14
    catch (Throwable e)
15
      {
16
        ExpectArrayIndex ("getChars", e);
17
      }
18
  }
19
 
20
    /* How do I stop a compiler warning causing a test to fail?
21
  static void getBytes()
22
  {
23
    String source = "abcdefg";
24
    byte[] dest = new byte[3];
25
 
26
    try
27
      {
28
        source.getBytes (0, 5, dest, (1<<31) - 1);
29
        Fail ("getBytes", "Should not have succeeded");
30
      }
31
    catch (Throwable e)
32
      {
33
        ExpectArrayIndex ("getBytes", e);
34
      }
35
  }
36
    */
37
 
38
  static void regionMatches()
39
  {
40
    if ("abcdefg".regionMatches (4, "abcdefg", 4, -1))
41
      {
42
        Fail ("regionMatches", "Should not return true");
43
      }
44
 
45
    try
46
      {
47
        if ("abcdefg".regionMatches (4, "abcdefg", 4, (1<<31)-1))
48
          {
49
            Fail ("regionMatches (2nd)", "Should not return true");
50
          }
51
      }
52
    catch (Throwable e)
53
      {
54
        Fail ("regionMatches (2nd)", e);
55
      }
56
  }
57
 
58
  static void regionMatchesCase()
59
  {
60
    if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, -1))
61
      {
62
        Fail ("regionMatchesCase", "Should not return true");
63
      }
64
 
65
    try
66
      {
67
        if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, (1<<31)-1))
68
          {
69
            Fail ("regionMatchesCase (2nd)", "Should not return true");
70
          }
71
      }
72
    catch (Throwable e)
73
      {
74
        Fail ("regionMatchesCase (2nd)", e);
75
      }
76
  }
77
 
78
  static void startsWith()
79
  {
80
    // We make the arg pretty big to try and cause a segfault.
81
    String s = new String ("abcdef");
82
    StringBuffer b = new StringBuffer (1000000);
83
    b.setLength (1000000);
84
    String arg = new String (b);
85
 
86
    try
87
      {
88
        s.startsWith (arg, (1<<31) - 1000000);
89
      }
90
    catch (Throwable e)
91
      {
92
        Fail ("startsWith", e);
93
      }
94
  }
95
 
96
  static void valueOf()
97
  {
98
    char[] array = new char[] {'a', 'b', 'c', 'd', 'e'};
99
    try
100
      {
101
        String.valueOf (array, 4, (1<<31)-1);
102
        Fail ("valueOf", "should not succeed");
103
      }
104
    catch (Throwable e)
105
      {
106
        ExpectArrayIndex ("valueOf", e);
107
      }
108
  }
109
 
110
  public static void main (String[] args) throws Throwable
111
  {
112
    getChars();
113
    //    getBytes();
114
    regionMatches();
115
    regionMatchesCase();
116
    startsWith();
117
    valueOf();
118
 
119
    if (tests_failed == 0)
120
      System.out.println ("ok");
121
  }
122
 
123
  static void ExpectArrayIndex (String test, Throwable e)
124
  {
125
    if (e instanceof ArrayIndexOutOfBoundsException)
126
      return;
127
 
128
    Fail (test, e);
129
  }
130
 
131
  static void Fail (String test, Object problem)
132
  {
133
    ++tests_failed;
134
    System.err.print (test);
135
    System.err.print ('\t');
136
    System.err.println (problem);
137
  }
138
 
139
  static int tests_failed;
140
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.