1 /*
  2  * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  */
 23 
 24 /*
 25  * @test
 26  * @bug 4323074
 27  * @summary Basic test for Collections.indexOfSubList/lastIndexOfSubList

 28  */
 29 

 30 import java.util.ArrayList;
 31 import java.util.Arrays;
 32 import java.util.Collections;
 33 import java.util.LinkedList;
 34 import java.util.List;
 35 import java.util.Vector;
 36 
 37 public class FindSubList {

 38     public static void main(String[] args) throws Exception {
 39         int N = 500;
 40         List source = new ArrayList(3 * N);
 41         List[] target = new List[N+1];
 42         int[] index = new int[N+1];
 43         for (int i=0; i<=N; i++) {
 44             List t = new ArrayList();
 45             String s = Integer.toString(i, 2);
 46             for (int j=0, len = s.length(); j<len; j++)
 47                 t.add(s.charAt(j)=='1' ? "1" : "0");
 48             target[i] = t;
 49             if (i == N) {
 50                 index[i] = -1;
 51             } else {
 52                 index[i] = source.size();
 53                 source.addAll(t);
 54                 source.add("*");
 55             }
 56         }
 57 
 58         List[] src = {
 59             source,
 60             new LinkedList(source),
 61             new Vector(source),
 62             Arrays.asList(source.toArray())
 63         };
 64         for (int j=0; j<src.length; j++) {
 65             List s = src[j];
 66 
 67             for (int i=0; i<=N; i++) {
 68                 int idx = Collections.indexOfSubList(s, target[i]);
 69                 if (idx != index[i])
 70                     throw new Exception(s.getClass()+" indexOfSubList: " + i +
 71                                         "is " + idx + ", should be "+index[i]);
 72             }
 73 
 74             if (Collections.indexOfSubList(s,Collections.nCopies(2*s.size(),
 75                                                                  "0")) != -1)
 76                throw new Exception(s.getClass()+" indexOfSubList: big target");
 77 
 78         }
 79 
 80         Collections.reverse(source);
 81         int srcSize = source.size();
 82         for (int i=0; i<=N; i++) {
 83             Collections.reverse(target[i]);
 84             if (i != N)
 85                 index[i] = srcSize - index[i] - target[i].size();
 86         }
 87         List[] src2 = {
 88             source,
 89             new LinkedList(source),
 90             new Vector(source),
 91             Arrays.asList(source.toArray())
 92         };
 93         for (int j=0; j<src2.length; j++) {
 94             List s = src2[j];
 95 
 96             for (int i=0; i<=N; i++) {
 97                 int idx = Collections.lastIndexOfSubList(s, target[i]);
 98                 if (idx != index[i])
 99                     throw new Exception(s.getClass()+" lastIdexOfSubList: "+i +
100                                         "is " + idx + ", should be "+index[i]);
101             }
102             if (Collections.indexOfSubList(s,Collections.nCopies(2*s.size(),
103                                                                  "0")) != -1)
104               throw new Exception(s.getClass()+" lastIndexOfSubList: big tgt");
105         }







106     }
107 }
--- EOF ---