/* * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 as; import org.junit.Test; /** * Created by Greg on 27/09/2016. */ public class ASInheritanceTests extends ASFeatureTestsBase{ @Test public void ImplicitConstructorErrorCheck() { // all tests can assume that flash.display.Sprite // flash.system.System and flash.events.Event have been imported String[] imports = new String[] { }; String[] declarations = new String[] { }; String[] testCode = new String[] { }; String[] extra = new String[] { "class A {", "public function A(nonOptional:String) {}", "}", "class B extends A {}" }; String source = getAS(imports, declarations, testCode, extra); compileAndExpectErrors(source, false,false,false, null,"No default constructor found in base class A.\n"); } @Test public void ImplicitSuperCallErrorCheck() { // all tests can assume that flash.display.Sprite // flash.system.System and flash.events.Event have been imported String[] imports = new String[] { }; String[] declarations = new String[] { }; String[] testCode = new String[] { }; String[] extra = new String[] { "class A {", "public function A(nonOptional:String) {}", "}", "class B extends A {", "public function B() {}", "}" }; String source = getAS(imports, declarations, testCode, extra); compileAndExpectErrors(source, false,false,false, null,"No default constructor found in base class A.\n"); } @Test public void InterfaceOverrideError() { // all tests can assume that flash.display.Sprite // flash.system.System and flash.events.Event have been imported String[] imports = new String[] { }; String[] declarations = new String[] { }; String[] testCode = new String[] { }; String[] extra = new String[] { "interface A {", "function get text():String;", "}", "interface B extends A {", "function get text():String;", "}" }; String source = getAS(imports, declarations, testCode, extra); compileAndExpectErrors(source, false,false,false, null,"Cannot override an interface method. Method text conflicts with a method in base interface A.\n"); } @Test public void InterfaceOverrideOK() { // all tests can assume that flash.display.Sprite // flash.system.System and flash.events.Event have been imported String[] imports = new String[] { }; String[] declarations = new String[] { }; String[] testCode = new String[] { }; String[] extra = new String[] { "interface A {", "function get text():String;", "}", "interface B extends A {", "function set text(value:String):void;", "}" }; String source = getAS(imports, declarations, testCode, extra); compileAndRun(source);; } }