/******************************************************************************
* Product: Posterita Ajax UI *
* Copyright (C) 2007 Posterita Ltd. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program 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 for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Posterita Ltd., 3, Draper Avenue, Quatre Bornes, Mauritius *
* or via info@posterita.org or http://www.posterita.org/ *
*****************************************************************************/
package org.adempiere.webui.component.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Vector;
import org.adempiere.webui.component.ListModelTable;
import org.adempiere.webui.event.WTableModelEvent;
import org.adempiere.webui.event.WTableModelListener;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Test class for {@link org.adempiere.webui.component.ListModelTable}.
*
* @author Andrew Kimball
*
*/
public class ListModelTableTest implements WTableModelListener
{
/** First data object. */
private static final Integer ms_number0 = Integer.valueOf(0);
/** Second data object. */
private static final Integer ms_number1 = Integer.valueOf(1);
/** Third data object. */
private static final Integer ms_number2 = Integer.valueOf(2);
/** Third data object. */
private static final Integer ms_number3 = Integer.valueOf(3);
/** Fourth data object. */
private static final Integer ms_number4 = Integer.valueOf(4);
/** Fifth data object. */
private static final Integer ms_number5 = Integer.valueOf(5);
/** Sixth data object. */
private static final Integer ms_number6 = Integer.valueOf(6);
/** The table instance on which tests are to be run. */
private ListModelTable m_table;
/** A flag to indicate whether the listener has been called and has succeeded. */
private boolean m_isListenerCalled = false;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception
{
Vector<Integer> row0 = new Vector<Integer>();
Vector<Integer> row1 = new Vector<Integer>();
Vector<Object> data = new Vector<Object>();
// create two rows of data
row0.add(ms_number0);
row0.add(ms_number1);
row1.add(ms_number2);
row1.add(ms_number3);
// create the data
data.add(row0);
data.add(row1);
// instantiate the model
m_table = new ListModelTable(data);
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception
{
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#ListModelTable()}.
*/
@Test
public final void testListModelTable()
{
ListModelTable table = new ListModelTable();
boolean isException = false;
Object data;
assertEquals(0, table.getNoColumns());
assertEquals(0, table.getSize());
// try to get data from an invalid field
try
{
data = table.getDataAt(0, 0);
// never reach here, but removes warnings
assertNull(data);
}
catch (IllegalArgumentException exception)
{
isException = true;
}
assertTrue(isException);
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#ListModelTable(java.util.Collection)}.
*/
@Test (expected= IllegalArgumentException.class)
public final void testListModelTableCollection()
{
final int invalidRow = 2;
final int noColumns = 2;
Object data;
assertEquals(noColumns, m_table.getNoColumns());
assertEquals(noColumns, m_table.getSize());
assertEquals(Integer.valueOf(0), m_table.getDataAt(0, 0));
//try to get data from an invalid field
data = m_table.getDataAt(invalidRow, 0);
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#addColumn()}.
*/
@Test
public final void testAddColumn()
{
final int noColumns = 3;
m_table.addColumn();
assertEquals(noColumns, m_table.getNoColumns());
assertNull(m_table.getDataAt(0, noColumns - 1));
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#setNoColumns(int)}.
*/
@Test
public final void testSetNoColumns()
{
final int noColumns = 3;
m_table.setNoColumns(noColumns);
assertEquals(noColumns, m_table.getNoColumns());
assertNull(m_table.getDataAt(0, noColumns - 1));
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#getDataAt(int, int)}.
*/
@Test
public final void testGetDataAt()
{
assertEquals(ms_number0, m_table.getDataAt(0, 0));
assertEquals(ms_number3, m_table.getDataAt(1, 1));
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#setDataAt(java.lang.Object, int, int)}.
*/
@Test (expected= IllegalArgumentException.class)
public final void testSetDataAt()
{
final int invalidRow = 2;
m_table.setDataAt(ms_number4, 0, 0);
m_table.setDataAt(ms_number5, 1, 1);
assertEquals(ms_number4, m_table.getDataAt(0, 0));
assertEquals(ms_number5, m_table.getDataAt(1, 1));
// expect this to throw an exception
m_table.setDataAt(ms_number6, invalidRow, 0);
}
/**
* Test method for {@link org.adempiere.webui.component.ListModelTable#setNoRows(int)}.
*/
@Test
public final void testSetNoRows()
{
final int noRows = 3;
m_table.setNoRows(m_table.getSize() + 1);
assertEquals(noRows, m_table.getSize());
assertEquals(ms_number3, m_table.getDataAt(1, 1));
assertNull(m_table.getDataAt(2, 1));
}
/**
* Test method for
* {@link org.adempiere.webui.component.ListModelTable#addTableModelListener(org.adempiere.webui.event.WTableModelListener)}.
*/
@Test
public final void testAddTableModelListener()
{
m_table.addTableModelListener(this);
m_table.setDataAt(ms_number4, 0, 0);
assertTrue(m_isListenerCalled);
}
/* (non-Javadoc)
* @see org.adempiere.webui.event.WTableModelListener#tableChanged(org.adempiere.webui.event.WTableModelEvent)
*/
public void tableChanged(WTableModelEvent event)
{
assertEquals(ms_number4, m_table.getDataAt(0, 0));
m_isListenerCalled = true;
}
}