blob: 27208c85527e09060b5b1a669d8090ced385edf1 [file] [log] [blame]
package org.eclipse.stem.core.sequencer.tests;
/*******************************************************************************
* Copyright (c) 2006 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
import java.util.Calendar;
import junit.textui.TestRunner;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.stem.core.model.ModelFactory;
import org.eclipse.stem.core.model.STEMTime;
import org.eclipse.stem.core.sequencer.Sequencer;
import org.eclipse.stem.core.sequencer.SequencerFactory;
import org.eclipse.stem.core.sequencer.SequentialSequencer;
/**
* <!-- begin-user-doc --> A test case for the model object '<em><b>Sequential Sequencer</b></em>'.
* <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("all")
public class SequentialSequencerTest extends SequencerTest {
private static final int START_DAY = 20;
private static final int END_DAY = 29;
private static final int NUMBER_OF_DAYS = END_DAY - START_DAY + 1;
// The fixture sequencer sequences through 10 days
public static final STEMTime START_TIME = createSTEMTime(2006,
Calendar.NOVEMBER, START_DAY);
public static final STEMTime END_TIME = createSTEMTime(2006,
Calendar.NOVEMBER, END_DAY);
public static final long TIME_INCREMENT = STEMTime.Units.DAY.getMilliseconds();
protected SequentialSequencer sequencerWithNoEndTime = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public static void main(String[] args) {
TestRunner.run(SequentialSequencerTest.class);
}
/**
* Constructs a new Sequential Sequencer test case with the given name. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public SequentialSequencerTest(String name) {
super(name);
}
/**
* Sets the fixture for this Sequential Sequencer test case. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
protected void setFixture(SequentialSequencer fixture) {
super.setFixture(fixture);
}
/**
* Returns the fixture for this Sequential Sequencer test case. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
protected SequentialSequencer getFixture() {
return (SequentialSequencer) super.fixture;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see junit.framework.TestCase#setUp()
* @generated NOT
*/
protected void setUp() throws Exception {
setFixture(createFixture());
sequencerWithNoEndTime = SequencerFactory.eINSTANCE
.createSequentialSequencer();
sequencerWithNoEndTime.setStartTime((STEMTime) EcoreUtil
.copy(START_TIME));
sequencerWithNoEndTime.setCurrentTime((STEMTime) EcoreUtil
.copy(START_TIME));
sequencerWithNoEndTime.setTimeIncrement(TIME_INCREMENT);
} // setUp
/**
* @return a sequential sequencer
*/
public static SequentialSequencer createFixture() {
final SequentialSequencer sequencerWithEnd = SequencerFactory.eINSTANCE
.createSequentialSequencer();
sequencerWithEnd.setStartTime((STEMTime) EcoreUtil.copy(START_TIME));
sequencerWithEnd.setCurrentTime((STEMTime) EcoreUtil.copy(START_TIME));
sequencerWithEnd.setEndTime((STEMTime) EcoreUtil.copy(END_TIME));
sequencerWithEnd.setTimeIncrement(TIME_INCREMENT);
return sequencerWithEnd;
} // createFixture
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see junit.framework.TestCase#tearDown()
* @generated NOT
*/
protected void tearDown() throws Exception {
setFixture(null);
sequencerWithNoEndTime = null;
} // tearDown
/**
* @see org.eclipse.stem.core.scenario.tests.SequencerTest#testGetNextTime()
*/
@Override
public void testGetNextTime() {
final STEMTime nextTime = START_TIME.addIncrement(TIME_INCREMENT);
final SequentialSequencer seqWithEndTime = getFixture();
// The first time should be the start time
assertTrue(seqWithEndTime.getNextTime().equals(START_TIME));
assertTrue(seqWithEndTime.getNextTime().equals(nextTime));
assertFalse(seqWithEndTime.getNextTime().equals(nextTime));
final SequentialSequencer seqWithNoEndTime = sequencerWithNoEndTime;
assertTrue(seqWithNoEndTime.getNextTime().equals( START_TIME));
assertTrue(seqWithNoEndTime.getNextTime().equals(nextTime));
assertFalse(seqWithNoEndTime.getNextTime().equals(nextTime));
} // testGetNextTime
/**
* Test that the duration is computed correctly
*/
public void testGetDuration() {
final SequentialSequencer seqWithEndTime = getFixture();
assertTrue(seqWithEndTime.getDuration() == END_TIME.getTime().getTime()
- START_TIME.getTime().getTime());
final SequentialSequencer seqWithNoEndTime = sequencerWithNoEndTime;
assertTrue(seqWithNoEndTime.getDuration() == Sequencer.UNKNOWN_DURATION);
} // testGetDuration
/**
* @see org.eclipse.stem.core.scenario.tests.SequencerTest#testGetWorkIncrement()
*/
@Override
public void testGetWorkIncrement() {
final SequentialSequencer seqWithEndTime = getFixture();
assertTrue(seqWithEndTime.getWorkIncrement() == 10);
final SequentialSequencer seqWithNoEndTime = sequencerWithNoEndTime;
assertTrue(seqWithNoEndTime.getWorkIncrement() == 0);
} // testGetWorkIncrement
/**
* @see org.eclipse.stem.core.scenario.tests.SequencerTest#testIsTimeToStop()
*/
@Override
public void testIsTimeToStop() {
final SequentialSequencer seqWithEndTime = getFixture();
assertNotNull(seqWithEndTime.getEndTime());
assertFalse(seqWithEndTime.isTimeToStop());
for (int i = 0; i < NUMBER_OF_DAYS; i++) {
assertFalse(seqWithEndTime.isTimeToStop());
seqWithEndTime.getNextTime();
}
assertTrue(seqWithEndTime.isTimeToStop());
final SequentialSequencer seqWithNoEndTime = sequencerWithNoEndTime;
assertFalse(seqWithNoEndTime.isTimeToStop());
for (int i = 0; i < 10; i++) {
seqWithNoEndTime.getNextTime();
assertFalse(seqWithNoEndTime.isTimeToStop());
}
seqWithNoEndTime.getNextTime();
assertFalse(seqWithNoEndTime.isTimeToStop());
} // testIsTimeToStop
/**
* @see org.eclipse.stem.core.tests.SequencerTest#testGetWorkComplete()
*/
public void testGetWorkComplete() {
final SequentialSequencer seqWithEndTime = getFixture();
assertFalse(seqWithEndTime.isTimeToStop());
for (int i = 0; i < NUMBER_OF_DAYS; i++) {
seqWithEndTime.getNextTime();
assertTrue(seqWithEndTime.getWorkComplete() == (i+1) * NUMBER_OF_DAYS);
}
assertTrue(seqWithEndTime.getWorkComplete() == 100);
final SequentialSequencer seqWithNoEndTime = sequencerWithNoEndTime;
assertFalse(seqWithNoEndTime.isTimeToStop());
for (int i = 0; i < NUMBER_OF_DAYS; i++) {
seqWithNoEndTime.getNextTime();
assertTrue(seqWithNoEndTime.getWorkComplete() == 0);
}
seqWithNoEndTime.getNextTime();
assertTrue(seqWithNoEndTime.getWorkComplete() == 0);
} // testGetWorkComplete
/**
* @see org.eclipse.stem.core.sequencer.tests.SequencerTest#testReset()
*/
@Override
public void testReset() {
final SequentialSequencer seqWithEndTime = getFixture();
assertTrue(seqWithEndTime.getStartTime().equals(
seqWithEndTime.getCurrentTime()));
final STEMTime time1 = seqWithEndTime.getNextTime();
assertTrue(seqWithEndTime.getStartTime().equals(
seqWithEndTime.getCurrentTime()));
seqWithEndTime.reset();
assertTrue(seqWithEndTime.getStartTime().equals(
seqWithEndTime.getCurrentTime()));
} // testReset
/**
* Create an instance of STEMTime
*
* @return the instance
*/
private static STEMTime createSTEMTime(final int year, final int month,
final int day) {
final STEMTime retValue = getCurrentSystemTime();
final Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
retValue.setTime(calendar.getTime());
return retValue;
} // createSTEMTime
/**
* @return the current real wall clock time as returned by the system.
*/
protected static STEMTime getCurrentSystemTime() {
return ModelFactory.eINSTANCE.createSTEMTime();
} // getCurrentSystemTime
} // SequentialSequencerTest