/* * 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.util; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import javax.swing.JMenuItem; import javax.swing.JPanel; import no.ntnu.mmfplanner.ProjectTestFixture; import no.ntnu.mmfplanner.model.Category; import no.ntnu.mmfplanner.model.Mmf; import no.ntnu.mmfplanner.model.MmfException; import no.ntnu.mmfplanner.model.Project; import no.ntnu.mmfplanner.model.ProjectRoi; import no.ntnu.mmfplanner.ui.TabPanePanelPlacement; import no.ntnu.mmfplanner.ui.TabPanePanelPlacement.PanelInfo; import nu.xom.Element; import org.junit.Before; import org.junit.Test; /** * Test suite for {@link XmlDeserializer} */ public class XmlDeserializerTest extends ProjectTestFixture { TabPanePanelPlacement placement; @Before public void setUp() { placement = new TabPanePanelPlacement(new JMenuItem()); placement.add("projectPropPanel", "Project Properties", TabPanePanelPlacement.TYPE_INPUT, TabPanePanelPlacement.PLACEMENT_UPPER, true, new JPanel()); placement.add("mmfTablePanel", "MMF Table", TabPanePanelPlacement.TYPE_OUTPUT, TabPanePanelPlacement.PLACEMENT_LOWER, false, new JPanel()); } /** * Test method for * {@link no.ntnu.mmfplanner.util.XmlDeserializer#readProject(java.io.InputStream)} * . * * @throws IOException * @throws MmfException */ @Test public void testReadProject() throws Exception { ByteArrayOutputStream os = new ByteArrayOutputStream(); XmlSerializer.writeWorkspace(placement, project, os); ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); Project project2 = XmlDeserializer.readProject(is); assertEquals(project.getCategorySize(), project2.getCategorySize()); assertEquals(project.getInterestRate(), project2.getInterestRate(), 0.0001); assertEquals(project.getName(), project2.getName()); assertEquals(project.getNextId(), project2.getNextId()); assertEquals(project.getPeriods(), project2.getPeriods()); assertEquals(project.getMaxMmfsPerPeriod(), project2 .getMaxMmfsPerPeriod()); assertArrayEquals(project.getSaNpvTable(), project2.getSaNpvTable()); ProjectRoi roi = ProjectRoi.getRoiTable(project, project .getInterestRate(), false); ProjectRoi roi2 = ProjectRoi.getRoiTable(project2, project2 .getInterestRate(), false); assertEquals(roi.mmfs.length, roi2.mmfs.length); for (int i = 0; i < roi.mmfs.length; i++) { assertEquals(roi.mmfs[i].getId(), roi2.mmfs[i].getId()); } assertArrayEquals(roi.values, roi2.values); assertArrayEquals(roi.cash, roi2.cash); assertArrayEquals(roi.investment, roi2.investment); assertArrayEquals(roi.presentValue, roi2.presentValue); assertArrayEquals(roi.rollingNpv, roi2.rollingNpv); assertEquals(roi.roi, roi2.roi, 0.0001); assertEquals(roi.selfFundingPeriod, roi2.selfFundingPeriod); assertEquals(roi.breakevenPeriod, roi2.breakevenPeriod); assertEquals(roi.breakevenRegression, roi2.breakevenRegression, 0.0001); } /** * Test method for * {@link no.ntnu.mmfplanner.util.XmlDeserializer#elementToProject(nu.xom.Element)} * . * * @throws MmfException */ @Test public void testElementToProject() throws MmfException { Element e = XmlSerializer.projectToElement(project); Project project2 = XmlDeserializer.elementToProject(e); assertEquals(project.getCategorySize(), project2.getCategorySize()); assertEquals(project.getInterestRate(), project2.getInterestRate(), 0.0001); assertEquals(project.getName(), project2.getName()); assertEquals(project.getNextId(), project2.getNextId()); assertEquals(project.getMaxMmfsPerPeriod(), project2 .getMaxMmfsPerPeriod()); assertArrayEquals(project.getSaNpvTable(), project2.getSaNpvTable()); } /** * Test method for * {@link no.ntnu.mmfplanner.util.XmlDeserializer#elementToCategory(nu.xom.Element)} * . * * @throws MmfException */ @Test public void testElementToCategory() throws MmfException { Element e = XmlSerializer.categoryToElement(project, category1); Category category12 = XmlDeserializer.elementToCategory(project, e); assertEquals(category1.getColor(), category12.getColor()); assertEquals(category1.getName(), category12.getName()); assertEquals(category1.getParent(), category12.getParent()); } /** * Test method for * {@link no.ntnu.mmfplanner.util.XmlDeserializer#elementToMmf(nu.xom.Element)} * . * * @throws MmfException */ @Test public void testElementToMmf() throws MmfException { mmfA.setLocked(true); Element e = XmlSerializer.mmfToElement(project, mmfA); Mmf mmfA2 = XmlDeserializer.elementToMmf(project, e); assertEquals(mmfA.getId(), mmfA2.getId()); assertEquals(mmfA.getName(), mmfA2.getName()); assertEquals(mmfA.getPeriod(), mmfA2.getPeriod()); assertEquals(mmfA.isLocked(), mmfA2.isLocked()); assertEquals(mmfA.getPeriodCount(), mmfA2.getPeriodCount()); assertEquals(mmfA.getSwimlane(), mmfA2.getSwimlane()); assertEquals(mmfA.getCategory(), mmfA2.getCategory()); assertEquals(mmfA.getPrecursors(), mmfA2.getPrecursors()); assertEquals(mmfA.getRevenueLength(), mmfA2.getRevenueLength()); for (int i = 1; i <= mmfA.getRevenueLength(); i++) { assertEquals(mmfA.getRevenue(i), mmfA2.getRevenue(i)); } assertEquals(mmfA.getProject(), mmfA2.getProject()); } /** * Test method for * {@link no.ntnu.mmfplanner.util.XmlDeserializer#elementToTabPanePanelPlacement(nu.xom.Element)} * . * * @throws MmfException */ @Test public void testElementToTabPanePanelPlacement() throws MmfException { Element e = XmlSerializer.tabPanePanelPlacementToElement(placement); placement.movePanel("projectPropPanel", TabPanePanelPlacement.PLACEMENT_LOWER); placement.setVisible("projectPropPanel", false); placement.movePanel("mmfTablePanel", TabPanePanelPlacement.PLACEMENT_UPPER); placement.setVisible("mmfTablePanel", true); XmlDeserializer.elementToTabPanePanelPlacement(placement, e); PanelInfo p1 = placement.getPanelInfo("projectPropPanel"); PanelInfo p2 = placement.getPanelInfo("mmfTablePanel"); assertEquals(p1.placement, TabPanePanelPlacement.PLACEMENT_UPPER); assertEquals(p1.visible, true); assertEquals(p2.placement, TabPanePanelPlacement.PLACEMENT_LOWER); assertEquals(p2.visible, false); } }