/** * 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 static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Test; /** * Tests the ConnectionCollector. * * @author carcassi */ public class ConnectionCollectorTest { @Test public void inputOutput() { ConnectionCollector collector = new ConnectionCollector(); assertThat(collector.readValue(), equalTo(true)); WriteFunction<Boolean> firstWriteFunction = collector.addChannel("first"); assertThat(collector.readValue(), equalTo(false)); firstWriteFunction.writeValue(false); assertThat(collector.readValue(), equalTo(false)); WriteFunction<Boolean> secondWriteFunction = collector.addChannel("second"); secondWriteFunction.writeValue(true); assertThat(collector.readValue(), equalTo(false)); firstWriteFunction.writeValue(true); assertThat(collector.readValue(), equalTo(true)); collector.removeChannel("second"); assertThat(collector.readValue(), equalTo(true)); secondWriteFunction = collector.addChannel("second"); assertThat(collector.readValue(), equalTo(false)); } @Test(expected=IllegalArgumentException.class) public void removingUnknownChannel() { ConnectionCollector collector = new ConnectionCollector(); collector.removeChannel("never"); } @Test(expected=IllegalStateException.class) public void usingDeregisteredWriteFunction() { ConnectionCollector collector = new ConnectionCollector(); WriteFunction<Boolean> channelWriteFunction = collector.addChannel("first"); collector.removeChannel("first"); channelWriteFunction.writeValue(true); } @Test public void sameChannelMultipleTimes() { ConnectionCollector collector = new ConnectionCollector(); WriteFunction<Boolean> channelWriteFunction1 = collector.addChannel("first"); WriteFunction<Boolean> channelWriteFunction2 = collector.addChannel("first"); assertThat(collector.readValue(), equalTo(false)); channelWriteFunction1.writeValue(true); assertThat(channelWriteFunction1, sameInstance(channelWriteFunction2)); assertThat(collector.readValue(), equalTo(true)); collector.removeChannel("first"); assertThat(collector.readValue(), equalTo(true)); channelWriteFunction1.writeValue(false); assertThat(collector.readValue(), equalTo(false)); collector.removeChannel("first"); assertThat(collector.readValue(), equalTo(true)); } }