/** * Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT * All rights reserved. Use is subject to license terms. See LICENSE.TXT */ package org.diirt.datasource; import java.util.Arrays; import java.util.Map; import java.util.Collections; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.hamcrest.Matchers.*; /** * * @author carcassi */ public class WritePlannerTest { public WritePlannerTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void initMocks() { MockitoAnnotations.initMocks(this); } @Mock ChannelHandler channel1; @Mock ChannelHandler channel2; @Mock ChannelHandler channel3; @Mock ChannelHandler channel4; @Test public void noDependencies() { when(channel1.getChannelName()).thenReturn("channel1"); when(channel2.getChannelName()).thenReturn("channel2"); when(channel3.getChannelName()).thenReturn("channel3"); WritePlanner planner = new WritePlanner(); planner.addChannel(channel1, 6.28, Collections.<String>emptySet()); planner.addChannel(channel2, 3.14, Collections.<String>emptySet()); planner.addChannel(channel3, 1.57, Collections.<String>emptySet()); Map<ChannelHandler, Object> nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(3)); assertThat(nextChannels.get(channel1), equalTo((Object) 6.28)); assertThat(nextChannels.get(channel2), equalTo((Object) 3.14)); assertThat(nextChannels.get(channel3), equalTo((Object) 1.57)); assertThat(planner.isDone(), equalTo(false)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel1"); assertThat(planner.isDone(), equalTo(false)); planner.removeChannel("channel2"); assertThat(planner.isDone(), equalTo(false)); planner.removeChannel("channel3"); assertThat(planner.isDone(), equalTo(true)); } @Test public void someDependencies1() { when(channel1.getChannelName()).thenReturn("channel1"); when(channel2.getChannelName()).thenReturn("channel2"); when(channel3.getChannelName()).thenReturn("channel3"); WritePlanner planner = new WritePlanner(); planner.addChannel(channel1, 6.28, Collections.<String>emptySet()); planner.addChannel(channel2, 3.14, Collections.singletonList("channel1")); planner.addChannel(channel3, 1.57, Collections.singletonList("channel1")); Map<ChannelHandler, Object> nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel1), equalTo((Object) 6.28)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel1"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(2)); assertThat(nextChannels.get(channel2), equalTo((Object) 3.14)); assertThat(nextChannels.get(channel3), equalTo((Object) 1.57)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel2"); assertThat(planner.isDone(), equalTo(false)); planner.removeChannel("channel3"); assertThat(planner.isDone(), equalTo(true)); } @Test public void someDependencies2() { when(channel1.getChannelName()).thenReturn("channel1"); when(channel2.getChannelName()).thenReturn("channel2"); when(channel3.getChannelName()).thenReturn("channel3"); WritePlanner planner = new WritePlanner(); planner.addChannel(channel1, 6.28, Collections.<String>emptySet()); planner.addChannel(channel2, 3.14, Collections.singletonList("channel1")); planner.addChannel(channel3, 1.57, Collections.singletonList("channel2")); Map<ChannelHandler, Object> nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel1), equalTo((Object) 6.28)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel1"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel2), equalTo((Object) 3.14)); assertThat(planner.isDone(), equalTo(false)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel2"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel3), equalTo((Object) 1.57)); assertThat(planner.isDone(), equalTo(false)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel3"); assertThat(planner.isDone(), equalTo(true)); } @Test public void someDependencies3() { when(channel1.getChannelName()).thenReturn("channel1"); when(channel2.getChannelName()).thenReturn("channel2"); when(channel3.getChannelName()).thenReturn("channel3"); when(channel4.getChannelName()).thenReturn("channel4"); WritePlanner planner = new WritePlanner(); planner.addChannel(channel1, 6.28, Collections.<String>emptySet()); planner.addChannel(channel2, 3.14, Collections.singletonList("channel1")); planner.addChannel(channel3, 1.57, Collections.singletonList("channel1")); planner.addChannel(channel4, 12.56, Arrays.asList("channel2", "channel3")); Map<ChannelHandler, Object> nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel1), equalTo((Object) 6.28)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel1"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(2)); assertThat(nextChannels.get(channel2), equalTo((Object) 3.14)); assertThat(nextChannels.get(channel3), equalTo((Object) 1.57)); assertThat(planner.isDone(), equalTo(false)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel2"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); assertThat(planner.isDone(), equalTo(false)); planner.removeChannel("channel3"); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(1)); assertThat(nextChannels.get(channel4), equalTo((Object) 12.56)); assertThat(planner.isDone(), equalTo(false)); nextChannels = planner.nextChannels(); assertThat(nextChannels.size(), equalTo(0)); planner.removeChannel("channel4"); assertThat(planner.isDone(), equalTo(true)); } }