/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * 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 com.espertech.esper.type.ScheduleUnit; import junit.framework.TestCase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.EnumMap; import java.util.SortedSet; import java.util.TreeSet; 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, null, null, null); // 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, null, null, null); } 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, null, null, null); assertTrue(spec.getUnitValues().get(ScheduleUnit.MONTHS) == null); } private void assertInvalid(EnumMap<ScheduleUnit, SortedSet<Integer>> unitValues) { try { new ScheduleSpec(unitValues, null, null, null); assertFalse(true); } catch (IllegalArgumentException ex) { log.debug(".assertInvalid Expected exception, msg=" + ex.getMessage()); // Expected exception } } private static final Logger log = LoggerFactory.getLogger(TestScheduleSpec.class); }