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] - Rev 781

Go to most recent revision | Compare with Previous | Blame | View Log

class String_overflow
{
  static void getChars()
  {
    String source = "abcdefg";
    char[] dest = new char [3];
 
    try
      {
	source.getChars (0, 5,	// Source
			 dest, (1<<31) - 1);
	Fail ("getChars", "Should not have succeeded");
      }
    catch (Throwable e)
      {
	ExpectArrayIndex ("getChars", e);
      }
  }
 
    /* How do I stop a compiler warning causing a test to fail?
  static void getBytes()
  {
    String source = "abcdefg";
    byte[] dest = new byte[3];
 
    try
      {
	source.getBytes (0, 5, dest, (1<<31) - 1);
	Fail ("getBytes", "Should not have succeeded");
      }
    catch (Throwable e)
      {
	ExpectArrayIndex ("getBytes", e);
      }
  }
    */
 
  static void regionMatches()
  {
    if ("abcdefg".regionMatches (4, "abcdefg", 4, -1))
      {
	Fail ("regionMatches", "Should not return true");
      }
 
    try
      {
	if ("abcdefg".regionMatches (4, "abcdefg", 4, (1<<31)-1))
	  {
	    Fail ("regionMatches (2nd)", "Should not return true");
	  }
      }
    catch (Throwable e)
      {
	Fail ("regionMatches (2nd)", e);
      }
  }
 
  static void regionMatchesCase()
  {
    if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, -1))
      {
	Fail ("regionMatchesCase", "Should not return true");
      }
 
    try
      {
	if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, (1<<31)-1))
	  {
	    Fail ("regionMatchesCase (2nd)", "Should not return true");
	  }
      }
    catch (Throwable e)
      {
	Fail ("regionMatchesCase (2nd)", e);
      }
  }
 
  static void startsWith()
  {
    // We make the arg pretty big to try and cause a segfault.
    String s = new String ("abcdef");
    StringBuffer b = new StringBuffer (1000000);
    b.setLength (1000000);
    String arg = new String (b);
 
    try
      {
	s.startsWith (arg, (1<<31) - 1000000);
      }
    catch (Throwable e)
      {
	Fail ("startsWith", e);
      }
  }
 
  static void valueOf()
  {
    char[] array = new char[] {'a', 'b', 'c', 'd', 'e'};
    try
      {
	String.valueOf (array, 4, (1<<31)-1);
	Fail ("valueOf", "should not succeed");
      }
    catch (Throwable e)
      {
	ExpectArrayIndex ("valueOf", e);
      }
  }
 
  public static void main (String[] args) throws Throwable
  {
    getChars();
    //    getBytes();
    regionMatches();
    regionMatchesCase();
    startsWith();
    valueOf();
 
    if (tests_failed == 0)
      System.out.println ("ok");
  }
 
  static void ExpectArrayIndex (String test, Throwable e)
  {
    if (e instanceof ArrayIndexOutOfBoundsException)
      return;
 
    Fail (test, e);
  }
 
  static void Fail (String test, Object problem)
  {
    ++tests_failed;
    System.err.print (test);
    System.err.print ('\t');
    System.err.println (problem);
  }
 
  static int tests_failed;
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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