/*
* *************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
* *************************************************************************************
*/
package com.espertech.esper.schedule;
import junit.framework.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.*;
import com.espertech.esper.type.ScheduleUnit;
public class TestScheduleSpec extends TestCase
{
public void testValidate()
{
// Test all units missing
EnumMap<ScheduleUnit, SortedSet<Integer>> unitValues = new EnumMap<ScheduleUnit, SortedSet<Integer>>(ScheduleUnit.class);
assertInvalid(unitValues);
// Test one unit missing
unitValues = (new ScheduleSpec()).getUnitValues();
unitValues.remove(ScheduleUnit.HOURS);
assertInvalid(unitValues);
// Test all units are wildcards
unitValues = (new ScheduleSpec()).getUnitValues();
new ScheduleSpec(unitValues);
// Test invalid value in month
SortedSet<Integer> values = new TreeSet<Integer>();
values.add(0);
unitValues.put(ScheduleUnit.MONTHS, values);
assertInvalid(unitValues);
// Test valid value in month
values = new TreeSet<Integer>();
values.add(1);
values.add(5);
unitValues.put(ScheduleUnit.MONTHS, values);
new ScheduleSpec(unitValues);
}
public void testCompress()
{
EnumMap<ScheduleUnit, SortedSet<Integer>> unitValues = new EnumMap<ScheduleUnit, SortedSet<Integer>>(ScheduleUnit.class);
unitValues = (new ScheduleSpec()).getUnitValues();
// Populate Month with all valid values
SortedSet<Integer> monthValues = new TreeSet<Integer>();
for (int i = ScheduleUnit.MONTHS.min(); i <= ScheduleUnit.MONTHS.max(); i++)
{
monthValues.add(i);
}
unitValues.put(ScheduleUnit.MONTHS, monthValues);
// Construct spec, test that month was replaced with wildcards
ScheduleSpec spec = new ScheduleSpec(unitValues);
assertTrue(spec.getUnitValues().get(ScheduleUnit.MONTHS) == null);
}
private void assertInvalid(EnumMap<ScheduleUnit, SortedSet<Integer>> unitValues)
{
try
{
new ScheduleSpec(unitValues);
assertFalse(true);
}
catch (IllegalArgumentException ex)
{
log.debug(".assertInvalid Expected exception, msg=" + ex.getMessage());
// Expected exception
}
}
private static final Log log = LogFactory.getLog(TestScheduleSpec.class);
}