You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2022/10/27 22:48:56 UTC
[royale-compiler] 09/09: linter: more tests
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit f04e9788b5ab9201d9c7f3bf4848d110d92167fc
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Oct 27 15:48:30 2022 -0700
linter: more tests
---
.../royale/linter/rules/TestNoAnyTypeRule.java | 109 +++++++++++++++++++++
.../linter/rules/TestNoBooleanEqualityRule.java | 98 ++++++++++++++++++
.../rules/TestNoConstructorDispatchEventRule.java | 59 +++++++++++
.../rules/TestNoConstructorReturnTypeRule.java | 59 +++++++++++
.../rules/TestNoDuplicateObjectKeysRule.java | 59 +++++++++++
.../linter/rules/TestNoDynamicClassRule.java | 59 +++++++++++
.../linter/rules/TestNoIfBooleanLiteralRule.java | 96 ++++++++++++++++++
.../linter/rules/TestNoLeadingZeroesRule.java | 71 ++++++++++++++
.../royale/linter/rules/TestNoSparseArrayRule.java | 71 ++++++++++++++
.../linter/rules/TestNoStringEventNameRule.java | 73 ++++++++++++++
.../linter/rules/TestNoThisInClosureRule.java | 59 +++++++++++
11 files changed, 813 insertions(+)
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoAnyTypeRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoAnyTypeRule.java
new file mode 100644
index 000000000..e14d7da05
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoAnyTypeRule.java
@@ -0,0 +1,109 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoAnyTypeRule {
+ @Test
+ public void testVariableWithoutAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Object;", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testVariableWithAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:*;", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoAnyTypeRule.NoAnyTypeOnVariableLinterProblem);
+ }
+
+ @Test
+ public void testParameterWithoutAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "function myFunction(a:Object):void {}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testParameterWithAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "function myFunction(a:*):void {}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoAnyTypeRule.NoAnyTypeOnParameterLinterProblem);
+ }
+
+ @Test
+ public void testReturnWithoutAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "function myFunction():Object{return null;}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testReturnWithAnyType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoAnyTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "function myFunction():*{return null;}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoAnyTypeRule.NoAnyTypeReturnLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoBooleanEqualityRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoBooleanEqualityRule.java
new file mode 100644
index 000000000..0f610f49c
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoBooleanEqualityRule.java
@@ -0,0 +1,98 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoBooleanEqualityRule {
+ @Test
+ public void testWithoutBooleanEquality() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoBooleanEqualityRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a){}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testWithLooseEqualsTrue() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoBooleanEqualityRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a==true){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoBooleanEqualityRule.NoBooleanEqualityLinterProblem);
+ }
+
+ @Test
+ public void testWithLooseNotEqualsTrue() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoBooleanEqualityRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a!=true){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoBooleanEqualityRule.NoBooleanEqualityLinterProblem);
+ }
+
+ @Test
+ public void testWithLooseEqualsFalse() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoBooleanEqualityRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a==false){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoBooleanEqualityRule.NoBooleanEqualityLinterProblem);
+ }
+
+ @Test
+ public void testWithLooseNotEqualsFalse() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoBooleanEqualityRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a!=false){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoBooleanEqualityRule.NoBooleanEqualityLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorDispatchEventRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorDispatchEventRule.java
new file mode 100644
index 000000000..55b2bf06d
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorDispatchEventRule.java
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoConstructorDispatchEventRule {
+ @Test
+ public void testWithoutDispatchEvent() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoConstructorDispatchEventRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass{function MyClass(){}}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testWithDispatchEvent() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoConstructorDispatchEventRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass{function MyClass():void{dispatchEvent(new Event(\"change\"));}}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoConstructorDispatchEventRule.NoConstructorDispatchEventLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorReturnTypeRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorReturnTypeRule.java
new file mode 100644
index 000000000..233d3e0a1
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoConstructorReturnTypeRule.java
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoConstructorReturnTypeRule {
+ @Test
+ public void testWithoutReturnType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoConstructorReturnTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass{function MyClass(){}}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testWithReturnType() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoConstructorReturnTypeRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass{function MyClass():void{}}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoConstructorReturnTypeRule.NoConstructorReturnTypeLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoDuplicateObjectKeysRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoDuplicateObjectKeysRule.java
new file mode 100644
index 000000000..12e0e0945
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoDuplicateObjectKeysRule.java
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoDuplicateObjectKeysRule {
+ @Test
+ public void testWithoutDuplicates() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoDuplicateObjectKeysRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Object = {a: 1, b: 2};", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testWithDuplicates() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoDuplicateObjectKeysRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Object = {a: 1, b: 2, a: 3};", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoDuplicateObjectKeysRule.NoDuplicateObjectKeysLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoDynamicClassRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoDynamicClassRule.java
new file mode 100644
index 000000000..a14ee0455
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoDynamicClassRule.java
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoDynamicClassRule {
+ @Test
+ public void testWithoutDynamic() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoDynamicClassRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass {}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testWithDynamic() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoDynamicClassRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "dynamic class MyClass {}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoDynamicClassRule.NoDynamicClassLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoIfBooleanLiteralRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoIfBooleanLiteralRule.java
new file mode 100644
index 000000000..08b545c52
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoIfBooleanLiteralRule.java
@@ -0,0 +1,96 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoIfBooleanLiteralRule {
+ @Test
+ public void testIfIdentifier() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoIfBooleanLiteralRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(a){}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testIfUndefined() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoIfBooleanLiteralRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(undefined){}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testIfNull() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoIfBooleanLiteralRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(null){}", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testIfTrue() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoIfBooleanLiteralRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(true){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoIfBooleanLiteralRule.NoIfBooleanLiteralLinterProblem);
+ }
+
+ @Test
+ public void testIfFalse() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoIfBooleanLiteralRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "if(false){}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoIfBooleanLiteralRule.NoIfBooleanLiteralLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoLeadingZeroesRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoLeadingZeroesRule.java
new file mode 100644
index 000000000..dca8c46d4
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoLeadingZeroesRule.java
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoLeadingZeroesRule {
+ @Test
+ public void testNoLeadingZeroes() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoLeadingZeroesRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Number = 123.4", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testLeadingZeroes() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoLeadingZeroesRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Number = 0123", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoLeadingZeroesRule.NoLeadingZeroesLinterProblem);
+ }
+
+ @Test
+ public void testHexadecimal() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoLeadingZeroesRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Number = 0x1234", problems);
+ assertEquals(0, problems.size());
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoSparseArrayRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoSparseArrayRule.java
new file mode 100644
index 000000000..8b8701246
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoSparseArrayRule.java
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoSparseArrayRule {
+ @Test
+ public void testNonSparseArray() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoSparseArrayRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Array = [a, b, c]", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testEmptyArray() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoSparseArrayRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Array = []", problems);
+ assertEquals(0, problems.size());
+ }
+
+ @Test
+ public void testSparseArray() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoSparseArrayRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "var a:Array = [a,,c]", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoSparseArrayRule.NoSparseArrayLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoStringEventNameRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoStringEventNameRule.java
new file mode 100644
index 000000000..a47f2eedc
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoStringEventNameRule.java
@@ -0,0 +1,73 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoStringEventNameRule {
+ @Test
+ public void testAddEventListenerStringEventName() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoStringEventNameRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "addEventListener(\"change\", listener)", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoStringEventNameRule.NoStringEventNameLinterProblem);
+ }
+
+ @Test
+ public void testRemoveEventListenerStringEventName() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoStringEventNameRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "removeEventListener(\"change\", listener)", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoStringEventNameRule.NoStringEventNameLinterProblem);
+ }
+
+ @Test
+ public void testHasEventListenerStringEventName() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoStringEventNameRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "hasEventListener(\"change\", listener)", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoStringEventNameRule.NoStringEventNameLinterProblem);
+ }
+}
\ No newline at end of file
diff --git a/linter/src/test/java/org/apache/royale/linter/rules/TestNoThisInClosureRule.java b/linter/src/test/java/org/apache/royale/linter/rules/TestNoThisInClosureRule.java
new file mode 100644
index 000000000..58a8d926c
--- /dev/null
+++ b/linter/src/test/java/org/apache/royale/linter/rules/TestNoThisInClosureRule.java
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.compiler.problems.ICompilerProblem;
+import org.apache.royale.linter.ASLinter;
+import org.apache.royale.linter.LinterRule;
+import org.apache.royale.linter.LinterSettings;
+import org.junit.Test;
+
+public class TestNoThisInClosureRule {
+ @Test
+ public void testThisInClosure() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoThisInClosureRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "function myFunction():void{function myClosure():void{this;}}", problems);
+ assertEquals(1, problems.size());
+ assertTrue(problems.get(0) instanceof NoThisInClosureRule.NoThisInClosureLinterProblem);
+ }
+
+ @Test
+ public void testThisInMethod() {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ rules.add(new NoThisInClosureRule());
+ LinterSettings settings = new LinterSettings();
+ settings.rules = rules;
+ ASLinter linter = new ASLinter(settings);
+ List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>();
+ linter.lint("file.as", "class MyClass{function myMethod():void{this;}}", problems);
+ assertEquals(0, problems.size());
+ }
+}
\ No newline at end of file