/** * Copyright (c) 2014-2017 by the respective copyright holders. * 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 */ package org.eclipse.smarthome.core.scheduler; import static org.junit.Assert.*; import java.text.ParseException; import org.eclipse.smarthome.core.scheduler.ExpressionThreadPoolManager.ExpressionThreadPoolExecutor; import org.junit.Test; public class ExpressionThreadPoolExecutorTest { private ExpressionThreadPoolExecutor scheduler = ExpressionThreadPoolManager.getExpressionScheduledPool("test"); protected boolean success; @Test public void testScheduleAndRemove() throws ParseException, InterruptedException { Runnable runnable = new Runnable() { @Override public void run() { success = true; } }; success = false; CronExpression expression = new CronExpression("0/1 * * * * ?"); scheduler.schedule(runnable, expression); Thread.sleep(1500); assertTrue(success); boolean removed = scheduler.remove(expression); assertTrue(removed); success = false; Thread.sleep(1500); assertFalse(success); assertEquals(0, scheduler.getQueue().size()); } @Test public void testScheduleAndRemoveRunnable() throws ParseException, InterruptedException { Runnable runnable = new Runnable() { @Override public void run() { success = true; } }; success = false; CronExpression expression = new CronExpression("0/1 * * * * ?"); scheduler.schedule(runnable, expression); Thread.sleep(1500); assertTrue(success); boolean removed = scheduler.remove(runnable); assertTrue(removed); success = false; Thread.sleep(1500); assertFalse(success); assertEquals(0, scheduler.getQueue().size()); } }