/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.ui.internal.markets; import java.util.Calendar; import java.util.Date; import junit.framework.TestCase; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipsetrader.core.internal.markets.MarketTime; public class TimeScheduleEditorTest extends TestCase { private Shell shell; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { shell = new Shell(Display.getCurrent()); } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ @Override protected void tearDown() throws Exception { shell.dispose(); } public void testCreateEmpty() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); assertEquals(0, editor.getViewer().getTable().getItemCount()); assertEquals(0, editor.getSchedule().length); } public void testSetScheduleInProperOrder() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); MarketTime[] schedule = new MarketTime[] { new MarketTime(getTime(18, 0), getTime(20, 0)), new MarketTime(getTime(9, 0), getTime(16, 0)), }; editor.setSchedule(schedule); assertEquals(schedule[1].getOpenTime(), ((MarketTimeElement) editor.getViewer().getTable().getItem(0).getData()).getOpenTime()); assertEquals(schedule[0].getOpenTime(), ((MarketTimeElement) editor.getViewer().getTable().getItem(1).getData()).getOpenTime()); } public void testEditOpenTime() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.setSchedule(new MarketTime[] { new MarketTime(getTime(9, 0), getTime(16, 0)), }); MarketTimeElement element = (MarketTimeElement) editor.getViewer().getTable().getItem(0).getData(); ICellModifier cellModifier = editor.getViewer().getCellModifier(); assertTrue(cellModifier.canModify(element, "0")); assertEquals(element.getOpenTime(), cellModifier.getValue(element, "0")); cellModifier.modify(element, "0", getTime(10, 30)); assertEquals(getTime(10, 30), element.getOpenTime()); } public void testEditCloseTime() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.setSchedule(new MarketTime[] { new MarketTime(getTime(9, 0), getTime(16, 0)), }); MarketTimeElement element = (MarketTimeElement) editor.getViewer().getTable().getItem(0).getData(); ICellModifier cellModifier = editor.getViewer().getCellModifier(); assertTrue(cellModifier.canModify(element, "1")); assertEquals(element.getCloseTime(), cellModifier.getValue(element, "1")); cellModifier.modify(element, "1", getTime(10, 30)); assertEquals(getTime(10, 30), element.getCloseTime()); } public void testEditDescription() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.setSchedule(new MarketTime[] { new MarketTime(getTime(9, 0), getTime(16, 0)), }); MarketTimeElement element = (MarketTimeElement) editor.getViewer().getTable().getItem(0).getData(); ICellModifier cellModifier = editor.getViewer().getCellModifier(); assertTrue(cellModifier.canModify(element, "2")); assertEquals("", cellModifier.getValue(element, "2")); cellModifier.modify(element, "2", "New Description"); assertEquals("New Description", element.getDescription()); } public void testEditDescriptionToNull() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.setSchedule(new MarketTime[] { new MarketTime(getTime(9, 0), getTime(16, 0), "Description"), }); MarketTimeElement element = (MarketTimeElement) editor.getViewer().getTable().getItem(0).getData(); ICellModifier cellModifier = editor.getViewer().getCellModifier(); assertTrue(cellModifier.canModify(element, "2")); assertEquals("Description", cellModifier.getValue(element, "2")); cellModifier.modify(element, "2", ""); assertNull(element.getDescription()); } public void testGetSchedule() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.getInput().add(new MarketTimeElement(getTime(9, 0), getTime(16, 0))); editor.getInput().get(0).setDescription("Description"); MarketTime[] schedule = editor.getSchedule(); assertEquals(1, schedule.length); } public void testSetSchedule() throws Exception { TimeScheduleEditor editor = new TimeScheduleEditor(shell); editor.setSchedule(new MarketTime[] { new MarketTime(getTime(9, 0), getTime(16, 0)), }); assertEquals(1, editor.getViewer().getTable().getItemCount()); } private Date getTime(int hour, int minute) { Calendar date = Calendar.getInstance(); date.set(Calendar.HOUR_OF_DAY, hour); date.set(Calendar.MINUTE, minute); date.set(Calendar.SECOND, 0); date.set(Calendar.MILLISECOND, 0); return date.getTime(); } }