/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
class StringFunctions {
static boolean verbose = true; // set to true to get messages for each test
static boolean allTestPass = true;
static String hiTon = "hiTon";
static String hiSteve = "hiSteve";
static String hiTony = "hiTony";
static String hiDick = "hiDick";
public static native void setVerboseOff();
/**
* Declare native methods that will call the JNI String Functions
*/
static native String accessNewString(String s);
static native int accessGetStringLength(String s);
static native String accessNewStringUTF(String s);
static native int accessGetStringUTFLength(String s);
static native String testGetReleaseStringChars(String s);
static native String testGetReleaseStringUTFChars(String s);
StringFunctions() {
}
public static void main(String[] args) {
int returnValue;
String returnString;
System.loadLibrary("StringFunctions");
if (args.length != 0) {
if (args[0].equals("-quiet")) {
verbose = false;
setVerboseOff();
}
}
/**
* initialize static fields
*/
/**
* Test static GetStatic<type>Field
*/
returnString = accessNewString(hiTon);
printVerbose("accessNewString returnString = " + returnString + ".");
checkTest(0, (returnString.equals(hiTon)), "accessNewString");
returnValue = accessGetStringLength(hiTon);
checkTest(0, (returnValue == 5), "accessGetStringLength");
returnString = accessNewStringUTF(hiSteve);
printVerbose("accessNewStringUTF returnString = " + returnString + ".");
checkTest(0, (returnString.equals(hiSteve)), "accessNewStringUTF");
returnValue = accessGetStringUTFLength(hiSteve);
checkTest(0, (returnValue == 7), "accessGetStringUTFLength");
returnString = testGetReleaseStringChars(hiTony);
checkTest(0, (returnString.equals(hiTony)), "testGetReleaseStringChars");
returnString = testGetReleaseStringUTFChars(hiDick);
checkTest(0, (returnString.equals(hiDick)), "testGetReleaseStringUTFChars");
// Summarize
if (allTestPass)
System.out.println("PASS: StringFunctions");
else
System.out.println("FAIL: StringFunctions");
}
static void printVerbose(String str) {
if (verbose)
System.out.println(str);
}
static void checkTest(int returnValue, boolean postCheck, String testName) {
if (returnValue == 0 && postCheck) {
printVerbose("PASS: " + testName);
} else {
allTestPass = false;
printVerbose("FAIL: " + testName);
}
}
}