| /* |
| * |
| * 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; |
| |
| /** |
| * Feature tests for AS Namespaces. |
| */ |
| public class ASKeywordTests extends ASFeatureTestsBase |
| { |
| @Test |
| public void ASKeyword_SwitchStatement() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function hasSwitch(switcher:int):Boolean {", |
| " trace('hey, a method named namespace worked');", |
| " switch (switcher) {", |
| " case 1:", |
| " foo = 'bar';", |
| " break;", |
| " default:", |
| " foo = 'baz';", |
| " break;", |
| " }", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "hasSwitch(1);", |
| "assertEqual('switch worked', foo, 'bar');", |
| "hasSwitch(0);", |
| "assertEqual('switch worked', foo, 'baz');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_Namespace_as_method_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function namespace(instance:Object):Boolean {", |
| " trace('hey, a method named namespace worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "namespace(this);", |
| "assertEqual('method named namespace', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_Default_as_method_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function default(instance:Object):Boolean {", |
| " trace('hey, a method named default worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "default(this);", |
| "assertEqual('method named default', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_Get_as_method_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function get(instance:Object):Boolean {", |
| " trace('hey, a method named get worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "get(this);", |
| "assertEqual('method named get', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_Get_as_getter_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function get get():Boolean {", |
| " trace('hey, a getter named get worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "var bar:Boolean = get;", |
| "assertEqual('getter named get', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_Get_as_member_expression_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function get get():Boolean {", |
| " trace('hey, a getter named get worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "var bar:Boolean = this.get;", |
| "assertEqual('getter named get', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_as_method_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function as(instance:Object):Boolean {", |
| " trace('hey, a method named as worked');", |
| " foo = 'as';", |
| " return true;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "as(this);", |
| "assertEqual('method named as', foo, 'as');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_as_property_name() |
| { |
| // 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[] |
| { |
| "public var foo:String;", |
| "public function get as():String {", |
| " return foo;", |
| "}", |
| "public function set as(value:String):void {", |
| " foo = value;", |
| "}", |
| }; |
| String[] testCode = new String[] |
| { |
| "as = 'bar';", |
| "assertEqual('property named as', as, 'bar');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_as_variable_name() |
| { |
| // 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[] |
| { |
| "public var as:String;", |
| }; |
| String[] testCode = new String[] |
| { |
| "as = 'bar';", |
| "assertEqual('variable named as', as, 'bar');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| @Test |
| public void ASKeyword_as_member_expression() |
| { |
| // 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[] |
| { |
| "public var as:String;", |
| }; |
| String[] testCode = new String[] |
| { |
| "this.as = 'bar';", |
| "assertEqual('variable named as', this.as, 'bar');", |
| }; |
| String source = getAS(imports, declarations, testCode, new String[0]); |
| compileAndRun(source); |
| } |
| |
| } |