package nodebox.node;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class PublishedPortTest {
public static final Node number42Node = Node.ROOT
.withName("number42")
.withFunction("math/number")
.withInputAdded(Port.floatPort("number", 42));
public static final Node number23Node = Node.ROOT
.withName("number23")
.withFunction("math/number")
.withInputAdded(Port.floatPort("number", 23));
public static final Node net = Node.NETWORK
.withChildAdded(number42Node)
.withRenderedChildName("number42");
@Test
public void testPublishInput() {
Node n = net;
assertEquals(0, n.getPublishedPorts().size());
n = n.publish("number42", "number", "pNumber");
assertEquals(1, n.getPublishedPorts().size());
assertTrue(n.hasPublishedInput("number42", "number"));
}
@Test(expected = IllegalArgumentException.class)
public void testPublishFromNonexistentChild() {
net.publish("number3", "number", "pNumber");
}
@Test(expected = IllegalArgumentException.class)
public void testPublishFromNonexistentChildInput() {
net.publish("number42", "myNumber", "pNumber");
}
@Test(expected = IllegalArgumentException.class)
public void testPublishSameInputTwice() {
net.publish("number42", "number", "pNumber")
.publish("number42", "number", "pNumber");
}
@Test(expected = IllegalArgumentException.class)
public void testAlreadyUsedPublishedName() {
net.withChildAdded(number23Node)
.publish("number42", "number", "pNumber")
.publish("number23", "number", "pNumber");
}
@Test
public void testUnpublishInput() {
Node n = net;
n = n.publish("number42", "number", "pNumber");
assertEquals(1, n.getPublishedPorts().size());
n = n.unpublish("number42", "number");
assertEquals(0, n.getPublishedPorts().size());
assertFalse(n.hasPublishedInput("number42", "number"));
n = n.publish("number42", "number", "aNumber");
assertEquals(1, n.getPublishedPorts().size());
assertTrue(n.hasPublishedInput("aNumber"));
n = n.unpublish("aNumber");
assertEquals(0, n.getPublishedPorts().size());
assertFalse(n.hasPublishedInput("aNumber"));
}
@Test
public void testChildRenaming() {
Node n = net;
n = n.publish("number42", "number", "pNumber");
n = n.withChildRenamed("number42", "myNumber42");
assertTrue(n.hasInput("pNumber"));
assertEquals("myNumber42", n.getInput("pNumber").getChildNodeName());
assertEquals("number", n.getInput("pNumber").getChildPortName());
}
}