/* * 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 java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import javax.swing.JFormattedTextField; import javax.swing.JTextField; import no.ntnu.mmfplanner.ProjectTestFixture; import no.ntnu.mmfplanner.model.MmfException; import no.ntnu.mmfplanner.model.Project; import org.junit.Before; import org.junit.Test; /** * Test suite for {@link ProjectPropertiesAdapter} */ public class ProjectPropertiesAdapterTest extends ProjectTestFixture { ProjectPropertiesAdapter propAdapter; private JFormattedTextField periodsTextField; private JTextField interestRateTextField; private JTextField projectNameTextField; private JFormattedTextField maxMmfsPerPeriodTextField; @Before public void setUp() throws Exception { // Create and set up JTextFields periodsTextField = new JFormattedTextField(project.getPeriods()); interestRateTextField = new JTextField("" + project.getInterestRate()); projectNameTextField = new JTextField(project.getName()); maxMmfsPerPeriodTextField = new JFormattedTextField(project .getMaxMmfsPerPeriod()); // Initialize the adapter propAdapter = new ProjectPropertiesAdapter(periodsTextField, interestRateTextField, projectNameTextField, maxMmfsPerPeriodTextField, project); } @Test public void testSetModel() throws MmfException { assertEquals(12, periodsTextField.getValue()); assertEquals("0.8%", interestRateTextField.getText()); assertEquals("Test project", projectNameTextField.getText()); assertEquals(1, maxMmfsPerPeriodTextField.getValue()); Project expectedNewProject = new Project(); expectedNewProject.setPeriods(14); expectedNewProject.setInterestRate(0.0112345); expectedNewProject.setName("New Project to Test"); expectedNewProject.setMaxMmfsPerPeriod(2); propAdapter.setModel(expectedNewProject); assertEquals(14, periodsTextField.getValue()); assertEquals("1.123%", interestRateTextField.getText()); assertEquals("New Project to Test", projectNameTextField.getText()); assertEquals(2, maxMmfsPerPeriodTextField.getValue()); periodsTextField.setValue(13); propAdapter.focusLost(new FocusEvent(periodsTextField, FocusEvent.FOCUS_LOST)); assertEquals(12, project.getPeriods()); assertEquals(13, expectedNewProject.getPeriods()); } @Test public void testFocusLost() { assertEquals(12, project.getPeriods()); periodsTextField.setValue(13); propAdapter.focusLost(new FocusEvent(periodsTextField, FocusEvent.FOCUS_LOST)); assertEquals(13, project.getPeriods()); assertEquals(0.008, project.getInterestRate(), 0.00001); interestRateTextField.setText("12"); propAdapter.focusLost(new FocusEvent(interestRateTextField, FocusEvent.FOCUS_LOST)); assertEquals(0.12, project.getInterestRate(), 0.00001); interestRateTextField.setText("0,01234ยค/&#/263265"); propAdapter.focusLost(new FocusEvent(interestRateTextField, FocusEvent.FOCUS_LOST)); assertEquals(0.0001234, project.getInterestRate(), 0.00000001); assertEquals("Test project", project.getName()); projectNameTextField.setText("MMF Test Project"); propAdapter.focusLost(new FocusEvent(projectNameTextField, FocusEvent.FOCUS_LOST)); assertEquals("MMF Test Project", project.getName()); assertEquals(1, project.getMaxMmfsPerPeriod()); maxMmfsPerPeriodTextField.setValue(2); propAdapter.focusLost(new FocusEvent(maxMmfsPerPeriodTextField, FocusEvent.FOCUS_LOST)); assertEquals(2, project.getMaxMmfsPerPeriod()); } @Test public void testActionPerformed() { assertEquals(12, project.getPeriods()); periodsTextField.setValue(13); propAdapter.actionPerformed(new ActionEvent(periodsTextField, ActionEvent.ACTION_PERFORMED, "update")); assertEquals(13, project.getPeriods()); assertEquals(0.008, project.getInterestRate(), 0.00001); interestRateTextField.setText("1.4%"); propAdapter.actionPerformed(new ActionEvent(interestRateTextField, ActionEvent.ACTION_PERFORMED, "update")); assertEquals(0.014, project.getInterestRate(), 0.00001); assertEquals("Test project", project.getName()); projectNameTextField.setText("MMF Test Project"); propAdapter.actionPerformed(new ActionEvent(projectNameTextField, ActionEvent.ACTION_PERFORMED, "update")); assertEquals("MMF Test Project", project.getName()); assertEquals(1, project.getMaxMmfsPerPeriod()); maxMmfsPerPeriodTextField.setValue(2); propAdapter.actionPerformed(new ActionEvent(maxMmfsPerPeriodTextField, ActionEvent.ACTION_PERFORMED, "update")); assertEquals(2, project.getMaxMmfsPerPeriod()); } @Test public void testPropertyChange() throws MmfException { assertEquals(0.008, project.getInterestRate(), 0.00001); project.setInterestRate(0.01); assertEquals("1.0%", interestRateTextField.getText()); assertEquals(12, project.getPeriods()); int expectedNewPeriod = 10; project.setPeriods(expectedNewPeriod); assertEquals(expectedNewPeriod, ((Number) periodsTextField.getValue()) .intValue()); assertEquals("Test project", project.getName()); String expectedNewProjectName = "MMF test project"; project.setName(expectedNewProjectName); assertEquals(expectedNewProjectName, projectNameTextField.getText()); assertEquals(1, project.getMaxMmfsPerPeriod()); int expectedNewMaxMMFs = 2; project.setMaxMmfsPerPeriod(expectedNewMaxMMFs); assertEquals(expectedNewMaxMMFs, ((Number) maxMmfsPerPeriodTextField .getValue()).intValue()); } }