Package net.jangaroo.test

Source Code of net.jangaroo.test.JooTestCase

/*
* Copyright 2008 CoreMedia AG
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS
* IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/

package net.jangaroo.test;

import net.jangaroo.jooc.Jooc;
import junit.framework.TestCase;
import net.jangaroo.jooc.StdOutCompileLog;
import net.jangaroo.jooc.api.CompilationResult;

import java.io.File;

/**
* An abstract base class for Jangaroo Compiler tests. Contains methods to compile JangarooScript
* source files.
*
* @author Andreas Gawecki
*/
public abstract class JooTestCase extends TestCase {

  public JooTestCase(String name) {
    super(name);
  }

  protected boolean debug = false;
  protected boolean ea = false;

  protected String sourceDir = null;
  protected String destinationDir = null;
  protected String sourcePath = null;

  protected String getProperty(String name, String defaultValue) {
    return System.getProperty(name, defaultValue);
  }

  protected void setUp() throws Exception {
    sourceDir = getProperty("net.jangaroo.jooc.test.source", ".");
    destinationDir = getProperty("net.jangaroo.jooc.test.destination", null);
    sourcePath = sourceDir;
  }

  protected String[] concat(String[] arr1, String[] arr2) {
    String[] result = new String[arr1.length + arr2.length];
    System.arraycopy(arr1, 0, result, 0, arr1.length);
    System.arraycopy(arr2, 0, result, arr1.length, arr2.length);
    return result;
  }

  protected String[] concat(String s, String[] arr2) {
    return concat(new String[]{s}, arr2);
  }

  protected String toString(String[] arr) {
    String result = "";
    for (int i = 0; i < arr.length; i++) {
      if (i > 0)
        result += " ";
      String s = arr[i];
      result += s;
    }
    return result;
  }

  protected String[] copy(String[] arr) {
    String[] result = new String[arr.length];
    System.arraycopy(arr, 0, result, 0, arr.length);
    return result;
  }

  protected String[] prependSourceDir(String[] fileNames) {
    String[] result = copy(fileNames);
    for (int i = 0; i < result.length; i++) {
      String s = result[i];
      result[i] = (new File(sourceDir, s)).getPath();
    }
    return result;
  }

  protected int runJooc(String[] fileNames) {
    String[] args = prependSourceDir(fileNames);
    if (debug) args = concat("-g", args);
    if (ea) args = concat("-ea", args);
    if (destinationDir != null) args = concat(new String[]{"-d", destinationDir}, args);
    if (sourcePath != null) args = concat(new String[]{"-sourcepath", sourcePath}, args);
    System.out.println("jooc " + toString(args));
    return Jooc.run(args, new StdOutCompileLog());
  }

  protected int runJooc(String filename) {
    return runJooc(new String[]{filename});
  }

  protected void expectCompileSuccess(String fileName) {
    compile(new String[]{fileName});
  }

  protected void expectCompileResult(int resultCode, String[] fileNames) {
    int actualResult = runJooc(fileNames);
    if (resultCode != actualResult) {
      fail("unexpected compilation result: expected " + resultCode + " (" + Jooc.getResultCodeDescription(resultCode) + "), " +
              "found " + actualResult + " (" + Jooc.getResultCodeDescription(actualResult) + ")");
    }
  }

  protected void compile(String[] fileNames) {
    expectCompileResult(CompilationResult.RESULT_CODE_OK, fileNames);
  }

  protected void compile(String fileName) {
    compile(new String[] { fileName });
  }

}
TOP

Related Classes of net.jangaroo.test.JooTestCase

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.