Package org.pentaho.platform.scheduler2.ws.test

Source Code of org.pentaho.platform.scheduler2.ws.test.ComplexTriggerJAXBTest

/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.platform.scheduler2.ws.test;

import javax.xml.bind.JAXBException;

import org.junit.Before;
import org.junit.Test;
import org.pentaho.platform.api.scheduler2.ComplexJobTrigger;
import org.pentaho.platform.api.scheduler2.recur.ITimeRecurrence;
import org.pentaho.platform.api.scheduler2.wrappers.ITimeWrapper;
import org.pentaho.platform.scheduler2.recur.IncrementalRecurrence;
import org.pentaho.platform.scheduler2.recur.QualifiedDayOfWeek;
import org.pentaho.platform.scheduler2.recur.RecurrenceList;
import org.pentaho.platform.scheduler2.recur.SequentialRecurrence;

import junit.framework.Assert;

@SuppressWarnings( "nls" )
public class ComplexTriggerJAXBTest {

  ComplexJobTrigger trigger;

  IncrementalRecurrence inc = new IncrementalRecurrence( 2010, 5 );

  SequentialRecurrence seq = new SequentialRecurrence( 5, 12 );

  QualifiedDayOfWeek qday = new QualifiedDayOfWeek( QualifiedDayOfWeek.DayOfWeekQualifier.FIFTH,
      QualifiedDayOfWeek.DayOfWeek.MON );

  Integer[] list = { 7, 11 };

  @Before
  public void init() {
    trigger = new ComplexJobTrigger();
  }

  private ComplexJobTrigger process( ComplexJobTrigger t ) throws JAXBException {
    return JaxBUtil.outin( t, ComplexJobTrigger.class, SequentialRecurrence.class, IncrementalRecurrence.class,
        RecurrenceList.class, QualifiedDayOfWeek.class );
  }

  @Test
  public void testYearlDimension() throws JAXBException {
    trigger.addYearlyRecurrence( inc );
    trigger.addYearlyRecurrence( seq );
    trigger.addYearlyRecurrence( list );

    assertRecurrencesCorrect( "YEAR", 3, process( trigger ).getYearlyRecurrences() );
  }

  @Test
  public void testMonthDimension() throws JAXBException {
    trigger.addMonthlyRecurrence( inc );
    trigger.addMonthlyRecurrence( seq );
    trigger.addMonthlyRecurrence( list );
    assertRecurrencesCorrect( "MONTH", 3, process( trigger ).getMonthlyRecurrences() );
  }

  @Test
  public void testHourDimension() throws JAXBException {
    trigger.setHourlyRecurrence( inc );
    trigger.addHourlyRecurrence( seq );
    trigger.addHourlyRecurrence( list );
    assertRecurrencesCorrect( "MINUTE", 3, process( trigger ).getHourlyRecurrences() );
  }

  @Test
  public void testMinuteDimension() throws JAXBException {
    trigger.setMinuteRecurrence( inc );
    trigger.addMinuteRecurrence( seq );
    trigger.addMinuteRecurrence( list );
    assertRecurrencesCorrect( "MINUTE", 3, process( trigger ).getMinuteRecurrences() );
  }

  @Test
  public void testDayOfMonthDimension() throws JAXBException {
    trigger.addDayOfMonthRecurrence( inc );
    trigger.addDayOfMonthRecurrence( seq );
    trigger.addDayOfMonthRecurrence( list );
    assertRecurrencesCorrect( "DAYOFMONTH", 3, process( trigger ).getDayOfMonthRecurrences() );
  }

  @Test
  public void testDayOfWeekDimension() throws JAXBException {
    trigger.addDayOfWeekRecurrence( qday );
    trigger.addDayOfWeekRecurrence( inc );
    trigger.addDayOfWeekRecurrence( seq );
    trigger.addDayOfWeekRecurrence( list );
    assertRecurrencesCorrect( "DAYOFWEEK", 4, process( trigger ).getDayOfWeekRecurrences() );
  }

  private void assertRecurrencesCorrect( String dimension, int expectedCount, ITimeWrapper recurrences ) {
    int count = 0;
    for ( ITimeRecurrence rec : recurrences.getRecurrences() ) {
      if ( rec instanceof IncrementalRecurrence ) {
        count++;
        IncrementalRecurrence i = (IncrementalRecurrence) rec;
        Assert.assertEquals( "Wrong starting value for dimension " + dimension, inc.getStartingValue(), i
            .getStartingValue() );
        Assert.assertEquals( "Wrong increment for dimension " + dimension, inc.getIncrement(), i.getIncrement() );
      }
      if ( rec instanceof SequentialRecurrence ) {
        count++;
        SequentialRecurrence s = (SequentialRecurrence) rec;
        Assert.assertEquals( "Wrong first value for dimension " + dimension, seq.getFirstValue(), s.getFirstValue() );
        Assert.assertEquals( "Wrong last value for dimension " + dimension, seq.getLastValue(), s.getLastValue() );
      }
      if ( rec instanceof RecurrenceList ) {
        count++;
        RecurrenceList l = (RecurrenceList) rec;
        Assert.assertEquals( "Wrong first value for dimension " + dimension, list[0], l.getValues().get( 0 ) );
        Assert.assertEquals( "Wrong second value for dimension " + dimension, list[1], l.getValues().get( 1 ) );
      }
      if ( rec instanceof QualifiedDayOfWeek ) {
        count++;
        QualifiedDayOfWeek q = (QualifiedDayOfWeek) rec;
        Assert.assertEquals( "Wrong day of week for dimension " + dimension, qday.getDayOfWeek(), q.getDayOfWeek() );
        Assert.assertEquals( "Wrong qualifier for dimension " + dimension, qday.getQualifier(), q.getQualifier() );
      }
    }
    Assert.assertEquals( "A recurrence type was expected but not found", expectedCount, count );
  }

}
TOP

Related Classes of org.pentaho.platform.scheduler2.ws.test.ComplexTriggerJAXBTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.