/******************************************************************************* * Copyright (c) 2012, 2014 EclipseSource and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.grid; import static org.eclipse.nebula.widgets.grid.GridTestUtil.createGridColumns; import static org.eclipse.nebula.widgets.grid.GridTestUtil.createGridItems; import static org.eclipse.nebula.widgets.grid.GridTestUtil.loadImage; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.nebula.widgets.grid.internal.NullScrollBarProxy; import org.eclipse.nebula.widgets.grid.internal.ScrollBarProxyAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.TreeListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Shell; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @SuppressWarnings( { "restriction", "deprecation" } ) public class Grid_Test { private Display display; private Shell shell; private Grid grid; private ScrollBar verticalBar; private ScrollBar horizontalBar; private List<Event> eventLog; @Before public void setUp() { display = Display.getDefault(); shell = new Shell( display ); //shell.setSize( 400, 200 ); // shell.setLayout( new FillLayout()); grid = new Grid( shell, SWT.H_SCROLL | SWT.V_SCROLL ); grid.setSize( 200, 200 ); // grid.setHeaderVisible( true ); verticalBar = grid.getVerticalBar(); horizontalBar = grid.getHorizontalBar(); eventLog = new ArrayList<Event>(); shell.pack(); shell.open(); while(display.readAndDispatch()); } @After public void tearDown() { // shell.dispose(); } @Test public void testGridCreation() { grid = new Grid( shell, SWT.NONE ); assertNotNull( grid ); assertTrue( grid.getHorizontalScrollBarProxy() instanceof NullScrollBarProxy ); assertNull( grid.getHorizontalBar() ); assertTrue( grid.getVerticalScrollBarProxy() instanceof NullScrollBarProxy ); assertNull( grid.getVerticalBar() ); assertEquals( 0, grid.getRootItemCount() ); } @Test public void testGridCreationWithScrollBars() { grid = new Grid( shell, SWT.H_SCROLL | SWT.V_SCROLL ); assertTrue( grid.getHorizontalScrollBarProxy() instanceof ScrollBarProxyAdapter ); assertFalse( grid.getHorizontalBar().isVisible() ); assertTrue( grid.getVerticalScrollBarProxy() instanceof ScrollBarProxyAdapter ); assertFalse( grid.getVerticalBar().isVisible() ); } @Test public void testStyle() { Grid grid = new Grid( shell, SWT.NONE ); assertTrue( ( grid.getStyle() & SWT.DOUBLE_BUFFERED ) != 0 ); grid = new Grid( shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER ); assertTrue( ( grid.getStyle() & SWT.H_SCROLL ) != 0 ); assertTrue( ( grid.getStyle() & SWT.V_SCROLL ) != 0 ); assertTrue( ( grid.getStyle() & SWT.BORDER ) != 0 ); grid = new Grid( shell, SWT.SINGLE | SWT.MULTI ); assertTrue( ( grid.getStyle() & SWT.SINGLE ) != 0 ); assertTrue( ( grid.getStyle() & SWT.MULTI ) != 0 ); grid = new Grid( shell, SWT.VIRTUAL | SWT.CHECK ); assertTrue( ( grid.getStyle() & SWT.VIRTUAL ) != 0 ); assertTrue( ( grid.getStyle() & SWT.CHECK ) != 0 ); } @Test public void testGetRootItemCount() { createGridItems( grid, 5, 1 ); assertEquals( 5, grid.getRootItemCount() ); } @Test public void testGetItemCount() { createGridItems( grid, 5, 1 ); assertEquals( 10, grid.getItemCount() ); } @Test public void testSetItemCount_MoreItems() { createGridItems( grid, 3, 3 ); grid.setItemCount( 15 ); assertEquals( 15, grid.getItemCount() ); assertEquals( 6, grid.getRootItemCount() ); } @Test public void testSetItemCount_LessItems() { GridItem[] items = createGridItems( grid, 3, 3 ); grid.setItemCount( 6 ); assertEquals( 6, grid.getItemCount() ); assertEquals( 2, grid.getRootItemCount() ); assertEquals( 1, items[ 4 ].getItemCount() ); } @Test public void testSetItemCount_NoChange() { GridItem[] items = createGridItems( grid, 3, 3 ); grid.setItemCount( 12 ); assertTrue( Arrays.equals( items, grid.getItems() ) ); } @Test public void testGetRootItems() { GridItem[] items = createGridItems( grid, 3, 1 ); GridItem[] rootItems = grid.getRootItems(); assertSame( items[ 0 ], rootItems[ 0 ] ); assertSame( items[ 2 ], rootItems[ 1 ] ); assertSame( items[ 4 ], rootItems[ 2 ] ); } @Test public void testGetItems() { GridItem[] items = createGridItems( grid, 3, 1 ); assertTrue( Arrays.equals( items, grid.getItems() ) ); } @Test public void testGetRootItem() { GridItem[] items = createGridItems( grid, 3, 1 ); assertSame( items[ 2 ], grid.getRootItem( 1 ) ); assertSame( items[ 4 ], grid.getRootItem( 2 ) ); } @Test( expected = IllegalArgumentException.class ) public void testGetRootItem_InvalidIndex() { createGridItems( grid, 3, 1 ); grid.getRootItem( 10 ); } @Test public void testGetItem() { GridItem[] items = createGridItems( grid, 3, 1 ); assertSame( items[ 1 ], grid.getItem( 1 ) ); assertSame( items[ 4 ], grid.getItem( 4 ) ); } @Test( expected = IllegalArgumentException.class ) public void testGetItem_InvalidIndex() { createGridItems( grid, 3, 1 ); grid.getItem( 10 ); } @Test( expected = IllegalArgumentException.class ) public void testGetItemByPoint_NullArgument() { createGridItems( grid, 3, 1 ); grid.getItem( null ); } @Test public void testGetItemByPoint() { GridItem[] items = createGridItems( grid, 10, 0 ); assertSame( items[ 2 ], grid.getItem( new Point( 10, items[ 2 ].getHeight() * 3 ) ) ); } @Test public void testGetItemByPoint_WithHeaderVisible() { grid.setHeaderVisible( true ); createGridColumns( grid, 1, SWT.NONE ); GridItem[] items = createGridItems( grid, 10, 0 ); assertSame( items[ 1 ], grid.getItem( new Point( 10, items[ 1 ].getHeight() * 3 ) ) ); } @Test public void testGetItemByPoint_WithinHeader() { grid.setHeaderVisible( true ); createGridColumns( grid, 1, SWT.NONE ); createGridItems( grid, 10, 0 ); assertNull( grid.getItem( new Point( 10, 20 ) ) ); } @Test public void testIndexOf() { GridItem[] items = createGridItems( grid, 3, 1 ); assertEquals( 1, grid.indexOf( items[ 1 ] ) ); assertEquals( 4, grid.indexOf( items[ 4 ] ) ); } @Test( expected = IllegalArgumentException.class ) public void testIndexOf_NullArgument() { grid.indexOf( ( GridItem )null ); } @Test public void testIndexOf_DifferentParent() { Grid otherGrid = new Grid( shell, SWT.NONE ); GridItem item = new GridItem( otherGrid, SWT.NONE ); assertEquals( -1, grid.indexOf( item ) ); } @Test public void testIndexOf_AfterDispose() { GridItem[] items = createGridItems( grid, 3, 1 ); items[ 2 ].dispose(); assertEquals( 1, grid.indexOf( items[ 1 ] ) ); assertEquals( 2, grid.indexOf( items[ 4 ] ) ); } @Test public void testGetColumnCount() { createGridColumns( grid, 5, SWT.NONE ); assertEquals( 5, grid.getColumnCount() ); } @Test public void testGetColumns() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertTrue( Arrays.equals( columns, grid.getColumns() ) ); } @Test public void testGetColumn() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertSame( columns[ 1 ], grid.getColumn( 1 ) ); assertSame( columns[ 4 ], grid.getColumn( 4 ) ); } @Test( expected = IllegalArgumentException.class ) public void testGetColumn_InvalidIndex() { createGridColumns( grid, 3, SWT.NONE ); grid.getColumn( 10 ); } @Test public void testIndexOfColumn() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertEquals( 1, grid.indexOf( columns[ 1 ] ) ); assertEquals( 4, grid.indexOf( columns[ 4 ] ) ); } @Test( expected = IllegalArgumentException.class ) public void testIndexOfColumn_NullArgument() { grid.indexOf( ( GridColumn )null ); } @Test public void testIndexOfColumn_DifferentParent() { Grid otherGrid = new Grid( shell, SWT.NONE ); GridColumn column = new GridColumn( otherGrid, SWT.NONE ); assertEquals( -1, grid.indexOf( column ) ); } @Test public void testIndexOfColumn_AfterDispose() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); columns[ 2 ].dispose(); assertEquals( 3, grid.indexOf( columns[ 4 ] ) ); } @Test public void testDispose() { grid.dispose(); assertTrue( grid.isDisposing() ); assertTrue( grid.isDisposed() ); } @Test public void testDispose_fireDisposeEventOnlyOnce() { Listener listener = mock( Listener.class ); grid.addListener( SWT.Dispose, listener ); grid.dispose(); verify( listener, times( 1 ) ).handleEvent( any( Event.class ) ); } @Test public void testDispose_WithItems() { GridItem[] items = createGridItems( grid, 1, 1 ); grid.dispose(); assertTrue( items[ 0 ].isDisposed() ); assertTrue( items[ 1 ].isDisposed() ); } @Test public void testDispose_WithColumns() { GridColumn[] columns = createGridColumns( grid, 2, SWT.NONE ); grid.dispose(); assertTrue( columns[ 0 ].isDisposed() ); assertTrue( columns[ 1 ].isDisposed() ); } @Test public void testSendDisposeEvent() { DisposeListener listener = mock( DisposeListener.class ); grid.addDisposeListener( listener ); grid.dispose(); verify( listener ).widgetDisposed( any( DisposeEvent.class ) ); } @Test public void testAddRemoveSelectionListener() { SelectionListener listener = mock( SelectionListener.class ); grid.addSelectionListener( listener ); assertTrue( grid.isListening( SWT.Selection ) ); assertTrue( grid.isListening( SWT.DefaultSelection ) ); grid.removeSelectionListener( listener ); assertFalse( grid.isListening( SWT.Selection ) ); assertFalse( grid.isListening( SWT.DefaultSelection ) ); } @Test public void testAddRemoveTreeListener() { TreeListener listener = mock( TreeListener.class ); grid.addTreeListener( listener ); assertTrue( grid.isListening( SWT.Expand ) ); assertTrue( grid.isListening( SWT.Collapse ) ); grid.removeTreeListener( listener ); assertFalse( grid.isListening( SWT.Expand ) ); assertFalse( grid.isListening( SWT.Collapse ) ); } @Test public void testClearAll() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 4 ].setText( "root" ); // Note: The parameter allChildren has no effect as all items (not only rootItems) are cleared grid.clearAll( false ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "", items[ 4 ].getText() ); } @Test public void testClearByIndex() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 4 ].setText( "root" ); grid.clear( 0, false ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "bar", items[ 1 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test public void testClearByIndex_AllChildren() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 4 ].setText( "root" ); grid.clear( 0, true ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test( expected = IllegalArgumentException.class ) public void testClearByIndex_InvalidIndex() { createGridItems( grid, 3, 3 ); grid.clear( 20, false ); } @Test public void testClearByIndexRange() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 3 ].setText( "sub" ); items[ 4 ].setText( "root" ); grid.clear( 0, 2, false ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "sub", items[ 3 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test public void testClearByIndexRange_AllChildren() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "first" ); items[ 1 ].setText( "foo" ); items[ 4 ].setText( "root" ); items[ 5 ].setText( "bar" ); items[ 7 ].setText( "sub" ); grid.clear( 1, 4, true ); assertEquals( "first", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "", items[ 4 ].getText() ); assertEquals( "", items[ 5 ].getText() ); assertEquals( "", items[ 7 ].getText() ); } @Test( expected = IllegalArgumentException.class ) public void testClearByIndexRange_InvalidIndex1() { createGridItems( grid, 3, 3 ); grid.clear( -1, 4, false ); } @Test( expected = IllegalArgumentException.class ) public void testClearByIndexRange_InvalidIndex2() { createGridItems( grid, 3, 3 ); grid.clear( 1, 20, false ); } @Test public void testClearByIndexRange_InvalidIndex3() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 3 ].setText( "sub" ); items[ 4 ].setText( "root" ); grid.clear( 4, 1, false ); assertEquals( "foo", items[ 0 ].getText() ); assertEquals( "bar", items[ 1 ].getText() ); assertEquals( "sub", items[ 3 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test public void testClearByIndices() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 3 ].setText( "sub" ); items[ 4 ].setText( "root" ); grid.clear( new int[] { 0, 1 }, false ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "sub", items[ 3 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test public void testClearByIndices_AllChildren() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); items[ 1 ].setText( "bar" ); items[ 3 ].setText( "sub" ); items[ 4 ].setText( "root" ); grid.clear( new int[] { 0, 1 }, true ); assertEquals( "", items[ 0 ].getText() ); assertEquals( "", items[ 1 ].getText() ); assertEquals( "", items[ 3 ].getText() ); assertEquals( "root", items[ 4 ].getText() ); } @Test public void testClearByIndices_NullArgument() { createGridItems( grid, 3, 3 ); try { grid.clear( null, false ); } catch( IllegalArgumentException expected ) { } } @Test public void testClearByIndices_InvalidIndex() { createGridItems( grid, 3, 3 ); try { grid.clear( new int[] { 0, 20 }, false ); } catch( IllegalArgumentException expected ) { } } @Test public void testSendSetDataEventAfterClear() { grid = new Grid( shell, SWT.VIRTUAL ); GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setText( "foo" ); // Mark SetData event as fired items[ 0 ].getText(); grid.addListener( SWT.SetData, new Listener() { public void handleEvent( Event event ) { GridItem item = ( GridItem )event.item; item.setText( "bar" ); } } ); grid.clear( 0, false ); assertEquals( "bar", items[ 0 ].getText() ); } @Test public void testClearWithColumns() { grid = new Grid( shell, SWT.VIRTUAL ); GridItem[] items = createGridItems( grid, 3, 3 ); createGridColumns( grid, 3, SWT.NONE ); items[ 1 ].setText( 0, "item 1.0" ); items[ 1 ].setText( 1, "item 1.1" ); items[ 1 ].setText( 2, "item 1.2" ); grid.clear( 1, false ); assertEquals( "", items[ 1 ].getText( 0 ) ); assertEquals( "", items[ 1 ].getText( 1 ) ); assertEquals( "", items[ 1 ].getText( 2 ) ); } @Test public void testGetSelectionEnabled_Initial() { assertTrue( grid.getSelectionEnabled() ); } @Test public void testGetSelectionEnabled() { grid.setSelectionEnabled( false ); assertFalse( grid.getSelectionEnabled() ); } @Test public void testSetSelectionEnabled_ClearSelectedItems() { createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.setSelectionEnabled( false ); assertEquals( 0, grid.getSelectionCount() ); } @Test public void testGetSelectionCount_Initial() { assertEquals( 0, grid.getSelectionCount() ); } @Test public void testGetSelectionCount() { createGridItems( grid, 3, 0 ); grid.select( 0 ); assertEquals( 1, grid.getSelectionCount() ); } @Test public void testGetSelection_Initial() { assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testGetSelection() { createGridItems( grid, 3, 0 ); grid.select( 0 ); assertSame( grid.getItem( 0 ), grid.getSelection()[ 0 ] ); } @Test public void testGetSelection_AfterDisposeItem() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); items[ 2 ].dispose(); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndex_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.select( 2 ); GridItem[] expected = new GridItem[] { items[ 2 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndex_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.select( 2 ); GridItem[] expected = new GridItem[] { items[ 0 ], items[ 2 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndex_WithSelectionDisabled() { grid.setSelectionEnabled( false ); createGridItems( grid, 3, 0 ); grid.select( 0 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectByIndex_WithInvalidIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.select( 5 ); GridItem[] expected = new GridItem[] { items[ 0 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndex_Twice() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.select( 0 ); GridItem[] expected = new GridItem[] { items[ 0 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByRange_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 1 ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByRange_SingleWithDifferentSrartEnd() { grid = new Grid( shell, SWT.SINGLE ); createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectByRange_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByRange_WithSelectionDisabled() { grid = new Grid( shell, SWT.MULTI ); grid.setSelectionEnabled( false ); createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectByRange_StartBiggerThanEnd() { grid = new Grid( shell, SWT.MULTI ); createGridItems( grid, 5, 0 ); grid.select( 3, 1 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectByIndices_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( new int[] { 1 } ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndices_SingleWithMultipleIndices() { grid = new Grid( shell, SWT.SINGLE ); createGridItems( grid, 5, 0 ); grid.select( new int[] { 1, 2, 3 } ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectByIndices_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( new int[] { 1, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test( expected = IllegalArgumentException.class ) public void testSelectByIndices_NullArgument() { grid = new Grid( shell, SWT.MULTI ); grid.select( null ); } @Test public void testSelectByIndices_InvalidIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( new int[] { 1, 55, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectByIndices_DuplicateIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( new int[] { 1, 2, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectAll_Single() { grid = new Grid( shell, SWT.SINGLE ); createGridItems( grid, 5, 0 ); grid.selectAll(); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSelectAll_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.selectAll(); GridItem[] expected = new GridItem[] { items[ 0 ], items[ 1 ], items[ 2 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSelectAll_AfterSelect() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 1 ); grid.selectAll(); GridItem[] expected = new GridItem[] { items[ 0 ], items[ 1 ], items[ 2 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndex() { GridItem[] items = createGridItems( grid, 3, 0 ); grid.setSelection( 1 ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndex_ClearPreviousSelection() { GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 0 ); grid.setSelection( 1 ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndex_WithSelectionDisabled() { grid.setSelectionEnabled( false ); createGridItems( grid, 3, 0 ); grid.setSelection( 0 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByIndex_WithInvalidIndex() { createGridItems( grid, 3, 0 ); grid.setSelection( 5 ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByRange_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( 1, 1 ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByRange_SingleWithDifferentSrartEnd() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( 1, 3 ); GridItem[] expected = new GridItem[] { items[ 0 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByRange_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( 1, 3 ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByRange_WithSelectionDisabled() { grid = new Grid( shell, SWT.MULTI ); grid.setSelectionEnabled( false ); createGridItems( grid, 5, 0 ); grid.setSelection( 1, 3 ); assertTrue( Arrays.equals( new Grid[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByRange_StartBiggerThanEnd() { grid = new Grid( shell, SWT.MULTI ); createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( 3, 1 ); assertTrue( Arrays.equals( new Grid[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByIndices_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( new int[] { 1 } ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndices_SingleWithMultipleIndices() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( new int[] { 1, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 0 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndices_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( new int[] { 1, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test( expected = IllegalArgumentException.class ) public void testSetSelectionByIndices_NullArgument() { grid.setSelection( ( int[] )null ); } @Test public void testSetSelectionByIndices_InvalidIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new int[] { 1, 55, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByIndices_DuplicateIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new int[] { 1, 2, 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByItems_Single() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new GridItem[] { items[ 1 ] } ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByItems_SingleWithMultipleItems() { grid = new Grid( shell, SWT.SINGLE ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] } ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByItems_WithSelectionDisabled() { grid.setSelectionEnabled( false ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] } ); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testSetSelectionByItems_Multi() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 0 ); grid.setSelection( new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test( expected = IllegalArgumentException.class ) public void testSetSelectionByItems_NullArgument() { grid.setSelection( ( GridItem[] )null ); } @Test public void testSetSelectionByItems_NullItem() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.setSelection( new GridItem[] { items[ 1 ], null, items[ 3 ] } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testSetSelectionByItems_ItemWithDifferentParent() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); Grid otherGrid = new Grid( shell, SWT.NONE ); GridItem otherItem = new GridItem( otherGrid, SWT.NONE ); grid.setSelection( new GridItem[] { items[ 1 ], otherItem, items[ 3 ] } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test( expected = IllegalArgumentException.class ) public void testSetSelectionByItems_DisposedItem() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); items[ 2 ].dispose(); grid.setSelection( new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] } ); } @Test public void testDeselectByIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); grid.deselect( 2 ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByIndex_InvalidIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 3 ); grid.deselect( 10 ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 2 ], items[ 3 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByRange() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselect( 2, 3 ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 4 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByRange_OutOfItemsSize() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselect( 2, 12 ); GridItem[] expected = new GridItem[] { items[ 1 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByIndices() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselect( new int[] { 2, 3 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 4 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByIndices_NullArgument() { try { grid.deselect( null ); } catch( IllegalArgumentException expected ) { } } @Test public void testDeselectByIndices_DuplicateIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselect( new int[] { 2, 3, 2 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 4 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectByIndices_InvalidIndex() { grid = new Grid( shell, SWT.MULTI ); GridItem[] items = createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselect( new int[] { 2, 3, 14 } ); GridItem[] expected = new GridItem[] { items[ 1 ], items[ 4 ] }; assertTrue( Arrays.equals( expected, grid.getSelection() ) ); } @Test public void testDeselectAll() { grid = new Grid( shell, SWT.MULTI ); createGridItems( grid, 5, 0 ); grid.select( 1, 4 ); grid.deselectAll(); assertTrue( Arrays.equals( new GridItem[ 0 ], grid.getSelection() ) ); } @Test public void testRemoveByIndex() { createGridItems( grid, 3, 3 ); grid.remove( 4 ); assertEquals( 8, grid.getItemCount() ); assertEquals( 2, grid.getRootItemCount() ); } @Test( expected = IllegalArgumentException.class ) public void testRemoveByIndex_InvalidIndex() { grid.remove( 50 ); } @Test public void testRemoveByIndex_RemoveFromSelection() { createGridItems( grid, 3, 3 ); grid.select( 6 ); grid.remove( 4 ); assertEquals( 0, grid.getSelectionCount() ); } @Test public void testRemoveByRange() { createGridItems( grid, 3, 3 ); grid.remove( 3, 9 ); assertEquals( 3, grid.getItemCount() ); assertEquals( 1, grid.getRootItemCount() ); } @Test( expected = IllegalArgumentException.class ) public void testRemoveByRange_InvalidRange() { createGridItems( grid, 3, 3 ); grid.remove( 3, 60 ); } @Test public void testRemoveByIndices() { createGridItems( grid, 3, 3 ); grid.remove( new int[] { 3, 5, 8 } ); assertEquals( 6, grid.getItemCount() ); assertEquals( 2, grid.getRootItemCount() ); } @Test( expected = IllegalArgumentException.class ) public void testRemoveByIndices_NullArgument() { grid.remove( null ); } @Test public void testRemoveByIndices_DuplicateIndex() { createGridItems( grid, 3, 3 ); grid.remove( new int[] { 3, 5, 3 } ); assertEquals( 10, grid.getItemCount() ); assertEquals( 3, grid.getRootItemCount() ); } @Test( expected = IllegalArgumentException.class ) public void testRemoveByIndices_InvalidIndex() { createGridItems( grid, 3, 3 ); grid.remove( new int[] { 3, 5, 100 } ); } @Test public void testRemoveAll() { createGridItems( grid, 3, 3 ); grid.removeAll(); assertEquals( 0, grid.getItemCount() ); assertEquals( 0, grid.getRootItemCount() ); } @Test public void testGetSelectionIndex() { grid = new Grid( shell, SWT.MULTI ); createGridItems( grid, 3, 3 ); int indicies[] = new int[] { 3, 4, 1, 7 }; grid.setSelection( indicies ); assertEquals( 3, grid.getSelectionIndex() ); } @Test public void testGetSelectionIndex_WithoutSelection() { assertEquals( -1, grid.getSelectionIndex() ); } @Test public void testGetSelectionIndicies() { grid = new Grid( shell, SWT.MULTI ); createGridItems( grid, 3, 3 ); int indicies[] = new int[] { 3, 4, 1, 7 }; grid.setSelection( indicies ); assertTrue( Arrays.equals( indicies, grid.getSelectionIndices() ) ); } @Test public void testGetSelectionIndicies_WithoutSelection() { assertTrue( Arrays.equals( new int[ 0 ], grid.getSelectionIndices() ) ); } @Test public void testIsSelectedByIndex_Initial() { createGridItems( grid, 3, 0 ); assertFalse( grid.isSelected( 0 ) ); assertFalse( grid.isSelected( 1 ) ); assertFalse( grid.isSelected( 2 ) ); } @Test public void testIsSelectedByIndex() { createGridItems( grid, 3, 0 ); grid.select( 1 ); assertFalse( grid.isSelected( 0 ) ); assertTrue( grid.isSelected( 1 ) ); assertFalse( grid.isSelected( 2 ) ); } @Test public void testIsSelectedByIndex_InvalidIndex() { createGridItems( grid, 3, 0 ); assertFalse( grid.isSelected( 5 ) ); } @Test public void testIsSelectedByItem_Initial() { GridItem[] items = createGridItems( grid, 3, 0 ); assertFalse( grid.isSelected( items[ 0 ] ) ); assertFalse( grid.isSelected( items[ 1 ] ) ); assertFalse( grid.isSelected( items[ 2 ] ) ); } @Test public void testIsSelectedByItem() { GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 1 ); assertFalse( grid.isSelected( items[ 0 ] ) ); assertTrue( grid.isSelected( items[ 1 ] ) ); assertFalse( grid.isSelected( items[ 2 ] ) ); } @Test( expected = IllegalArgumentException.class ) public void testIsSelectedByItem_NullArgument() { grid.isSelected( null ); } @Test public void testIsSelectedByItem_DisposedItem() { GridItem[] items = createGridItems( grid, 3, 0 ); grid.select( 1 ); items[ 1 ].dispose(); assertFalse( grid.isSelected( items[ 1 ] ) ); } @Test public void testGetHeaderVisible_Initial() { assertFalse( grid.getHeaderVisible() ); } @Test public void testSetHeaderVisible() { grid.setHeaderVisible( true ); assertTrue( grid.getHeaderVisible() ); } @Test public void testGetFooterVisible_Initial() { assertFalse( grid.getFooterVisible() ); } @Test public void testSetFooterVisible() { grid.setFooterVisible( true ); assertTrue( grid.getFooterVisible() ); } @Test public void testGetLinesVisible_Initial() { assertTrue( grid.getLinesVisible() ); } @Test public void testGetLinesVisible() { grid.setLinesVisible( false ); assertFalse( grid.getLinesVisible() ); } @Test public void testGetFocusItem_Initial() { assertNull( grid.getFocusItem() ); } @Test public void testSetFocusItem() { GridItem[] items = createGridItems( grid, 3, 3 ); grid.setFocusItem( items[ 4 ] ); assertSame( items[ 4 ], grid.getFocusItem() ); } @Test( expected = IllegalArgumentException.class ) public void testSetFocusItem_NullArgument() { grid.setFocusItem( null ); } @Test( expected = IllegalArgumentException.class ) public void testSetFocusItem_DisposedItem() { GridItem item = new GridItem( grid, SWT.NONE ); item.dispose(); grid.setFocusItem( item ); } @Test( expected = IllegalArgumentException.class ) public void testSetFocusItem_WithOtherParent() { Grid otherGrid = new Grid( shell, SWT.NONE ); GridItem item = new GridItem( otherGrid, SWT.NONE ); grid.setFocusItem( item ); } @Test( expected = IllegalArgumentException.class ) public void testSetFocusItem_InvisibleItem() { GridItem[] items = createGridItems( grid, 3, 3 ); grid.setFocusItem( items[ 2 ] ); } @Test public void testGetColumnOrder_Initial() { createGridColumns( grid, 5, SWT.NONE ); assertTrue( Arrays.equals( new int[] { 0, 1, 2, 3, 4 }, grid.getColumnOrder() ) ); } @Test public void testSetColumnOrder() { createGridColumns( grid, 5, SWT.NONE ); int[] order = new int[] { 4, 1, 3, 2, 0 }; grid.setColumnOrder( order ); assertTrue( Arrays.equals( order, grid.getColumnOrder() ) ); } @Test( expected = IllegalArgumentException.class ) public void testSetColumnOrder_NullArgument() { grid.setColumnOrder( null ); } @Test( expected = IllegalArgumentException.class ) public void testSetColumnOrder_DifferentArraySize() { createGridColumns( grid, 5, SWT.NONE ); int[] order = new int[] { 4, 1, 3, 2, 0, 6 }; grid.setColumnOrder( order ); } @Test( expected = IllegalArgumentException.class ) public void testSetColumnOrder_InvalidColumnIndex() { createGridColumns( grid, 5, SWT.NONE ); int[] order = new int[] { 4, 1, 33, 2, 0 }; grid.setColumnOrder( order ); } @Test( expected = IllegalArgumentException.class ) public void testSetColumnOrder_DuplicateColumnIndex() { createGridColumns( grid, 5, SWT.NONE ); int[] order = new int[] { 3, 1, 3, 2, 0 }; grid.setColumnOrder( order ); } @Test( expected = IllegalArgumentException.class ) public void testSetColumnOrder_MoveToColumnGroup() { createGridColumns( grid, 2, SWT.NONE ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); createGridColumns( group, 2, SWT.NONE ); createGridColumns( grid, 2, SWT.NONE ); grid.setColumnOrder( new int[] { 1, 2, 0, 3, 4, 5 } ); } @Test public void testSetColumnOrder_MoveInSameColumnGroup() { createGridColumns( grid, 2, SWT.NONE ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); createGridColumns( group, 2, SWT.NONE ); createGridColumns( grid, 2, SWT.NONE ); int[] order = new int[] { 0, 1, 3, 2, 4, 5 }; grid.setColumnOrder( order ); assertTrue( Arrays.equals( order, grid.getColumnOrder() ) ); } @Test public void testGetColumnOrder_AfterColumnAdd() { createGridColumns( grid, 5, SWT.NONE ); grid.setColumnOrder( new int[] { 4, 1, 3, 2, 0 } ); new GridColumn( grid, SWT.NONE, 2 ); int[] expected = new int[] { 5, 1, 2, 4, 3, 0 }; assertTrue( Arrays.equals( expected, grid.getColumnOrder() ) ); } @Test public void testGetColumnOrder_AfterColumnRemove() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); grid.setColumnOrder( new int[] { 4, 1, 3, 2, 0 } ); columns[ 3 ].dispose(); int[] expected = new int[] { 3, 1, 2, 0 }; assertTrue( Arrays.equals( expected, grid.getColumnOrder() ) ); } @Test public void testGetColumnOrder_UpdatePrimaryCheckColumn() { grid = new Grid( shell, SWT.CHECK ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); grid.setColumnOrder( new int[] { 2, 0, 1 } ); assertTrue( columns[ 2 ].isCheck() ); } @Test public void testGetNextVisibleItem_CollapsedItem() { GridItem[] items = createGridItems( grid, 3, 3 ); assertSame( items[ 8 ], grid.getNextVisibleItem( items[ 4 ] ) ); } @Test public void testGetNextVisibleItem_ExpandedItem() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 4 ].setExpanded( true ); assertSame( items[ 5 ], grid.getNextVisibleItem( items[ 4 ] ) ); } @Test public void testGetNextVisibleItem_NullArgument() { GridItem[] items = createGridItems( grid, 3, 3 ); assertSame( items[ 0 ], grid.getNextVisibleItem( null ) ); } @Test public void testGetNextVisibleItem_LastItem() { GridItem[] items = createGridItems( grid, 3, 3 ); assertNull( grid.getNextVisibleItem( items[ 11 ] ) ); } @Test public void testGetNextVisibleItem_AllNextNotVisible() { GridItem[] items = createGridItems( grid, 3, 3 ); assertNull( grid.getNextVisibleItem( items[ 8 ] ) ); } @Test public void testGetPreviousVisibleItem_CollapsedItem() { GridItem[] items = createGridItems( grid, 3, 3 ); assertSame( items[ 0 ], grid.getPreviousVisibleItem( items[ 4 ] ) ); } @Test public void testGetPreviousVisibleItem_ExpandedItem() { GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setExpanded( true ); assertSame( items[ 3 ], grid.getPreviousVisibleItem( items[ 4 ] ) ); } @Test public void testGetPreviousVisibleItem_NullArgument() { GridItem[] items = createGridItems( grid, 3, 3 ); assertSame( items[ 8 ], grid.getPreviousVisibleItem( null ) ); } @Test public void testGetPreviousVisibleItem_FirstItem() { GridItem[] items = createGridItems( grid, 3, 3 ); assertNull( grid.getPreviousVisibleItem( items[ 0 ] ) ); } @Test public void testGetNextVisibleColumn_NextNotVisible() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); columns[ 3 ].setVisible( false ); assertSame( columns[ 4 ], grid.getNextVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetNextVisibleColumn_NextVisible() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertSame( columns[ 3 ], grid.getNextVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetNextVisibleColumn_NullArgument() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertSame( columns[ 0 ], grid.getNextVisibleColumn( null ) ); } @Test public void testGetNextVisibleColumn_LastColumn() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertNull( grid.getNextVisibleColumn( columns[ 4 ] ) ); } @Test public void testGetNextVisibleColumn_AllNextNotVisible() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); columns[ 3 ].setVisible( false ); columns[ 4 ].setVisible( false ); assertNull( grid.getNextVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetNextVisibleColumn_WithColumnOrder() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); grid.setColumnOrder( new int[] { 4, 0, 2, 1, 3 } ); assertSame( columns[ 1 ], grid.getNextVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetPreviousVisibleColumn_PreviousNotVisible() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); columns[ 1 ].setVisible( false ); assertSame( columns[ 0 ], grid.getPreviousVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetPreviousVisibleColumn_PreviousVisible() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertSame( columns[ 1 ], grid.getPreviousVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetPreviousVisibleColumn_NullArgument() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertSame( columns[ 4 ], grid.getPreviousVisibleColumn( null ) ); } @Test public void testGetPreviousVisibleColumn_FirstColumn() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); assertNull( grid.getPreviousVisibleColumn( columns[ 0 ] ) ); } @Test public void testGetPreviousVisibleColumn_WithColumnOrder() { GridColumn[] columns = createGridColumns( grid, 5, SWT.NONE ); grid.setColumnOrder( new int[] { 4, 0, 2, 1, 3 } ); assertSame( columns[ 0 ], grid.getPreviousVisibleColumn( columns[ 2 ] ) ); } @Test public void testGetItemHeight_Initial() { assertEquals( 27, grid.getItemHeight() ); } @Test public void testGetItemHeight() { grid.setItemHeight( 30 ); assertEquals( 30, grid.getItemHeight() ); } @Test public void testGetItemHeight_AfterFontChange() { // fill the cache grid.getItemHeight(); Font font = new Font( display, "Arial", 20, SWT.BOLD ); grid.setFont( font ); assertEquals( 33, grid.getItemHeight() ); } @Test public void testGetItemHeight_MinHeight() { Font font = new Font( display, "Arial", 8, SWT.NORMAL ); grid.setFont( font ); assertEquals( 16, grid.getItemHeight() ); } @Test public void testGetItemHeight_WithGridCheck() { grid = new Grid( shell, SWT.CHECK ); assertEquals( 30, grid.getItemHeight() ); } @Test public void testGetItemHeight_WithItemImage() { createGridColumns( grid, 3, SWT.NONE ); GridItem item = new GridItem( grid, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); // fill the cache grid.getItemHeight(); item.setImage( 1, image ); assertEquals( 63, grid.getItemHeight() ); } @Test public void testGetItemHeight_AfterClearAll() { createGridColumns( grid, 3, SWT.NONE ); GridItem item = new GridItem( grid, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); item.setImage( 1, image ); grid.clearAll( true ); assertEquals( 27, grid.getItemHeight() ); } @Test public void testGetHeaderHeight_Initial() { createGridColumns( grid, 3, SWT.NONE ); assertEquals( 0, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setImage( image ); columns[ 1 ].setText( "foo" ); assertEquals( 67, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_WithColumnGroup() { grid.setHeaderVisible( true ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); GridColumn[] columns = createGridColumns( grid, 1, SWT.NONE ); columns[ 0 ].setImage( image ); columns[ 0 ].setText( "foo" ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); group.setImage( image ); group.setText( "foo" ); createGridColumns( group, 1, SWT.NONE ); assertEquals( 134, grid.getHeaderHeight() ); assertEquals( 67, grid.getGroupHeaderHeight() ); } @Test public void testGetHeaderHeight_DifferentColumnHeaderFonts() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 0 ].setHeaderFont( new Font( display, "Arial", 10, SWT.NORMAL ) ); columns[ 2 ].setHeaderFont( new Font( display, "Arial", 20, SWT.NORMAL ) ); assertEquals( 37, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_AfterColumnDispose() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setImage( image ); columns[ 1 ].setText( "foo" ); // fill the cache grid.getHeaderHeight(); columns[ 0 ].dispose(); assertEquals( 31, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_AfterTextChange() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setText( "foo" ); // fill the cache grid.getHeaderHeight(); columns[ 1 ].setText( "foo\nbar" ); assertEquals( 52, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_AfterImageChange() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setImage( image ); columns[ 1 ].setText( "foo" ); // fill the cache grid.getHeaderHeight(); columns[ 0 ].setImage( null ); assertEquals( 31, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_AfterFontChange() { grid.setHeaderVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setText( "foo" ); // fill the cache grid.getHeaderHeight(); columns[ 1 ].setHeaderFont( new Font( display, "Arial", 20, SWT.NORMAL ) ); assertEquals( 37, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_withWordWrap_withAutoHeight() { grid.setHeaderVisible( true ); grid.setAutoHeight( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setHeaderWordWrap( true ); columns[ 1 ].setText( "foo bar" ); assertEquals( 52, grid.getHeaderHeight() ); } @Test public void testGetHeaderHeight_withWordWrap_withoutAutoHeight() { grid.setHeaderVisible( true ); grid.setAutoHeight( false ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setHeaderWordWrap( true ); columns[ 1 ].setText( "foo bar" ); assertEquals( 31, grid.getHeaderHeight() ); } @Test public void testGetFooterHeight_Initial() { createGridColumns( grid, 3, SWT.NONE ); assertEquals( 0, grid.getFooterHeight() ); } @Test public void testGetFooterHeight() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setFooterImage( image ); columns[ 1 ].setFooterText( "foo" ); assertEquals( 67, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_DifferentColumnFooterFonts() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 0 ].setFooterFont( new Font( display, "Arial", 10, SWT.NORMAL ) ); columns[ 2 ].setFooterFont( new Font( display, "Arial", 20, SWT.NORMAL ) ); assertEquals( 21, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_AfterColumnDispose() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setFooterImage( image ); columns[ 1 ].setFooterText( "foo" ); // fill the cache grid.getFooterHeight(); columns[ 0 ].dispose(); assertEquals( 31, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_AfterTextChange() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setFooterText( "foo" ); // fill the cache grid.getFooterHeight(); columns[ 1 ].setFooterText( "foo\nbar" ); assertEquals( 52, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_AfterImageChange() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); columns[ 0 ].setFooterImage( image ); columns[ 1 ].setFooterText( "foo" ); // fill the cache grid.getFooterHeight(); columns[ 0 ].setFooterImage( null ); assertEquals( 31, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_AfterFontChange() { grid.setFooterVisible( true ); GridColumn[] columns = createGridColumns( grid, 3, SWT.NONE ); columns[ 1 ].setFooterText( "foo" ); // fill the cache grid.getFooterHeight(); columns[ 1 ].setFooterFont( new Font( display, "Arial", 20, SWT.NORMAL ) ); assertEquals( 37, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_wrapsText_withAutoHeight() { grid.setFooterVisible( true ); grid.setAutoHeight( true ); GridColumn column = new GridColumn( grid, SWT.NONE ); column.setWidth( 40 ); column.setHeaderWordWrap( true ); column.setFooterText( "foo bar" ); assertEquals( 52, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_doesNotWrapText_withoutAutoHeight() { grid.setFooterVisible( true ); grid.setAutoHeight( false ); GridColumn column = new GridColumn( grid, SWT.NONE ); column.setWidth( 40 ); column.setHeaderWordWrap( true ); column.setFooterText( "foo bar" ); assertEquals( 31, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_wrapsText_withFooterSpan() { grid.setFooterVisible( true ); grid.setAutoHeight( true ); GridColumn column1 = new GridColumn( grid, SWT.NONE ); column1.setWidth( 20 ); GridColumn column2 = new GridColumn( grid, SWT.NONE ); column2.setWidth( 20 ); column1.setHeaderWordWrap( true ); column1.setFooterText( "foo bar" ); column1.setData( "footerSpan", Integer.valueOf( 2 ) ); assertEquals( 52, grid.getFooterHeight() ); } @Test public void testGetFooterHeight_doesNotWrapText_withFooterSpanAndEnoughSpace() { grid.setFooterVisible( true ); grid.setAutoHeight( true ); GridColumn column1 = new GridColumn( grid, SWT.NONE ); column1.setWidth( 20 ); GridColumn column2 = new GridColumn( grid, SWT.NONE ); column2.setWidth( 100 ); column1.setHeaderWordWrap( true ); column1.setFooterText( "foofoo bar" ); column1.setData( "footerSpan", Integer.valueOf( 2 ) ); assertEquals( 35, grid.getFooterHeight() ); } @Test public void testGetGroupHeaderHeight_Initial() { createGridColumns( grid, 1, SWT.NONE ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); createGridColumns( group, 1, SWT.NONE ); assertEquals( 0, grid.getGroupHeaderHeight() ); } @Test public void testGetGroupHeaderHeight() { grid.setHeaderVisible( true ); createGridColumns( grid, 1, SWT.NONE ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); createGridColumns( group, 1, SWT.NONE ); Image image = loadImage( display, Fixture.IMAGE_100x50 ); group.setImage( image ); group.setText( "foo" ); assertEquals( 67, grid.getGroupHeaderHeight() ); } @Test public void testGetGroupHeaderHeight_wrapsText_withAutoHeight() { grid.setHeaderVisible( true ); grid.setAutoHeight( true ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); GridColumn column1 = new GridColumn( group, SWT.NONE ); column1.setWidth( 20 ); GridColumn column2 = new GridColumn( group, SWT.NONE ); column2.setWidth( 20 ); group.setHeaderWordWrap( true ); group.setText( "foo bar" ); assertEquals( 52, grid.getGroupHeaderHeight() ); } @Test public void testGetGroupHeaderHeight_doesNotWrapText_withoutAutoHeight() { grid.setHeaderVisible( true ); grid.setAutoHeight( false ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); GridColumn column1 = new GridColumn( group, SWT.NONE ); column1.setWidth( 20 ); GridColumn column2 = new GridColumn( group, SWT.NONE ); column2.setWidth( 20 ); group.setHeaderWordWrap( true ); group.setText( "foo bar" ); assertEquals( 31, grid.getGroupHeaderHeight() ); } @Test public void testComputeSize() { grid = new Grid( shell, SWT.NONE ); createGridColumns( grid, 3, SWT.NONE ); createGridItems( grid, 3, 3 ); int itemHeight = grid.getItemHeight(); Point preferredSize = grid.computeSize( SWT.DEFAULT, SWT.DEFAULT ); assertEquals( 120, preferredSize.x ); assertEquals( 3 * itemHeight, preferredSize.y ); } @Test public void testComputeSize_WithScrollBars() { createGridColumns( grid, 3, SWT.NONE ); createGridItems( grid, 3, 3 ); int itemHeight = grid.getItemHeight(); int scrollbarSize = 10; Point preferredSize = grid.computeSize( SWT.DEFAULT, SWT.DEFAULT ); assertEquals( 120 + scrollbarSize, preferredSize.x ); assertEquals( 3 * itemHeight + scrollbarSize, preferredSize.y ); } @Test public void testComputeSize_WithBorder() { grid = new Grid( shell, SWT.BORDER ); createGridColumns( grid, 3, SWT.NONE ); createGridItems( grid, 3, 3 ); int itemHeight = grid.getItemHeight(); int borderWidth = grid.getBorderWidth(); Point preferredSize = grid.computeSize( SWT.DEFAULT, SWT.DEFAULT ); assertEquals( 120 + 2 * borderWidth, preferredSize.x ); assertEquals( 3 * itemHeight + 2 * borderWidth, preferredSize.y ); } @Test public void testComputeSize_WithExpandedItems() { grid = new Grid( shell, SWT.NONE ); createGridColumns( grid, 3, SWT.NONE ); GridItem[] items = createGridItems( grid, 3, 3 ); items[ 0 ].setExpanded( true ); items[ 4 ].setExpanded( true ); int itemHeight = grid.getItemHeight(); Point preferredSize = grid.computeSize( SWT.DEFAULT, SWT.DEFAULT ); assertEquals( 120, preferredSize.x ); assertEquals( 9 * itemHeight, preferredSize.y ); } @Test public void testUpdateScrollBars_Initial() { doRedraw(); assertFalse( verticalBar.getVisible() ); assertEquals( 0, verticalBar.getSelection() ); assertEquals( 1, verticalBar.getMaximum() ); assertFalse( horizontalBar.getVisible() ); assertEquals( 0, horizontalBar.getSelection() ); assertEquals( 1, horizontalBar.getMaximum() ); } @Test public void testUpdateScrollBars() { createGridColumns( grid, 5, SWT.NONE ); createGridItems( grid, 20, 3 ); doRedraw(); assertTrue( verticalBar.getVisible() ); assertEquals( 0, verticalBar.getSelection() ); assertEquals( 20, verticalBar.getMaximum() ); assertTrue( horizontalBar.getVisible() ); assertEquals( 0, horizontalBar.getSelection() ); assertEquals( 300, horizontalBar.getMaximum() ); } @Test public void testUpdateScrollBars_OnColumnChange() { createGridColumns( grid, 4, SWT.NONE ); GridColumn column = new GridColumn( grid, SWT.NONE ); doRedraw(); assertTrue( horizontalBar.getVisible() ); column.dispose(); doRedraw(); assertFalse( horizontalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnColumnWidthChange() { createGridColumns( grid, 4, SWT.NONE ); grid.getColumn( 3 ).setWidth( 290 ); doRedraw(); assertTrue( horizontalBar.getVisible() ); grid.getColumn( 3 ).setWidth( 70 ); doRedraw(); assertFalse( horizontalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnItemExpandChange() { createGridItems( grid, 3, 10 ); grid.getItem( 0 ).setExpanded( true ); doRedraw(); assertTrue( verticalBar.getVisible() ); grid.getItem( 0 ).setExpanded( false ); doRedraw(); assertFalse( verticalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnResize() { createGridColumns( grid, 5, SWT.NONE ); createGridItems( grid, 10, 3 ); grid.setSize( 500, 500 ); doRedraw(); assertFalse( verticalBar.getVisible() ); assertFalse( horizontalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnHeaderVisible() { createGridColumns( grid, 1, SWT.NONE ); createGridItems( grid, 7, 3 ); grid.setHeaderVisible( true ); doRedraw(); assertTrue( verticalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnFooterVisible() { createGridColumns( grid, 1, SWT.NONE ); createGridItems( grid, 7, 3 ); grid.setFooterVisible( true ); doRedraw(); assertTrue( verticalBar.getVisible() ); } @Test public void testUpdateScrollBars_OnCollapseColumnGroup() { grid.setSize( 90, 100 ); GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); GridColumn[] columns = createGridColumns( group, 3, SWT.NONE ); columns[ 0 ].setDetail( false ); columns[ 1 ].setSummary( false ); group.setExpanded( false ); doRedraw(); assertFalse( horizontalBar.getVisible() ); } @Test public void testGetTopIndex_Initial() { createGridItems( grid, 20, 3 ); assertEquals( 0, grid.getTopIndex() ); } @Test public void testSetTopIndex() { createGridItems( grid, 20, 3 ); grid.setTopIndex( 4 ); assertEquals( 4, grid.getTopIndex() ); } @Test public void testSetTopIndex_InvisibleSubItem() { createGridItems( grid, 20, 3 ); grid.setTopIndex( 3 ); assertEquals( 0, grid.getTopIndex() ); } @Test public void testSetTopIndex_VisibleSubItem() { createGridItems( grid, 20, 3 ); grid.getItem( 4 ).setExpanded( true ); grid.setTopIndex( 6 ); assertEquals( 6, grid.getTopIndex() ); } @Test public void testSetTopIndex_AdjustTopIndex() { createGridItems( grid, 20, 0 ); grid.setTopIndex( 18 ); assertEquals( 13, grid.getTopIndex() ); } @Test public void testGetTopIndex_OnItemAdd() { createGridItems( grid, 20, 3 ); grid.setTopIndex( 12 ); new GridItem( grid, SWT.NONE, 0 ); assertEquals( 9, grid.getTopIndex() ); } @Test public void testGetTopIndex_DifferentItemHeight() { GridItem[] items = createGridItems( grid, 20, 0 ); items[ 16 ].setHeight( grid.getItemHeight() * 2 ); grid.setTopIndex( 18 ); assertEquals( 14, grid.getTopIndex() ); } @Test public void testAdjustTopIndexOnResize() { createGridItems( grid, 15, 3 ); grid.setTopIndex( 4 ); grid.setSize( 500, 500 ); assertEquals( 0, grid.getTopIndex() ); } @Test( expected = IllegalArgumentException.class ) public void testShowItem_NullArgument() { grid.showItem( null ); } @Test( expected = IllegalArgumentException.class ) public void testShowItem_DisposedItem() { GridItem item = new GridItem( grid, SWT.NONE ); item.dispose(); grid.showItem( item ); } @Test public void testShowItem_ScrollDown() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.showItem( items[ 40 ] ); assertEquals( 40, grid.getTopIndex() ); } @Test public void testShowItem_ScrollUp() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.setTopIndex( 12 ); grid.showItem( items[ 4 ] ); assertEquals( 4, grid.getTopIndex() ); } @Test public void testShowItem_NoScroll() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.setTopIndex( 12 ); grid.showItem( items[ 14 ] ); assertEquals( 12, grid.getTopIndex() ); } @Test public void testShowItem_SubItemScrollDown() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.showItem( items[ 41 ] ); assertEquals( 41, grid.getTopIndex() ); assertTrue( items[ 40 ].isExpanded() ); } @Test public void testShowItem_SubItemScrollUp() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.setTopIndex( 12 ); grid.showItem( items[ 5 ] ); assertEquals( 5, grid.getTopIndex() ); assertTrue( items[ 4 ].isExpanded() ); } @Test public void testShowItem_FireExpandEvent() { grid.addListener( SWT.Expand, new LoggingListener() ); GridItem[] items = createGridItems( grid, 20, 3 ); grid.showItem( items[ 41 ] ); assertEquals( 1, eventLog.size() ); assertSame( items[ 40 ], eventLog.get( 0 ).item ); } @Test( expected = IllegalArgumentException.class ) public void testShowColumn_NullArgument() { grid.showColumn( null ); } @Test( expected = IllegalArgumentException.class ) public void testShowColumn_DisposedColumn() { GridColumn column = new GridColumn( grid, SWT.NONE ); column.dispose(); grid.showColumn( column ); } @Test public void testShowColumn_ScrollRight() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); grid.showColumn( columns[ 4 ] ); assertEquals( 100, horizontalBar.getSelection() ); } @Test public void testShowColumn_ScrollLeft() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); horizontalBar.setSelection( 150 ); grid.showColumn( columns[ 2 ] ); assertEquals( 60, horizontalBar.getSelection() ); } @Test public void testShowColumn_NoScroll() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); horizontalBar.setSelection( 30 ); grid.showColumn( columns[ 2 ] ); assertEquals( 30, horizontalBar.getSelection() ); } @Test public void testShowColumn_FireExpandEvent() { GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); group.addListener( SWT.Collapse, new LoggingListener() ); GridColumn[] columns = createGridColumns( group, 10, SWT.NONE ); columns[ 0 ].setDetail( false ); columns[ 1 ].setSummary( false ); grid.showColumn( columns[ 0 ] ); assertEquals( 1, eventLog.size() ); assertSame( group, eventLog.get( 0 ).widget ); } @Test public void testShowSelection() { grid = new Grid( shell, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL ); grid.setSize( 200, 200 ); createGridItems( grid, 20, 3 ); grid.setSelection( new int[] { 4, 8, 24 } ); grid.setTopIndex( 12 ); grid.showSelection(); assertEquals( 4, grid.getTopIndex() ); } @Test public void testGetOrigin() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); GridItem[] items = createGridItems( grid, 20, 3 ); horizontalBar.setSelection( 150 ); grid.setTopIndex( 40 ); Point expected = new Point( -30, 2 * grid.getItemHeight() ); assertEquals( expected, grid.getOrigin( columns[ 3 ], items[ 48 ] ) ); } @Test public void testGetOrigin_SubItems() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); GridItem[] items = createGridItems( grid, 20, 3 ); items[ 40 ].setExpanded( true ); horizontalBar.setSelection( 150 ); grid.setTopIndex( 40 ); Point expected = new Point( -30, 5 * grid.getItemHeight() ); assertEquals( expected, grid.getOrigin( columns[ 3 ], items[ 48 ] ) ); } @Test public void testGetOrigin_HeaderVisible() { GridColumn[] columns = createGridColumns( grid, 10, SWT.NONE ); GridItem[] items = createGridItems( grid, 20, 3 ); horizontalBar.setSelection( 150 ); grid.setHeaderVisible( true ); grid.setTopIndex( 40 ); Point expected = new Point( -30, 2 * grid.getItemHeight() + grid.getHeaderHeight() ); assertEquals( expected, grid.getOrigin( columns[ 3 ], items[ 48 ] ) ); } @Test public void testIsShown() { GridItem[] items = createGridItems( grid, 20, 0 ); grid.setTopIndex( 5 ); assertTrue( grid.isShown( items[ 6 ] ) ); } @Test public void testIsShown_HiddenItem() { GridItem[] items = createGridItems( grid, 20, 0 ); grid.setTopIndex( 5 ); assertFalse( grid.isShown( items[ 4 ] ) ); } @Test public void testIsShown_InvisibleItem() { GridItem[] items = createGridItems( grid, 20, 3 ); grid.setTopIndex( 20 ); assertFalse( grid.isShown( items[ 22 ] ) ); } @Test public void testIsShown_PartlyVisibleItem() { GridItem[] items = createGridItems( grid, 20, 0 ); grid.setTopIndex( 7 ); assertTrue( grid.isShown( items[ 13 ] ) ); assertFalse( grid.isShown( items[ 14 ] ) ); } @Test public void testColumnGroup_Initial() { assertEquals( 0, grid.getColumnGroupCount() ); } @Test public void testGetColumnGroupCount_AddGroup() { new GridColumnGroup( grid, SWT.NONE ); assertEquals( 1, grid.getColumnGroupCount() ); } @Test public void testGetColumnGroupCount_RemoveGroup() { GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); group.dispose(); assertEquals( 0, grid.getColumnGroupCount() ); } @Test public void testGetColumnGroups() { GridColumnGroup group1 = new GridColumnGroup( grid, SWT.NONE ); GridColumnGroup group2 = new GridColumnGroup( grid, SWT.NONE ); GridColumnGroup[] expected = new GridColumnGroup[] { group1, group2 }; assertTrue( Arrays.equals( expected, grid.getColumnGroups() ) ); } @Test public void testGetColumnGroup() { GridColumnGroup group1 = new GridColumnGroup( grid, SWT.NONE ); GridColumnGroup group2 = new GridColumnGroup( grid, SWT.NONE ); assertSame( group1, grid.getColumnGroup( 0 ) ); assertSame( group2, grid.getColumnGroup( 1 ) ); } @Test( expected = IllegalArgumentException.class ) public void testGetColumnGroup_InvalidIndex() { grid.getColumnGroup( 3 ); } @Test public void testDisposeColumnGroupOnGridDispose() { GridColumnGroup group = new GridColumnGroup( grid, SWT.NONE ); grid.dispose(); assertTrue( group.isDisposed() ); } @Test public void testGetBottomIndex_SameItemHeight() { createGridItems( grid, 20, 0 ); grid.setTopIndex( 4 ); assertEquals( 11, grid.getBottomIndex() ); } @Test public void testGetBottomIndex_DifferentItemHeight() { GridItem[] items = createGridItems( grid, 20, 0 ); items[ 6 ].setHeight( grid.getItemHeight() * 2 ); grid.setTopIndex( 4 ); assertEquals( 10, grid.getBottomIndex() ); } @Test public void testRemoveAll_disposeInReverseOrder() { final List<String> log = new ArrayList<String>(); createGridItems( grid, 5, 0 ); for( GridItem item : grid.getItems() ) { item.addDisposeListener( new DisposeListener() { public void widgetDisposed( DisposeEvent event ) { GridItem item = ( GridItem )event.getSource(); log.add( item.getText() ); } } ); } grid.removeAll(); String[] expected = { "root_4", "root_3", "root_2", "root_1", "root_0" }; assertArrayEquals( expected, log.toArray( new String[ 0 ] ) ); } @Test public void testSetItemCount_disposeInReverseOrder() { final List<String> log = new ArrayList<String>(); createGridItems( grid, 5, 0 ); for( GridItem item : grid.getItems() ) { item.addDisposeListener( new DisposeListener() { public void widgetDisposed( DisposeEvent event ) { GridItem item = ( GridItem )event.getSource(); log.add( item.getText() ); } } ); } grid.setItemCount( 0 ); String[] expected = { "root_4", "root_3", "root_2", "root_1", "root_0" }; assertArrayEquals( expected, log.toArray( new String[ 0 ] ) ); } @Test public void testIsAutoHeght_Initial() { assertFalse( grid.isAutoHeight() ); } @Test public void testSetAutoHeght() { grid.setAutoHeight( true ); assertTrue( grid.isAutoHeight() ); } ////////////////// // Helping methods private void doRedraw() { grid.redraw(); } ////////////////// // Helping classes private class LoggingListener implements Listener { public void handleEvent( Event event ) { eventLog.add( event ); } } }