001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.commons.jci.compilers; 019 020 import java.util.HashMap; 021 import java.util.Map; 022 023 import org.apache.commons.jci.readers.ResourceReader; 024 import org.apache.commons.jci.stores.MemoryResourceStore; 025 026 /** 027 * 028 * @author tcurdt 029 */ 030 public final class RhinoJavaCompilerTestCase extends AbstractCompilerTestCase { 031 032 @Override 033 public JavaCompiler createJavaCompiler() { 034 return new RhinoJavaCompiler(); 035 } 036 037 @Override 038 public String getCompilerName() { 039 return "rhino"; 040 } 041 042 @Override 043 public void testSimpleCompile() throws Exception { 044 final JavaCompiler compiler = createJavaCompiler(); 045 046 final ResourceReader reader = new ResourceReader() { 047 final private Map<String, byte[]> sources = new HashMap<String, byte[]>() { 048 private static final long serialVersionUID = 1L; 049 { 050 put("jci/Simple.js", ( 051 " var i = 0;\n" + 052 "\n" 053 ).getBytes()); 054 }}; 055 056 public byte[] getBytes( final String pResourceName ) { 057 return sources.get(pResourceName); 058 } 059 060 public boolean isAvailable( final String pResourceName ) { 061 return sources.containsKey(pResourceName); 062 } 063 064 }; 065 066 final MemoryResourceStore store = new MemoryResourceStore(); 067 final CompilationResult result = compiler.compile( 068 new String[] { 069 "jci/Simple.js" 070 }, reader, store); 071 072 assertEquals(toString(result.getErrors()), 0, result.getErrors().length); 073 assertEquals(toString(result.getWarnings()), 0, result.getWarnings().length); 074 075 final byte[] clazzBytes = store.read("jci/Simple.class"); 076 assertNotNull(clazzBytes); 077 assertTrue(clazzBytes.length > 0); 078 } 079 080 @Override 081 public void testExtendedCompile() throws Exception { 082 } 083 084 @Override 085 public void testInternalClassCompile() throws Exception { 086 } 087 088 @Override 089 public void testUppercasePackageNameCompile() throws Exception { 090 final JavaCompiler compiler = createJavaCompiler(); 091 092 final ResourceReader reader = new ResourceReader() { 093 final private Map<String, byte[]> sources = new HashMap<String, byte[]>() { 094 private static final long serialVersionUID = 1L; 095 { 096 put("Jci/Simple.js", ( 097 " var i = 0;\n" + 098 "\n" 099 ).getBytes()); 100 }}; 101 102 public byte[] getBytes( final String pResourceName ) { 103 return sources.get(pResourceName); 104 } 105 106 public boolean isAvailable( final String pResourceName ) { 107 return sources.containsKey(pResourceName); 108 } 109 110 }; 111 112 final MemoryResourceStore store = new MemoryResourceStore(); 113 final CompilationResult result = compiler.compile( 114 new String[] { 115 "Jci/Simple.js" 116 }, reader, store); 117 118 assertEquals(toString(result.getErrors()), 0, result.getErrors().length); 119 assertEquals(toString(result.getWarnings()), 0, result.getWarnings().length); 120 121 final byte[] clazzBytes = store.read("Jci/Simple.class"); 122 assertNotNull(clazzBytes); 123 assertTrue(clazzBytes.length > 0); 124 } 125 126 @Override 127 public void testCrossReferenceCompilation() throws Exception { 128 // NA 129 } 130 131 @Override 132 public void testAdditionalTopLevelClassCompile() throws Exception { 133 // NA 134 } 135 136 }