/* * Copyright Red Hat Inc. and/or its affiliates and other contributors * as indicated by the authors tag. All rights reserved. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU General Public License version 2. * * This particular file is subject to the "Classpath" exception as provided in the * LICENSE file that accompanied this code. * * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License, * along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package com.redhat.ceylon.compiler.java.test.structure; import org.junit.Test; import com.redhat.ceylon.compiler.java.test.CompilerTests; public class StructureTests extends CompilerTests { // // Packages @Test public void testPkgPackage(){ compareWithJavaSource("pkg/pkg"); } @Test public void testPkgPackageMetadata(){ compareWithJavaSource("pkg/package"); } // // Modules @Test public void testMdlModule(){ compareWithJavaSource("modules/single/module"); } // // Attributes @Test public void testAtrClassAttribute(){ compareWithJavaSource("attribute/ClassAttribute"); } @Test public void testAtrClassAttributeLate(){ compareWithJavaSource("attribute/ClassAttributeLate"); } @Test public void testAtrClassAttributeWithInitializer(){ compareWithJavaSource("attribute/ClassAttributeWithInitializer"); } @Test public void testAtrClassAttributeGetter(){ compareWithJavaSource("attribute/ClassAttributeGetter"); } @Test public void testAtrClassAttributeGetterSetter(){ compareWithJavaSource("attribute/ClassAttributeGetterSetter"); } @Test public void testAtrClassVariable(){ compareWithJavaSource("attribute/ClassVariable"); } @Test public void testAtrClassVariableWithInitializer(){ compareWithJavaSource("attribute/ClassVariableWithInitializer"); } @Test public void testAtrInnerAttributeGetter(){ compareWithJavaSource("attribute/InnerAttributeGetter"); } @Test public void testAtrInnerAttributeGetterSetter(){ compareWithJavaSource("attribute/InnerAttributeGetterSetter"); } @Test public void testAtrInnerAttributeGetterLateInitialisation(){ compareWithJavaSource("attribute/InnerAttributeGetterLateInitialisation"); } @Test public void testAtrClassAttributeWithConflictingMethods(){ compareWithJavaSource("attribute/ClassAttributeWithConflictingMethods"); } @Test public void testAtrInnerAttributeGetterWithConflictingMethods(){ compareWithJavaSource("attribute/InnerAttributeGetterWithConflictingMethods"); } @Test public void testAtrFormalFunctionAttribute(){ compareWithJavaSource("attribute/FormalFunctionAttribute"); } @Test public void testAtrAttributeHiding() { compareWithJavaSource("attribute/AttributeHiding"); } @Test public void testAtrParametersAndMembers(){ compareWithJavaSource("attribute/ParametersAndMembers"); } // // Classes @Test public void testKlsAbstractFormal(){ compareWithJavaSource("klass/AbstractFormal"); } @Test public void testKlsFinal(){ compareWithJavaSource("klass/Final"); } @Test public void testKlsCaseTypes(){ compareWithJavaSource("klass/CaseTypes"); } @Test public void testKlsDefaultedInitializerParameter(){ compareWithJavaSource("klass/DefaultedInitializerParameter"); } @Test public void testKlsExtends(){ compareWithJavaSource("klass/Extends"); } @Test public void testKlsExtendsGeneric(){ compareWithJavaSource("klass/ExtendsGeneric"); } @Test public void testKlsInitializerParameter(){ compareWithJavaSource("klass/InitializerParameter"); } @Test public void testKlsInitializerVarargs(){ compareWithJavaSource("klass/InitializerVarargs"); } @Test public void testKlsInitializerVarargsNoOpt(){ compareWithJavaSourceNoOpt("klass/InitializerVarargs"); } @Test public void testKlsWithVariableParameter(){ compareWithJavaSource("klass/ClassWithVariableParameter"); } @Test public void testKlsInnerClass(){ compareWithJavaSource("klass/InnerClass"); } @Test public void testKlsInterface(){ compareWithJavaSource("klass/Interface"); } @Test public void testKlsInterfaceWithConcreteMembers(){ compareWithJavaSource("klass/InterfaceWithConcreteMembers"); } @Test public void testKlsInterfaceWithMembers(){ compareWithJavaSource("klass/InterfaceWithMembers"); } @Test public void testKlsClass(){ compareWithJavaSource("klass/Klass"); } @Test public void testKlsVariadic(){ compareWithJavaSource("klass/Variadic"); } @Test public void testKlsKlassMethodTypeParams(){ compareWithJavaSource("klass/KlassMethodTypeParams"); } @Test public void testKlsKlassTypeParams(){ compareWithJavaSource("klass/KlassTypeParams"); } @Test public void testKlsKlassTypeParamsSatisfies(){ compareWithJavaSource("klass/KlassTypeParamsSatisfies"); } @Test public void testKlsKlassWithObjectMember(){ compareWithJavaSource("klass/KlassWithObjectMember"); } @Test public void testKlsLocalClass(){ compareWithJavaSource("klass/LocalClass"); } @Test public void testKlsDoublyLocalClass(){ compareWithJavaSource("klass/DoublyLocalClass"); } @Test public void testKlsLocalClassWithLocalObject(){ compareWithJavaSource("klass/LocalClassWithLocalObject"); } @Test public void testKlsPublicClass(){ compareWithJavaSource("klass/PublicKlass"); } @Test public void testKlsSatisfies(){ compareWithJavaSource("klass/Satisfies"); } @Test public void testKlsSatisfiesErasure(){ compareWithJavaSource("klass/SatisfiesErasure"); } @Test public void testKlsSatisfiesGeneric(){ compareWithJavaSource("klass/SatisfiesGeneric"); } @Test public void testKlsSatisfiesWithMembers(){ compareWithJavaSource("klass/SatisfiesWithMembers"); } @Test public void testKlsRefinedVarianceInheritance(){ // See https://github.com/ceylon/ceylon-compiler/issues/319 //compareWithJavaSource("klass/RefinedVarianceInheritance"); compileAndRun("com.redhat.ceylon.compiler.java.test.structure.klass.rvi_run", "klass/RefinedVarianceInheritance.ceylon"); } @Test public void testKlsRefinedVarianceInheritance2(){ // See https://github.com/ceylon/ceylon-compiler/issues/354 compareWithJavaSource("klass/RefinedVarianceInheritance2"); } @Test public void testKlsRefinementAndIntersection(){ // See https://github.com/ceylon/ceylon-compiler/issues/651 compareWithJavaSource("klass/RefinementAndIntersection"); } @Test public void testKlsRefinementIntersectionComposition(){ // See https://github.com/ceylon/ceylon-compiler/issues/696 compareWithJavaSource("klass/RefinementIntersectionComposition"); } @Test public void testKlsRefinementWidening(){ compareWithJavaSource("klass/RefinementWidening"); } @Test public void testKlsRefinementNarrowing(){ compareWithJavaSource("klass/RefinementNarrowing"); } @Test public void testKlsVariance(){ compareWithJavaSource("klass/Variance"); } @Test public void testKlsObjectInMethod(){ compareWithJavaSource("klass/ObjectInMethod"); } @Test public void testKlsObjectInStatement(){ compareWithJavaSource("klass/ObjectInStatement"); } @Test public void testKlsInlineObject(){ compareWithJavaSource("klass/InlineObject"); run("com.redhat.ceylon.compiler.java.test.structure.klass.testInlineObjects"); } @Test public void testKlsInitializerObjectInStatement(){ compareWithJavaSource("klass/InitializerObjectInStatement"); } @Test public void testKlsKlassInStatement(){ compareWithJavaSource("klass/KlassInStatement"); } @Test public void testKlsInitializerKlassInStatement(){ compareWithJavaSource("klass/InitializerKlassInStatement"); } @Test public void testKlsObjectInGetter(){ compareWithJavaSource("klass/ObjectInGetter"); } @Test public void testKlsObjectInSetter(){ compareWithJavaSource("klass/ObjectInSetter"); } @Test public void testKlsClassInGetter(){ compareWithJavaSource("klass/KlassInGetter"); } @Test public void testKlsClassInSetter(){ compareWithJavaSource("klass/KlassInSetter"); } @Test public void testKlsInnerClassUsingOutersTypeParam(){ compareWithJavaSource("klass/InnerClassUsingOutersTypeParam"); } @Test public void testKlsInnerClassUsingOutersTypeParam2(){ compareWithJavaSource("klass/InnerClassUsingOutersTypeParam2"); } @Test public void testKlsUninitializedMethod(){ compareWithJavaSource("klass/UninitializedMethod"); } @Test public void testKlsDeferredMethodInitialization(){ compareWithJavaSource("klass/DeferredMethodInitialization"); } @Test public void testKlsDeferredMethodInitializationMultipleSpecification(){ compareWithJavaSource("klass/DeferredMethodInitializationMultipleSpecification"); } @Test public void testKlsDeferredFunctionInitialization(){ compareWithJavaSource("klass/DeferredFunctionInitialization"); } @Test public void testKlsTypeParamRename(){ compareWithJavaSource("klass/TypeParamRename"); } @Test public void testKlsMethodInitializerParameter(){ compareWithJavaSource("klass/MethodInitializerParameter"); } @Test public void testKlsFunctionalParameter(){ compareWithJavaSource("klass/FunctionalParameter"); } @Test public void testKlsFunctionalParameterActual(){ compareWithJavaSource("klass/FunctionalParameterActual"); } @Test public void testKlsFunctionalParameterDefault(){ compareWithJavaSource("klass/FunctionalParameterDefault"); } @Test public void testKlsFunctionalParameterNotCaptured(){ compareWithJavaSource("klass/FunctionalParameterNotCaptured"); } @Test public void testKlsOverrideDefaultedInitParam(){ compareWithJavaSource("klass/OverrideDefaultedInitParam"); } @Test public void testKlsRefiningVoidMembers(){ compareWithJavaSource("klass/RefiningVoidMembers"); } @Test public void testKlsKlassHiding(){ compareWithJavaSource("klass/KlassHiding"); } @Test public void testKlsSerializableClass() { compareWithJavaSource("klass/SerializableClass"); } @Test public void testKlsSerializableGenericClass() { compareWithJavaSource("klass/SerializableGenericClass"); } @Test public void testKlsSerializableInterfaceSatisfier() { compareWithJavaSource("klass/SerializableInterfaceSatisfier"); } @Test public void testKlsSerializableCycle() { compareWithJavaSource("klass/SerializableCycle"); } @Test public void testKlsSharedParameter(){ compareWithJavaSource("klass/SharedParameter"); } @Test public void testKlsActualParameter(){ compareWithJavaSource("klass/ActualParameter"); } @Test public void testKlsDefaultParameter(){ compareWithJavaSource("klass/DefaultParameter"); } @Test public void testKlsSubclassException(){ compareWithJavaSource("klass/SubclassException"); } @Test public void testKlsMajikNullaryCtor(){ compareWithJavaSource("klass/MajikNullaryCtor"); } @Test public void testKlsJavaIoSerializable(){ compareWithJavaSource("klass/JavaIoSerializable"); } // // Methods @Test public void testMthActualMethodShortcut(){ compareWithJavaSource("method/ActualMethodShortcut"); } @Test public void testMthMethodRefinementWithSpecifiers(){ compareWithJavaSource("method/MethodRefinementWithSpecifiers"); } @Test public void testMthMethodRefinementWithMpl(){ compareWithJavaSource("method/MethodRefinementWithMpl"); } @Test public void testMthDefaultMethodSpecified(){ compareWithJavaSource("method/DefaultMethodSpecified"); } @Test public void testMthLocalMethod(){ compareWithJavaSource("method/LocalMethod"); } @Test public void testMthMethod(){ compareWithJavaSource("method/Method"); } @Test public void testMthVariadic(){ compareWithJavaSource("method/Variadic"); } @Test public void testMthMethodErasure(){ compareWithJavaSource("method/MethodErasure"); } @Test public void testMthMethodTypeParams(){ compareWithJavaSource("method/MethodTypeParams"); } @Test public void testMthMethodWithDefaultParams(){ compareWithJavaSource("method/MethodWithDefaultParams"); } @Test public void testMthMethodWithLocalObject(){ compareWithJavaSource("method/MethodWithLocalObject"); } @Test public void testMthMethodWithParam(){ compareWithJavaSource("method/MethodWithParam"); } @Test public void testMthMethodWithVarargs(){ compareWithJavaSource("method/MethodWithVarargs"); } @Test public void testMthMethodWithVarargsNoOpt(){ compareWithJavaSourceNoOpt("method/MethodWithVarargs"); } @Test public void testMthMethodWithVariableParameter(){ compareWithJavaSource("method/MethodWithVariableParameter"); } @Test public void testMthPublicMethod(){ compareWithJavaSource("method/PublicMethod"); } @Test public void testMthFunctionInStatement(){ compareWithJavaSource("method/FunctionInStatement"); } @Test public void testMthFunctionInGetter(){ compareWithJavaSource("method/FunctionInGetter"); } @Test public void testMthFunctionInSetter(){ compareWithJavaSource("method/FunctionInSetter"); } @Test public void testMthMethodSpecifyingNullaryTopLevel(){ compareWithJavaSource("method/MethodSpecifyingNullaryTopLevel"); } @Test public void testMthMethodSpecifyingUnaryTopLevel(){ compareWithJavaSource("method/MethodSpecifyingUnaryTopLevel"); } @Test public void testMthMethodSpecifyingTopLevelWithResult(){ compareWithJavaSource("method/MethodSpecifyingTopLevelWithResult"); } @Test public void testMthMethodSpecifyingCallable(){ compareWithJavaSource("method/MethodSpecifyingCallable"); } @Test public void testMthMethodSpecifyingInitializer(){ compareWithJavaSource("method/MethodSpecifyingInitializer"); } @Test public void testMthMethodSpecifyingTopLevelWithTypeParam(){ compareWithJavaSource("method/MethodSpecifyingTopLevelWithTypeParam"); } @Test public void testMthMethodSpecifyingTopLevelWithTypeParamMixed(){ compareWithJavaSource("method/MethodSpecifyingTopLevelWithTypeParamMixed"); } @Test public void testMthMethodSpecifyingMethod(){ compareWithJavaSource("method/MethodSpecifyingMethod"); } @Test public void testMthMethodSpecifyingGetter(){ compareWithJavaSource("method/MethodSpecifyingGetter"); } @Test public void testMthMethodSpecifyingInitParam(){ compareWithJavaSource("method/MethodSpecifyingInitParam"); } @Test public void testMthMethodDefaultedParamCaptureInitParam(){ compareWithJavaSource("method/MethodDefaultedParamCaptureInitParam"); } @Test public void testMthRefinedMethodSpecifyingTopLevel(){ compareWithJavaSource("method/RefinedMethodSpecifyingTopLevel"); } @Test public void testMthLocalMethodSpecifyingMethod(){ compareWithJavaSource("method/LocalMethodSpecifyingMethod"); } @Test public void testMthLocalMethodSpecifyingParam(){ compareWithJavaSource("method/LocalMethodSpecifyingParam"); } @Test public void testMthVarargsMethodSpecifyingMethodWithIterable(){ compareWithJavaSource("method/VarargsMethodSpecifyingMethodWithIterable"); } @Test public void testMthVarargsMethodSpecifyingMethodWithVarargs(){ compareWithJavaSource("method/VarargsMethodSpecifyingMethodWithVarargs"); } @Test public void testMthIterableMethodSpecifyingMethodWithVarargs(){ compareWithJavaSource("method/IterableMethodSpecifyingMethodWithVarargs"); } @Test public void testTwoParamLists(){ compareWithJavaSource("method/TwoParamLists"); } @Test public void testTwoParamListsDefaulted(){ compareWithJavaSource("method/TwoParamListsDefaulted"); } @Test public void testThreeParamLists(){ compareWithJavaSource("method/ThreeParamLists"); } @Test public void testTwoParamListsVoid(){ compareWithJavaSource("method/TwoParamListsVoid"); } @Test public void testTwoParamListsTPNoOpt(){ compareWithJavaSourceNoOpt("method/TwoParamListsTP"); } @Test public void testTwoParamListsTP(){ compareWithJavaSource("method/TwoParamListsTP"); } @Test public void testCallableEscaping(){ compareWithJavaSource("method/CallableEscaping"); } @Test public void testMethodInitializerParameter() { compareWithJavaSource("method/MethodInitializerParameter"); } @Test public void testMethodRefinementAndVarianceEdgeCases() { compareWithJavaSource("method/MethodRefinementAndVarianceEdgeCases"); } @Test public void testMethodHiding() { compareWithJavaSource("method/MethodHiding"); } // // Aliases @Test public void testAlsClassAlias() { compareWithJavaSource("alias/ClassAlias"); } @Test public void testAlsTypeAlias() { compareWithJavaSource("alias/TypeAlias"); } @Test public void testAlsInterfaceAlias() { compareWithJavaSource("alias/InterfaceAlias"); } @Test public void testAlsLocalClassAlias() { compareWithJavaSource("alias/LocalClassAlias"); } @Test public void testAlsLocalTypeAlias() { compareWithJavaSource("alias/LocalTypeAlias"); } @Test public void testAlsLocalInterfaceAlias() { compareWithJavaSource("alias/LocalInterfaceAlias"); } @Test public void testAlsMemberClassAlias() { compareWithJavaSource("alias/MemberClassAlias"); } @Test public void testAlsMemberTypeAlias() { compareWithJavaSource("alias/MemberTypeAlias"); } @Test public void testAlsClassAliasWithParameters() { compareWithJavaSource("alias/ClassAliasWithParameters"); } @Test public void testAlsMemberClassAliasWithParameters() { compareWithJavaSource("alias/MemberClassAliasWithParameters"); } @Test public void testAlsClassAliasWithTypeParameters() { compareWithJavaSource("alias/ClassAliasWithTypeParameters"); } @Test public void testAlsTypeAliasWithTypeParameters() { compareWithJavaSource("alias/TypeAliasWithTypeParameters"); } @Test public void testAlsMemberClassAliasWithTypeParameters() { compareWithJavaSource("alias/MemberClassAliasWithTypeParameters"); } @Test public void testAlsInterfaceAliasWithTypeParameters() { compareWithJavaSource("alias/InterfaceAliasWithTypeParameters"); } @Test public void testAlsClassAliasFromModelLoader() { compile("alias/ClassAlias.ceylon", "alias/ClassAliasWithParameters.ceylon", "alias/ClassAliasWithTypeParameters.ceylon"); compareWithJavaSource("alias/ClassAliasFromModelLoader"); } @Test public void testAlsTypeAliasFromModelLoader() { compile("alias/TypeAlias.ceylon", "alias/TypeAliasWithTypeParameters.ceylon", "alias/MemberTypeAlias.ceylon"); compareWithJavaSource("alias/TypeAliasFromModelLoader"); } @Test public void testAlsMemberClassAliasFromModelLoader() { compile("alias/MemberClassAlias.ceylon", "alias/MemberClassAliasWithParameters.ceylon", "alias/MemberClassAliasWithTypeParameters.ceylon"); compareWithJavaSource("alias/MemberClassAliasFromModelLoader"); } @Test public void testAlsInterfaceAliasFromModelLoader() { compile("alias/InterfaceAlias.ceylon", "alias/InterfaceAliasWithTypeParameters.ceylon"); compareWithJavaSource("alias/InterfaceAliasFromModelLoader"); } @Test public void testAlsMemberClassAliasTricks() { compareWithJavaSource("alias/MemberClassAliasTricks"); } @Test public void testAlsMemberInterfaceAliasTricks() { compareWithJavaSource("alias/MemberInterfaceAliasTricks"); } @Test public void testAlsMemberOverriding(){ compareWithJavaSource("alias/MemberOverriding"); } // // Reified generics @Test public void testRfdClass(){ compareWithJavaSource("reified/Class"); } @Test public void testRfdRefinedVarianceInheritance(){ compareWithJavaSource("reified/RVI"); } @Test public void testRfdMethod(){ compareWithJavaSource("reified/Method"); } @Test public void testRfdComposite(){ compareWithJavaSource("reified/Composite"); } @Test public void testRfdCallable(){ compareWithJavaSource("reified/Callable"); } @Test public void testRfdTest(){ compareWithJavaSource("reified/Test"); } @Test public void testRfdRuntime(){ compileAndRun("com.redhat.ceylon.compiler.java.test.structure.reified.runtime", "reified/Runtime.ceylon"); } @Test public void testRfdUtilCalls(){ compareWithJavaSource("reified/UtilCalls"); } @Test public void testRfdAliases(){ compareWithJavaSource("reified/Aliases"); } @Test public void testRfdMembers(){ compareWithJavaSource("reified/Members"); } @Test public void testRfdInterop(){ compile("reified/JavaClass.java", "reified/JavaInterface.java"); compareWithJavaSource("reified/Interop"); } @Test public void testRfdModelLoader(){ compile("reified/Class.ceylon", "reified/Method.ceylon"); compareWithJavaSource("reified/ModelLoader"); } }