rhino1.7.6.testsrc.org.mozilla.javascript.tests.Utils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhino Show documentation
Show all versions of rhino Show documentation
Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically
embedded into Java applications to provide scripting to end users.
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript.tests;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextAction;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
/**
* Misc utilities to make test code easier.
* @author Marc Guillemot
*/
public class Utils
{
/**
* Runs the action successively with all available optimization levels
*/
public static void runWithAllOptimizationLevels(final ContextAction action)
{
runWithOptimizationLevel(action, -1);
runWithOptimizationLevel(action, 0);
runWithOptimizationLevel(action, 1);
}
/**
* Runs the action successively with all available optimization levels
*/
public static void runWithAllOptimizationLevels(final ContextFactory contextFactory, final ContextAction action)
{
runWithOptimizationLevel(contextFactory, action, -1);
runWithOptimizationLevel(contextFactory, action, 0);
runWithOptimizationLevel(contextFactory, action, 1);
}
/**
* Runs the provided action at the given optimization level
*/
public static void runWithOptimizationLevel(final ContextAction action, final int optimizationLevel)
{
runWithOptimizationLevel(new ContextFactory(), action, optimizationLevel);
}
/**
* Runs the provided action at the given optimization level
*/
public static void runWithOptimizationLevel(final ContextFactory contextFactory, final ContextAction action, final int optimizationLevel)
{
final Context cx = contextFactory.enterContext();
try
{
cx.setOptimizationLevel(optimizationLevel);
action.run(cx);
}
finally
{
Context.exit();
}
}
/**
* Execute the provided script in a fresh context as "myScript.js".
* @param script the script code
*/
static void executeScript(final String script, final int optimizationLevel) {
final ContextAction action = new ContextAction()
{
public Object run(Context cx) {
final Scriptable scope = cx.initStandardObjects();
return cx.evaluateString(scope, script, "myScript.js", 1, null);
}
};
Utils.runWithOptimizationLevel(action, optimizationLevel);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy