/* * Copyright 2007-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package org.visage.tools.api; import org.visage.api.VisagecTask; import org.visage.tools.api.VisagecTool; import com.sun.tools.mjavac.util.JavacFileManager; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; import java.io.Writer; import java.nio.charset.Charset; import java.util.EnumSet; import java.util.Locale; import java.util.Set; import javax.lang.model.SourceVersion; import javax.tools.Diagnostic; import javax.tools.DiagnosticListener; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; /** * Unit test for VisageTool. */ public class VisagecToolTest { private static File tmpDirectory; @Test public void create() { Object result = VisagecTool.create(); assertTrue(result instanceof VisagecTool); } @BeforeClass public static void setUpClass() throws Exception { File f = File.createTempFile("foo", null); tmpDirectory = f.getParentFile(); f.delete(); } @Test public void run() { InputStream in = null; // use System.in ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream(); VisagecTool instance = VisagecTool.create(); int errors = instance.run(in, out, err, "-d", tmpDirectory.getPath(), "test/src/org/visage/tools/api/Hello.visage"); if (errors > 0) { System.err.println("VisageToolTest.run() out:"); System.err.println(new String(out.toByteArray())); System.err.println("VisageToolTest.run() err:"); System.err.println(new String(err.toByteArray())); System.err.println(Integer.toString(errors) + " error" + (errors == 1 ? "" : "s")); } assertEquals(errors, 0); assertTrue(out.size() == 0); assertTrue(err.size() == 0); } @Test public void getSourceVersions() { VisagecTool instance = new VisagecTool(); Set<SourceVersion> expResult = EnumSet.range(SourceVersion.RELEASE_3, SourceVersion.latest()); Set<SourceVersion> result = instance.getSourceVersions(); assertTrue(result.size() == expResult.size() && result.containsAll(expResult)); } @Test public void getStandardFileManager() { VisagecTool instance = new VisagecTool(); Object result = instance.getStandardFileManager(null, null, null); assertTrue(result instanceof JavacFileManager); } @Test public void getStandardFileManagerWithParams() { DiagnosticListener<? super JavaFileObject> diagnosticListener = new DiagnosticListener<JavaFileObject>() { public void report(Diagnostic<? extends JavaFileObject> diagnostic) { System.err.println(diagnostic.toString()); } }; Locale locale = Locale.getDefault(); Charset charset = Charset.defaultCharset(); VisagecTool instance = new VisagecTool(); Object result = instance.getStandardFileManager(diagnosticListener, locale, charset); assertTrue(result instanceof JavacFileManager); } @Test public void getTask() { Writer out = null; JavaFileManager fileManager = null; DiagnosticListener<? super JavaFileObject> diagnosticListener = null; Iterable<String> options = null; Iterable<String> classes = null; Iterable<? extends JavaFileObject> compilationUnits = null; VisagecTool instance = new VisagecTool(); Object result = instance.getTask(out, fileManager, diagnosticListener, options, compilationUnits); assertTrue(result instanceof VisagecTask); } @Test public void isSupportedOption() { VisagecTool instance = new VisagecTool(); int result = instance.isSupportedOption(""); assertTrue(result == -1); result = instance.isSupportedOption("-invalidOption"); assertTrue(result == -1); result = instance.isSupportedOption("-nowarn"); assertTrue(result == 0); result = instance.isSupportedOption("-source"); assertTrue(result == 1); } }