/* * Copyright (c) 2013, the Dart project authors. * * Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html * * 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 com.google.dart.java2dart.processor; /** * Test for {@link CollectionSemanticProcessor}. */ public class CollectionSemanticProcessorTest extends SemanticProcessorTest { public void test_ArrayList() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "import java.util.ArrayList;", "public class Test {", " public List<String> test1() {", " ArrayList<String> result = new ArrayList<String>();", " return result;", " }", " public List<String> test2(List<String> p) {", " return new ArrayList<String>(p);", " }", " public List<String> test3() {", " return new ArrayList<String>(5);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " List<String> test1() {", " List<String> result = new List<String>();", " return result;", " }", " List<String> test2(List<String> p) => new List<String>.from(p);", " List<String> test3() => new List<String>();", "}"); } public void test_Arrays_equals() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "import java.util.Arrays;", "public class Test {", " public boolean main(List<String> a, List<String> b) {", " return Arrays.equals(a, b);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " bool main(List<String> a, List<String> b) => JavaArrays.equals(a, b);", "}"); } public void test_Arrays_hashCode() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "import java.util.Arrays;", "public class Test {", " public boolean main(List<String> a) {", " return Arrays.hashCode(a);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " bool main(List<String> a) => JavaArrays.makeHashCode(a);", "}"); } public void test_Arrays_sort() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Arrays;", "import java.util.Comparator;", "public class Test {", " public void testA(String[] items) {", " Arrays.sort(items);", " }", " public void testB(String[] items, Comparator<String> comparator) {", " Arrays.sort(items, comparator);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void testA(List<String> items) {", " items.sort();", " }", " void testB(List<String> items, Comparator<String> comparator) {", " items.sort(comparator);", " }", "}"); } public void test_Collection() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Collection;", "public class Test {", " public void main(Collection<String> items) {", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void main(Iterable<String> items) {", " }", "}"); } public void test_Collection_isEmpty() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public boolean foo(List<String> items) {", " return items.isEmpty();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " bool foo(List<String> items) => items.isEmpty;", "}"); } public void test_Collection_size() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public int foo(List<String> items) {", " return items.size();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " int foo(List<String> items) => items.length;", "}"); } public void test_Collections_addAll() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Collections;", "import java.util.List;", "public class Test {", " public void main(List<String> target, String [] source) {", " Collections.addAll(target, source);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void main(List<String> target, List<String> source) {", " target.addAll(source);", " }", "}"); } public void test_Collections_sort() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.*;", "public class Test {", " public void testA(List<String> items, Comparator<String> comparator) {", " Collections.sort(items, comparator);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void testA(List<String> items, Comparator<String> comparator) {", " items.sort(comparator);", " }", "}"); } public void test_Collections_unmodifiableList() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Collections;", "import java.util.List;", "public class Test {", " public void main(List<String> source) {", " Collections.unmodifiableList(source);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void main(List<String> source) {", " new UnmodifiableListView(source);", " }", "}"); } public void test_Comparator() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Comparator;", "public class Test {", " Comparator<String> MY = new Comparator<String>() {", " public int compare(String a, String b) {", " return a.length() - b.length();", " }", " };", " public int main(String a, String b) {", " return MY.compare(a, b);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " Comparator<String> _MY = (String a, String b) => a.length() - b.length();", " int main(String a, String b) => _MY(a, b);", "}"); } public void test_EnumSet() throws Exception { setFileLines( "test/MyEnum.java", toString( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "public enum MyEnum {", " ONE, TWO;", "}")); translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.EnumSet;", "public class Test {", " public void main() {", " EnumSet<MyEnum> set = EnumSet.noneOf(MyEnum.class);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void main() {", " HashSet<MyEnum> set = new HashSet();", " }", "}"); } public void test_HashMap() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "import java.util.HashMap;", "public class Test {", " public void mainA() {", " HashMap<String, Integer> map = new HashMap<String, Integer>(5);", " }", " public Object mainB(Map<String, Integer> p) {", " return new HashMap<String, Integer>(p);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void mainA() {", " HashMap<String, int> map = new HashMap<String, int>();", " }", " Object mainB(Map<String, int> p) => new HashMap<String, int>.from(p);", "}"); } public void test_HashSet_constructorSizeArgument() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.*;", "public class Test {", " public void testA() {", " HashSet<String> result = new HashSet<String>(5);", " }", " public void testB(Collection<String> existing) {", " Set<String> result = new HashSet<String>(existing);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void testA() {", " HashSet<String> result = new HashSet<String>();", " }", " void testB(Iterable<String> existing) {", " Set<String> result = new HashSet<String>.from(existing);", " }", "}"); } public void test_HashSet_toArray() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.HashSet;", "public class Test {", " public String[] main(HashSet<String> items) {", " return items.toArray(new String[items.length]);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " List<String> main(HashSet<String> items) => new List.from(items);", "}"); } public void test_Iterator() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.*;", "public class Test {", " public void main(List<String> items) {", " Iterator<String> iter = items.iterator();", " if (iter.hasNext()) {", " iter.next();", " iter.remove();", " }", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void main(List<String> items) {", " JavaIterator<String> iter = new JavaIterator(items);", " if (iter.hasNext) {", " iter.next();", " iter.remove();", " }", " }", "}"); } public void test_LinkedList() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "import java.util.LinkedList;", "public class Test {", " public void test() {", " LinkedList<String> result = new LinkedList<String>();", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void test() {", " Queue<String> result = new Queue<String>();", " }", "}"); } public void test_List_addAtIndex() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public void foo(List<Integer> items) {", " items.add(2, 42);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void foo(List<int> items) {", " items.insert(2, 42);", " }", "}"); } public void test_List_containsAll() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "import java.util.ArrayList;", "public class Test {", " public void testA(List<String> items, List<String> c) {", " items.containsAll(c);", " }", " public void testB(ArrayList<String> items, List<String> c) {", " items.containsAll(c);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void testA(List<String> items, List<String> c) {", " javaCollectionContainsAll(items, c);", " }", " void testB(List<String> items, List<String> c) {", " javaCollectionContainsAll(items, c);", " }", "}"); } public void test_List_get() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public String foo(List<String> items) {", " return items.get(2);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " String foo(List<String> items) => items[2];", "}"); } public void test_List_remove_byIndex() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public void foo(List<String> items) {", " items.remove(2);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void foo(List<String> items) {", " items.removeAt(2);", " }", "}"); } public void test_List_remove_byValue() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public void foo(List<String> items) {", " items.remove(this);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void foo(List<String> items) {", " items.remove(this);", " }", "}"); } public void test_List_set() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public String foo(List<String> items) {", " return items.set(2, 42);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " String foo(List<String> items) => javaListSet(items, 2, 42);", "}"); } public void test_List_toArray() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.List;", "public class Test {", " public String[] foo(List<String> items) {", " return items.toArray(new String[items.length]);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " List<String> foo(List<String> items) => new List.from(items);", "}"); } public void test_Map_entrySet() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public void main(Map<String, Integer> items) {", " Set<Map.Entry<String, Integer>> entries = items.entrySet();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void main(Map<String, int> items) {", " Set<MapEntry<String, int>> entries = getMapEntrySet(items);", // from javalib " }", "}"); } public void test_Map_get() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public void foo(Map<Object, Object> items) {", " items.get(this);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void foo(Map<Object, Object> items) {", " items[this];", " }", "}"); } public void test_Map_isEmpty() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public boolean foo(Map<String, String> p) {", " return p.isEmpty();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " bool foo(Map<String, String> p) => p.isEmpty;", "}"); } public void test_Map_put() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public void testA(Map<Object, Object> items) {", " items.put(this, 42);", " }", " public void testB(Map<Object, Object> items) {", " Object old = items.put(this, 42);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void testA(Map<Object, Object> items) {", " items[this] = 42;", " }", " void testB(Map<Object, Object> items) {", " Object old = javaMapPut(items, this, 42);", " }", "}"); } public void test_Map_putAll() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public void main(Map<String, Integer> target, Map<String, Integer> source) {", " target.putAll(source);", " }", "}"); runProcessor(); assertFormattedSource( "class Test {", " void main(Map<String, int> target, Map<String, int> source) {", " target.addAll(source);", " }", "}"); } public void test_Map_size() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public int main(Map<String, String> items) {", " return items.size();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " int main(Map<String, String> items) => items.length;", "}"); } public void test_Map_values_keySet() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Map;", "public class Test {", " public void main(Map<String, Integer> items) {", " items.values();", " items.keySet();", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void main(Map<String, int> items) {", " items.values;", " items.keys.toSet();", " }", "}"); } public void test_Set_add() throws Exception { translateSingleFile( "// filler filler filler filler filler filler filler filler filler filler", "package test;", "import java.util.Set;", "public class Test {", " public void foo(Set<Integer> items) {", " items.add(42);", " }", "}"); runProcessor(); assertFormattedSource(// "class Test {", " void foo(Set<int> items) {", " items.add(42);", " }", "}"); } private void runProcessor() { new CollectionSemanticProcessor(context).process(unit); } }