--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JList/6823603/bug6823603.java Mon Nov 23 20:57:17 2009 +0300
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ @bug 6823603
+ @summary Generics: JList
+ @author Florian Brunner
+ @run main bug6823603
+ */
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.awt.*;
+import javax.swing.*;
+
+public class bug6823603 {
+
+ private static final String TEST_ELEMENT = "Test1";
+
+ /**
+ * @param args the command line arguments
+ */
+ @SuppressWarnings("unchecked")
+ public static void main(String[] args) {
+ testRawSignatures();
+ testGenericSignatures();
+
+ testGetSelectedValuesList(); // new method
+ }
+
+ @SuppressWarnings("unchecked")
+ private static void testRawSignatures() {
+ // Test JList
+ ListModel rawTestModel = new DefaultListModel();
+
+ new JList();
+ new JList(rawTestModel);
+ new JList(new Object[]{TEST_ELEMENT});
+ JList rawTestList = new JList(new Vector());
+ rawTestList.getPrototypeCellValue();
+ rawTestList.setPrototypeCellValue(TEST_ELEMENT);
+ rawTestList.getCellRenderer();
+ rawTestList.setCellRenderer(new DefaultListCellRenderer());
+ rawTestList.getModel();
+ rawTestList.setModel(rawTestModel);
+ rawTestList.setListData(new Object[]{TEST_ELEMENT});
+ rawTestList.setListData(new Vector());
+
+ @SuppressWarnings("deprecation")
+ Object[] selectedValues = rawTestList.getSelectedValues();
+ rawTestList.getSelectedValue();
+
+ // Test ListCellRenderer
+ ListCellRenderer rawTestCellRenderer = new DefaultListCellRenderer();
+ String testEntry = "Test";
+ @SuppressWarnings("unchecked")
+ JList rawJList = new JList(new Object[]{testEntry});
+
+ rawTestCellRenderer.getListCellRendererComponent(rawJList,
+ testEntry, 0, true, true);
+
+ // Test ListModel
+ DefaultListModel testModel = new DefaultListModel();
+ testModel.addElement(TEST_ELEMENT);
+ rawTestModel = testModel;
+ rawTestModel.getElementAt(0);
+
+ // Test DefaultListModel
+ DefaultListModel defaultListModel = new DefaultListModel();
+
+ defaultListModel.addElement(TEST_ELEMENT);
+ defaultListModel.getElementAt(0);
+ defaultListModel.elements();
+ defaultListModel.elementAt(0);
+ defaultListModel.firstElement();
+ defaultListModel.lastElement();
+
+ String testElement2 = "Test2";
+
+ defaultListModel.setElementAt(testElement2, 0);
+ defaultListModel.insertElementAt(TEST_ELEMENT, 0);
+ defaultListModel.get(0);
+ defaultListModel.set(0, testElement2);
+ defaultListModel.add(0, TEST_ELEMENT);
+ defaultListModel.remove(0);
+
+ // Test AbstractListModel
+ @SuppressWarnings("serial")
+ ListModel abstractListModel = new AbstractListModel() {
+ public int getSize() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Object getElementAt(int index) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ };
+
+ // Test DefaultListCellRenderer
+ DefaultListCellRenderer cellRenderer = new DefaultListCellRenderer();
+
+ @SuppressWarnings("unchecked")
+ JList list = new JList(new Object[]{testEntry});
+
+ cellRenderer.getListCellRendererComponent(rawJList, testEntry, 0, true, true);
+ }
+
+ private static <E> void testGenericSignatures() {
+ // Test JList
+ ListModel<String> stringListModel = new DefaultListModel<String>();
+
+ new JList<String>();
+ new JList<String>(stringListModel);
+ new JList<String>(new String[]{TEST_ELEMENT});
+
+ JList<String> stringTestList = new JList<String>(new Vector<String>());
+
+ stringTestList.getPrototypeCellValue();
+ stringTestList.setPrototypeCellValue(TEST_ELEMENT);
+
+ ListCellRenderer<? super String> cellRenderer = stringTestList.getCellRenderer();
+
+ stringTestList.setCellRenderer(new DefaultListCellRenderer());
+
+ ListModel<String> model = stringTestList.getModel();
+
+ stringTestList.setModel(stringListModel);
+ stringTestList.setListData(new String[]{TEST_ELEMENT});
+ stringTestList.setListData(new Vector<String>());
+
+ @SuppressWarnings("deprecation")
+ Object[] selectedValues = stringTestList.getSelectedValues();
+
+ stringTestList.getSelectedValue();
+
+ // Test ListCellRenderer
+ ListCellRenderer<Object> stringTestCellRenderer =
+ new DefaultListCellRenderer();
+ String testEntry = "Test";
+ JList<String> stringJList = new JList<String>(new String[]{testEntry});
+
+ Component listCellRendererComponent2 =
+ stringTestCellRenderer.getListCellRendererComponent(stringJList,
+ testEntry, 0, true, true);
+
+ // Test ListModel
+ DefaultListModel<String> testModel = new DefaultListModel<String>();
+ testModel.addElement(TEST_ELEMENT);
+ stringListModel = testModel;
+
+ String element1 = stringListModel.getElementAt(0);
+
+ // Test DefaultListModel
+ DefaultListModel<String> stringTestModel = new DefaultListModel<String>();
+
+ stringTestModel.addElement(TEST_ELEMENT);
+ element1 = stringTestModel.getElementAt(0);
+ Enumeration<String> elements = stringTestModel.elements();
+ String element2 = stringTestModel.elementAt(0);
+ String firstElement = stringTestModel.firstElement();
+ String lastElement = stringTestModel.lastElement();
+
+ String testElement2 = "Test2";
+ stringTestModel.setElementAt(testElement2, 0);
+ stringTestModel.insertElementAt(TEST_ELEMENT, 0);
+ String element3 = stringTestModel.get(0);
+ String element4 = stringTestModel.set(0, testElement2);
+ stringTestModel.add(0, TEST_ELEMENT);
+ String removedElement = stringTestModel.remove(0);
+
+ // Test AbstractListModel
+ stringListModel = new AbstractListModel<String>() {
+
+ public int getSize() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String getElementAt(int index) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ };
+
+ @SuppressWarnings("serial")
+ ListModel<E> genericTestModel = new AbstractListModel<E>() {
+
+ public int getSize() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public E getElementAt(int index) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ };
+
+ // Test DefaultListCellRenderer
+ cellRenderer = new DefaultListCellRenderer();
+
+ stringJList = new JList<String>(new String[]{testEntry});
+
+ listCellRendererComponent2 = cellRenderer.getListCellRendererComponent(stringJList, testEntry, 0, true, true);
+ }
+
+ private static void testGetSelectedValuesList() {
+ Vector<Integer> data = new Vector<Integer>();
+ for (int i = 0; i < 10; i++) {
+ data.add(i);
+ }
+ JList<Integer> list = new JList<Integer>(data);
+ list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ list.setSelectedIndices(new int[]{1, 2, 3, 5, 6, 8});
+
+ @SuppressWarnings("deprecation")
+ Object[] expectedSelectedValues = list.getSelectedValues();
+ List<Integer> selectedValuesList = list.getSelectedValuesList();
+ assertEquals(expectedSelectedValues, selectedValuesList.toArray());
+ }
+
+ private static void assertEquals(Object[] expectedArray,
+ Object[] actualArray) {
+ if (!Arrays.equals(expectedArray, actualArray)) {
+ throw new RuntimeException("Expected: " + Arrays.toString(
+ expectedArray) + " but was: " + Arrays.toString(actualArray));
+ }
+ }
+}