Package org.mozilla.javascript.tests

Source Code of org.mozilla.javascript.tests.Utils

/* 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);
  }
}
TOP

Related Classes of org.mozilla.javascript.tests.Utils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.