Home | History | Annotate | Download | only in utils
      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