/* * Copyright 2000-2013 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.client.ui.grid; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Comparator; import org.easymock.EasyMock; import org.junit.Test; import com.vaadin.client.data.DataChangeHandler; import com.vaadin.client.widget.grid.datasources.ListDataSource; public class ListDataSourceTest { @Test public void testDataSourceConstruction() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); assertEquals(4, ds.size()); assertEquals(0, (int) ds.getRow(0)); assertEquals(1, (int) ds.getRow(1)); assertEquals(2, (int) ds.getRow(2)); assertEquals(3, (int) ds.getRow(3)); ds = new ListDataSource<>(Arrays.asList(0, 1, 2, 3)); assertEquals(4, ds.size()); assertEquals(0, (int) ds.getRow(0)); assertEquals(1, (int) ds.getRow(1)); assertEquals(2, (int) ds.getRow(2)); assertEquals(3, (int) ds.getRow(3)); } @Test public void testListAddOperation() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); DataChangeHandler handler = EasyMock .createNiceMock(DataChangeHandler.class); ds.addDataChangeHandler(handler); handler.dataAdded(4, 1); EasyMock.expectLastCall(); EasyMock.replay(handler); ds.asList().add(4); assertEquals(5, ds.size()); assertEquals(0, (int) ds.getRow(0)); assertEquals(1, (int) ds.getRow(1)); assertEquals(2, (int) ds.getRow(2)); assertEquals(3, (int) ds.getRow(3)); assertEquals(4, (int) ds.getRow(4)); } @Test public void testListAddAllOperation() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); DataChangeHandler handler = EasyMock .createNiceMock(DataChangeHandler.class); ds.addDataChangeHandler(handler); handler.dataAdded(4, 3); EasyMock.expectLastCall(); EasyMock.replay(handler); ds.asList().addAll(Arrays.asList(4, 5, 6)); assertEquals(7, ds.size()); assertEquals(0, (int) ds.getRow(0)); assertEquals(1, (int) ds.getRow(1)); assertEquals(2, (int) ds.getRow(2)); assertEquals(3, (int) ds.getRow(3)); assertEquals(4, (int) ds.getRow(4)); assertEquals(5, (int) ds.getRow(5)); assertEquals(6, (int) ds.getRow(6)); } @Test public void testListRemoveOperation() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); DataChangeHandler handler = EasyMock .createNiceMock(DataChangeHandler.class); ds.addDataChangeHandler(handler); handler.dataRemoved(3, 1); EasyMock.expectLastCall(); EasyMock.replay(handler); ds.asList().remove(2); assertEquals(3, ds.size()); assertEquals(0, (int) ds.getRow(0)); assertEquals(1, (int) ds.getRow(1)); assertEquals(3, (int) ds.getRow(2)); } @Test public void testListRemoveAllOperation() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); DataChangeHandler handler = EasyMock .createNiceMock(DataChangeHandler.class); ds.addDataChangeHandler(handler); handler.dataRemoved(0, 3); EasyMock.expectLastCall(); EasyMock.replay(handler); ds.asList().removeAll(Arrays.asList(0, 2, 3)); assertEquals(1, ds.size()); assertEquals(1, (int) ds.getRow(0)); } @Test public void testListClearOperation() throws Exception { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); DataChangeHandler handler = EasyMock .createNiceMock(DataChangeHandler.class); ds.addDataChangeHandler(handler); handler.dataRemoved(0, 4); EasyMock.expectLastCall(); EasyMock.replay(handler); ds.asList().clear(); assertEquals(0, ds.size()); } @Test(expected = IllegalStateException.class) public void testFetchingNonExistantItem() { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); ds.ensureAvailability(5, 1); } @Test(expected = UnsupportedOperationException.class) public void testUnsupportedIteratorRemove() { ListDataSource<Integer> ds = new ListDataSource<>(0, 1, 2, 3); ds.asList().iterator().remove(); } @Test public void sortColumn() { ListDataSource<Integer> ds = new ListDataSource<>(3, 4, 2, 3, 1); // TODO Should be simplified to sort(). No point in providing these // trivial comparators. ds.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }); assertTrue(Arrays.equals(ds.asList().toArray(), new Integer[] { 1, 2, 3, 3, 4 })); } }