/*
* 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.model;
import no.ntnu.mmfplanner.ProjectTestFixture;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Test suite for {@link Mmf}
*/
public class MmfTest extends ProjectTestFixture {
@Before
public void setUp() {
mmfA.addPropertyChangeListener(propChg);
}
@Test
public void setId() throws MmfException {
assertEquals("A", mmfA.getId());
mmfA.setId("C");
assertEquals("C", mmfA.getId());
try {
mmfA.setId("B");
fail("Expected MmfException");
} catch (MmfException e) {
}
assertEquals("C", mmfA.getId());
assertEquals(1, propCount);
assertEquals("C", propEvt.getNewValue());
}
@Test
public void setName() {
assertEquals("Test A", mmfA.getName());
mmfA.setName("Test B");
assertEquals("Test B", mmfA.getName());
assertEquals(1, propCount);
assertEquals("Test B", propEvt.getNewValue());
}
@Test
public void setPeriod() throws MmfException {
assertEquals(2, mmfA.getPeriod());
mmfA.setPeriod(5);
assertEquals(5, mmfA.getPeriod());
try {
mmfA.setPeriod(0);
fail("MmfException expected");
} catch (MmfException e) {
}
assertEquals(5, mmfA.getPeriod());
assertEquals(1, propCount);
assertEquals(5, propEvt.getNewValue());
}
@Test
public void setLocked() throws MmfException {
assertEquals(true, mmfA.isLocked());
mmfA.setLocked(true);
assertEquals(true, mmfA.isLocked());
mmfA.setLocked(false);
assertEquals(false, mmfA.isLocked());
assertEquals(1, propCount);
assertEquals(false, propEvt.getNewValue());
}
@Test
public void setSwimlane() throws MmfException {
assertEquals(1, mmfA.getSwimlane());
mmfA.setSwimlane(5);
assertEquals(5, mmfA.getSwimlane());
try {
mmfA.setSwimlane(0);
fail("MmfException expected");
} catch (MmfException e) {
}
assertEquals(5, mmfA.getSwimlane());
assertEquals(1, propCount);
assertEquals(5, propEvt.getNewValue());
}
@Test
public void precursors() throws MmfException {
assertEquals(0, mmfA.getPrecursors().size());
assertEquals(1, mmfB.getPrecursors().size());
mmfB.removePrecursor(mmfA);
assertEquals(0, mmfB.getPrecursors().size());
mmfA.addPrecursor(mmfB);
assertEquals(1, mmfA.getPrecursors().size());
try {
mmfA.addPrecursor(mmfA);
fail("MmfException expected");
} catch (MmfException e) {
}
assertEquals(1, mmfA.getPrecursors().size());
try {
mmfB.addPrecursor(mmfA);
fail("MmfException expected");
} catch (MmfException e) {
}
assertEquals(1, mmfA.getPrecursors().size());
assertEquals(0, mmfB.getPrecursors().size());
assertTrue(mmfA.getPrecursors().contains(mmfB));
assertEquals(1, propCount);
assertEquals(null, propEvt.getOldValue());
assertEquals(mmfB, propEvt.getNewValue());
mmfA.removePrecursor(mmfA);
mmfA.removePrecursor(mmfA);
assertEquals(1, mmfA.getPrecursors().size());
assertTrue(mmfA.getPrecursors().contains(mmfB));
assertEquals(1, propCount);
mmfA.removePrecursor(mmfB);
assertEquals(0, mmfA.getPrecursors().size());
mmfA.removePrecursor(mmfB);
assertEquals(0, mmfA.getPrecursors().size());
assertFalse(mmfA.getPrecursors().contains(mmfB));
assertEquals(2, propCount);
assertEquals(mmfB, propEvt.getOldValue());
assertEquals(null, propEvt.getNewValue());
}
@Test
public void testToString() {
assertEquals("MMF A: Test A [2,1] > []", mmfA.toString());
}
@Test
public void setCategory() throws MmfException {
assertEquals(null, mmfA.getCategory());
mmfA.setCategory(category1);
assertEquals(category1, mmfA.getCategory());
try {
Category testCategory = new Category("test",
Category.CATEGORY_COLORS[0], null);
mmfA.setCategory(testCategory);
fail("Expected MmfException");
} catch (MmfException e) {
}
assertEquals(category1, mmfA.getCategory());
assertEquals(1, propCount);
assertEquals(category1, propEvt.getNewValue());
}
@Test
public void revenues() throws MmfException {
assertEquals(15, mmfA.getRevenueLength());
mmfA.setRevenue(1, 22);
assertEquals(22, mmfA.getRevenue(1));
mmfA.setRevenue(25, 33);
assertEquals(33, mmfA.getRevenue(25));
assertEquals(0, mmfA.getRevenue(16));
assertEquals(25, mmfA.getRevenueLength());
project.setPeriods(10);
assertEquals(25, mmfA.getRevenueLength());
project.setPeriods(1);
assertEquals(25, mmfA.getRevenueLength());
assertEquals(33, mmfA.getRevenue(25));
assertEquals(2, propCount);
assertEquals(33, propEvt.getNewValue());
assertEquals(0, propEvt.getOldValue());
}
@Test
public void getSaNpv() {
int npvs[] = new int[] { 1604, 1285, 986, 708, 486, 283, 101, -44,
-170, -277, -365, -182 };
for (int i = 0; i < npvs.length; i++) {
assertEquals(npvs[i], mmfA.getSaNpv(0.008, i));
}
assertEquals(0, mmfA.getSaNpv(0.008, npvs.length + 1));
assertEquals(0, mmfA.getSaNpv(0.008, npvs.length + 10));
assertArrayEquals(npvs, mmfA.getSaNpvList(0.008));
try {
mmfA.getSaNpv(14.3, -1);
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException e) {
}
}
}