1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/*
2e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * this work for additional information regarding copyright ownership.
5e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * (the "License"); you may not use this file except in compliance with
7e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the License.  You may obtain a copy of the License at
8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes *
9e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes *
11e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Unless required by applicable law or agreed to in writing, software
12e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * See the License for the specific language governing permissions and
15e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * limitations under the License.
16e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */
17e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
18e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespackage tests.support;
19e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
20e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.Collection;
21e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.HashSet;
22e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.Iterator;
23e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.SortedSet;
24e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.TreeSet;
25e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport junit.framework.TestCase;
26e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
27e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespublic class Support_UnmodifiableCollectionTest extends TestCase {
28e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    Collection<Integer> col;
30e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    // must be a collection containing the Integers 0 to 99 (which will iterate
328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    // in order)
33e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public Support_UnmodifiableCollectionTest(String p1) {
358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super(p1);
368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
37e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public Support_UnmodifiableCollectionTest(String p1, Collection<Integer> c) {
398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super(p1);
408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        col = c;
418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
42e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    @Override
44e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes    public void runTest() {
45e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // contains
478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue("UnmodifiableCollectionTest - should contain 0", col
488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                .contains(new Integer(0)));
498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue("UnmodifiableCollectionTest - should contain 50", col
508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                .contains(new Integer(50)));
518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue("UnmodifiableCollectionTest - should not contain 100", !col
528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                .contains(new Integer(100)));
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // containsAll
558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        HashSet<Integer> hs = new HashSet<Integer>();
568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        hs.add(new Integer(0));
578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        hs.add(new Integer(25));
588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        hs.add(new Integer(99));
598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(
608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                "UnmodifiableCollectionTest - should contain set of 0, 25, and 99",
618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                col.containsAll(hs));
628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        hs.add(new Integer(100));
638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(
648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                "UnmodifiableCollectionTest - should not contain set of 0, 25, 99 and 100",
658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                !col.containsAll(hs));
668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // isEmpty
688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue("UnmodifiableCollectionTest - should not be empty", !col
698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                .isEmpty());
708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // iterator
728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Iterator<Integer> it = col.iterator();
738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        SortedSet<Integer> ss = new TreeSet<Integer>();
748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        while (it.hasNext()) {
758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            ss.add(it.next());
768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        it = ss.iterator();
788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        for (int counter = 0; it.hasNext(); counter++) {
798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            int nextValue = it.next().intValue();
808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            assertTrue(
818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    "UnmodifiableCollectionTest - Iterator returned wrong value.  Wanted: "
828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                            + counter + " got: " + nextValue,
838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    nextValue == counter);
848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // size
878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(
888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                "UnmodifiableCollectionTest - returned wrong size.  Wanted 100, got: "
898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        + col.size(), col.size() == 100);
908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // toArray
928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Object[] objArray;
938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        objArray = col.toArray();
948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        for (int counter = 0; it.hasNext(); counter++) {
958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            assertTrue(
968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    "UnmodifiableCollectionTest - toArray returned incorrect array",
978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    objArray[counter] == it.next());
988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // toArray (Object[])
1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        objArray = new Object[100];
1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        col.toArray(objArray);
1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        for (int counter = 0; it.hasNext(); counter++) {
1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            assertTrue(
1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    "UnmodifiableCollectionTest - toArray(Object) filled array incorrectly",
1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    objArray[counter] == it.next());
1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
110e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
111e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes}
112