001 /* 002 * Copyright 2002-2007 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.binding.value.support; 017 018 import java.util.Arrays; 019 020 import javax.swing.event.ListDataEvent; 021 import javax.swing.event.ListDataListener; 022 023 import junit.framework.TestCase; 024 025 import org.easymock.EasyMock; 026 027 /** 028 * Testcase for <code>ListListModel</code> 029 * 030 * @author Keith Donald 031 * @author Peter De Bruycker 032 */ 033 public class ListListModelTests extends TestCase { 034 035 private ListDataListener mockListener; 036 037 protected void setUp() throws Exception { 038 mockListener = (ListDataListener) EasyMock.createMock(ListDataListener.class); 039 } 040 041 public void testAddAllCollection() { 042 ListListModel model = new ListListModel(Arrays.asList(new Object[] { "1", "2", "3" })); 043 model.addListDataListener(mockListener); 044 045 mockListener.intervalAdded(eq(new ListDataEvent(model, ListDataEvent.INTERVAL_ADDED, 3, 5))); 046 EasyMock.replay(mockListener); 047 048 model.addAll(Arrays.asList(new Object[] { "4", "5", "6" })); 049 050 assertEquals(Arrays.asList(new Object[] { "1", "2", "3", "4", "5", "6" }), model); 051 052 EasyMock.verify(mockListener); 053 } 054 055 public void testRetainAll() { 056 ListListModel model = new ListListModel(Arrays.asList(new Object[] { "1", "2", "3", "4", "5" })); 057 model.addListDataListener(mockListener); 058 059 mockListener.contentsChanged(eq(new ListDataEvent(model, ListDataEvent.CONTENTS_CHANGED, -1, -1))); 060 EasyMock.replay(mockListener); 061 062 model.retainAll(Arrays.asList(new Object[] { "2", "5" })); 063 064 assertEquals(Arrays.asList(new Object[] { "2", "5" }), model); 065 066 EasyMock.verify(mockListener); 067 } 068 069 public void testRemoveAll() { 070 ListListModel model = new ListListModel(Arrays.asList(new Object[] { "1", "2", "3", "4", "5" })); 071 model.addListDataListener(mockListener); 072 073 mockListener.contentsChanged(eq(new ListDataEvent(model, ListDataEvent.CONTENTS_CHANGED, -1, -1))); 074 EasyMock.replay(mockListener); 075 076 model.removeAll(Arrays.asList(new Object[] { "2", "5" })); 077 078 assertEquals(Arrays.asList(new Object[] { "1", "3", "4" }), model); 079 080 EasyMock.verify(mockListener); 081 } 082 083 public void testRemove() { 084 ListListModel model = new ListListModel(Arrays.asList(new Object[] { "1", "2", "3" })); 085 model.addListDataListener(mockListener); 086 087 mockListener.intervalRemoved(eq(new ListDataEvent(model, ListDataEvent.INTERVAL_REMOVED, 1, 1))); 088 EasyMock.replay(mockListener); 089 090 model.remove(1); 091 092 assertEquals(Arrays.asList(new Object[] { "1", "3" }), model); 093 094 EasyMock.verify(mockListener); 095 } 096 097 public void testRemoveObject() { 098 ListListModel model = new ListListModel(Arrays.asList(new Object[] { "1", "2", "3" })); 099 model.addListDataListener(mockListener); 100 101 mockListener.intervalRemoved(eq(new ListDataEvent(model, ListDataEvent.INTERVAL_REMOVED, 1, 1))); 102 EasyMock.replay(mockListener); 103 104 model.remove("2"); 105 106 assertEquals(Arrays.asList(new Object[] { "1", "3" }), model); 107 108 EasyMock.verify(mockListener); 109 } 110 111 public static ListDataEvent eq(ListDataEvent expected) { 112 EasyMock.reportMatcher(new ListDataEventArgumentMatcher(expected)); 113 114 return null; 115 } 116 }