1 /* 2 * Copyright (C) 2007-2010 Jlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 22 package com.github.javaparser.utils; 23 24 import static org.junit.Assert.assertEquals; 25 import static org.junit.Assert.assertTrue; 26 27 import java.util.ArrayList; 28 import java.util.Iterator; 29 import java.util.List; 30 import java.util.Set; 31 32 import org.junit.Test; 33 34 import com.github.javaparser.JavaParser; 35 import com.github.javaparser.ast.CompilationUnit; 36 import com.github.javaparser.ast.visitor.ObjectIdentityEqualsVisitor; 37 import com.github.javaparser.ast.visitor.ObjectIdentityHashCodeVisitor; 38 39 public class VisitorListTest { 40 41 @Test 42 public void visitorAddAll() { 43 List<CompilationUnit> list = new ArrayList<>(); 44 list.add(JavaParser.parse("class X{}")); 45 list.add(JavaParser.parse("class X{}")); 46 VisitorList<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 47 new ObjectIdentityEqualsVisitor()); 48 vList.addAll(list); 49 for (int i = 0; i < list.size(); i++) 50 assertEquals(list.get(i), vList.get(i)); 51 } 52 53 @Test 54 public void visitorAddAllAtIndex() { 55 List<CompilationUnit> list = new ArrayList<>(); 56 list.add(JavaParser.parse("class X{}")); 57 list.add(JavaParser.parse("class Y{}")); 58 VisitorList<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 59 new ObjectIdentityEqualsVisitor()); 60 vList.add(JavaParser.parse("class A{}")); 61 vList.add(JavaParser.parse("class B{}")); 62 vList.addAll(2, list); 63 vList.add(JavaParser.parse("class C{}")); 64 for (int i = 0; i < list.size(); i++) 65 assertEquals(list.get(i), vList.get(2 + i)); 66 } 67 68 @Test 69 public void visitorListContains() { 70 CompilationUnit x1 = JavaParser.parse("class X{}"); 71 VisitorList<CompilationUnit> list = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 72 new ObjectIdentityEqualsVisitor()); 73 list.add(x1); 74 assertTrue(list.contains(x1)); 75 } 76 77 @Test 78 public void visitorListContainsAll() { 79 List<CompilationUnit> list = new ArrayList<>(); 80 list.add(JavaParser.parse("class X{}")); 81 list.add(JavaParser.parse("class X{}")); 82 VisitorList<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 83 new ObjectIdentityEqualsVisitor()); 84 vList.addAll(list); 85 assertTrue(vList.size() == 2 && vList.containsAll(list)); 86 } 87 88 @Test 89 public void visitorListIterator() { 90 VisitorList<CompilationUnit> list = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 91 new ObjectIdentityEqualsVisitor()); 92 CompilationUnit x1 = JavaParser.parse("class X{}"); 93 list.add(x1); 94 CompilationUnit x2 = JavaParser.parse("class X{}"); 95 list.add(x2); 96 Iterator<CompilationUnit> itr = list.iterator(); 97 assertEquals(x1, itr.next()); 98 itr.remove(); 99 assertTrue(list.size() == 1); 100 assertEquals(x2, itr.next()); 101 itr.remove(); 102 assertTrue(list.size() == 0); 103 } 104 105 @Test 106 public void visitorListListIterator() { 107 VisitorList<CompilationUnit> list = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 108 new ObjectIdentityEqualsVisitor()); 109 list.add(JavaParser.parse("class X{}")); 110 list.add(JavaParser.parse("class X{}")); 111 CompilationUnit x1 = JavaParser.parse("class X{}"); 112 list.add(x1); 113 CompilationUnit x2 = JavaParser.parse("class X{}"); 114 list.add(x2); 115 Iterator<CompilationUnit> itr = list.listIterator(2); 116 assertEquals(x1, itr.next()); 117 itr.remove(); 118 assertTrue(list.size() == 3); 119 assertEquals(x2, itr.next()); 120 itr.remove(); 121 assertTrue(list.size() == 2); 122 } 123 124 @Test 125 public void visitorListRemove() { 126 CompilationUnit x1 = JavaParser.parse("class X{}"); 127 VisitorList<CompilationUnit> list = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 128 new ObjectIdentityEqualsVisitor()); 129 list.add(x1); 130 assertTrue(list.remove(x1)); 131 } 132 133 @Test 134 public void visitorListRemoveAll() { 135 List<CompilationUnit> list = new ArrayList<>(); 136 list.add(JavaParser.parse("class X{}")); 137 list.add(JavaParser.parse("class X{}")); 138 VisitorList<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 139 new ObjectIdentityEqualsVisitor()); 140 vList.addAll(list); 141 vList.removeAll(list); 142 assertTrue(vList.size() == 0); 143 } 144 145 @Test 146 public void visitorListRetainAll() { 147 List<CompilationUnit> list = new ArrayList<>(); 148 list.add(JavaParser.parse("class X{}")); 149 list.add(JavaParser.parse("class X{}")); 150 VisitorList<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 151 new ObjectIdentityEqualsVisitor()); 152 vList.addAll(list); 153 vList.add(JavaParser.parse("class X{}")); 154 vList.retainAll(list); 155 assertTrue(vList.size() == 2); 156 } 157 158 @Test 159 public void visitorListSubList() { 160 VisitorList<CompilationUnit> list = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 161 new ObjectIdentityEqualsVisitor()); 162 list.add(JavaParser.parse("class X{}")); 163 list.add(JavaParser.parse("class X{}")); 164 list.add(JavaParser.parse("class X{}")); 165 list.add(JavaParser.parse("class X{}")); 166 assertTrue(list.size() == 4); 167 List<CompilationUnit> subLst = list.subList(1, 3); 168 assertTrue(subLst.size() == 2); 169 subLst.add(JavaParser.parse("class X{}")); 170 assertTrue(subLst.size() == 3); 171 assertTrue(list.size() == 5); 172 173 } 174 175 @Test 176 public void visitorListToArray() { 177 List<CompilationUnit> list = new ArrayList<>(); 178 list.add(JavaParser.parse("class X{}")); 179 list.add(JavaParser.parse("class X{}")); 180 List<CompilationUnit> vList = new VisitorList<>(new ObjectIdentityHashCodeVisitor(), 181 new ObjectIdentityEqualsVisitor()); 182 vList.addAll(list); 183 for (CompilationUnit u : vList.toArray(new CompilationUnit[2])) 184 assertTrue(vList.contains(u)); 185 } 186 187 } 188