/*
* Copyright (C) 2007 Snorre Gylterud, Stein Magnus Jodal, Johannes Knutsen,
* Erik Bagge Ottesen, Ralf Bjarne Taraldset, and Iterate AS
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*/
package no.ntnu.mmfplanner.ui.model;
import static org.junit.Assert.*;
import javax.swing.table.TableModel;
import no.ntnu.mmfplanner.ProjectTestFixture;
import no.ntnu.mmfplanner.model.Category;
import no.ntnu.mmfplanner.model.Mmf;
import org.junit.Before;
import org.junit.Test;
/**
* Test suite for {@link MmfTableModel}
*/
public class MmfTableModelTest extends ProjectTestFixture {
TableModel model;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
model = new MmfTableModel(project);
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#isCellEditable(int, int)}.
*/
@Test
public void testIsCellEditable() {
assertFalse(model.isCellEditable(0, 0));
for (int i = 1; i < 5; i++) {
assertTrue(model.isCellEditable(0, i));
}
assertFalse(model.isCellEditable(2, 0));
assertTrue(model.isCellEditable(2, 1));
assertFalse(model.isCellEditable(2, 2));
assertFalse(model.isCellEditable(2, 5));
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getColumnCount()}.
*/
@Test
public void testGetColumnCount() {
assertEquals(6, model.getColumnCount());
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getColumnName(int)}.
*/
@Test
public void testGetColumnNameInt() {
for (int i = 0; i < 6; i++) {
assertEquals(MmfTableModel.COLUMNS[i], model.getColumnName(i));
}
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getRowCount()}.
*/
@Test
public void testGetRowCount() {
assertEquals(3, model.getRowCount());
project.add(new Mmf("C", "Test C"));
assertEquals(4, model.getRowCount());
project.remove(mmfA);
project.remove(project.get(0));
project.remove(project.get(0));
assertEquals(1, model.getRowCount());
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getValueAt(int, int)}.
*/
@Test
public void testGetValueAt() {
assertEquals("A", model.getValueAt(0, 0));
assertEquals("Test A", model.getValueAt(0, 1));
mmfA.setName("Test AA");
assertEquals("Test AA", model.getValueAt(0, 1));
assertEquals(2, model.getValueAt(0, 2));
assertEquals(true, model.getValueAt(0, 3));
assertEquals("A", model.getValueAt(1, 4));
mmfB.removePrecursor(mmfA);
assertEquals("", model.getValueAt(1, 4));
assertEquals(null, model.getValueAt(0, 5));
assertEquals(mmfB.getCategory(), model.getValueAt(1, 5));
assertEquals(null, model.getValueAt(3, 0));
assertEquals(null, model.getValueAt(3, 1));
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#setValueAt(java.lang.Object, int, int)}.
*/
@Test
public void testSetValueAtObjectIntInt() {
Mmf mmfC = new Mmf("C", "Test C");
project.add(mmfC);
model.setValueAt("T", 0, 0);
assertEquals("A", model.getValueAt(0, 0));
model.setValueAt("Test AA", 0, 1);
assertEquals("Test AA", mmfA.getName());
model.setValueAt(1, 0, 2);
assertEquals(1, mmfA.getPeriod());
model.setValueAt("A,C", 1, 4);
assertArrayEquals(new Mmf[] { mmfA, mmfC }, mmfB.getPrecursors()
.toArray());
mmfB.removePrecursor(mmfA);
mmfB.removePrecursor(mmfC);
model.setValueAt("A C", 1, 4);
assertArrayEquals(new Mmf[] { mmfA, mmfC }, mmfB.getPrecursors()
.toArray());
mmfB.removePrecursor(mmfA);
mmfB.removePrecursor(mmfC);
model.setValueAt("AC", 1, 4);
assertArrayEquals(new Mmf[] { mmfA, mmfC }, mmfB.getPrecursors()
.toArray());
model.setValueAt(category1, 0, 5);
assertEquals(category1, mmfA.getCategory());
// adding a new MMF
assertEquals(4, model.getRowCount());
assertEquals(3, project.size());
model.setValueAt("Test New", 3, 1);
assertEquals(4, project.size());
assertEquals("Test New", project.get(3).getName());
assertEquals(5, model.getRowCount());
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getColumnClass(int)}.
*/
@Test
public void testGetColumnClassInt() {
assertEquals(String.class, model.getColumnClass(0));
assertEquals(String.class, model.getColumnClass(1));
assertEquals(Integer.class, model.getColumnClass(2));
assertEquals(Boolean.class, model.getColumnClass(3));
assertEquals(String.class, model.getColumnClass(4));
assertEquals(Category.class, model.getColumnClass(5));
project.remove(mmfA);
project.remove(mmfB);
}
/**
* Test method for
* {@link no.ntnu.mmfplanner.ui.model.MmfTableModel#getColumnClass(int)}.
*/
@Test
public void testGetColumnClassWhenEmpty() {
project.remove(mmfA);
project.remove(mmfB);
for (int i = 0; i < 5; i++) {
assertEquals(Object.class, model.getColumnClass(0));
}
assertEquals(Category.class, model.getColumnClass(5));
}
}