Nodes: add utility class to create Node instances

This commit is contained in:
Paul Campbell 2016-08-21 11:37:15 +01:00
parent 39721e77c1
commit 51e8194db7
2 changed files with 128 additions and 0 deletions

View file

@ -0,0 +1,66 @@
package net.kemitix.node;
/**
* Utility class for {@link Node} items.
*
* @author pcampbell
*/
public final class Nodes {
private Nodes() {
}
/**
* Creates a new unnamed root node.
*
* @param data the data the node will contain
* @param <T> the type of the data
*
* @return the new node
*/
public static <T> Node<T> unnamedRoot(final T data) {
return new NodeItem<>(data);
}
/**
* Creates a new named root node.
*
* @param data the data the node will contain
* @param name the name of the node
* @param <T> the type of the data
*
* @return the new node
*/
public static <T> Node<T> namedRoot(final T data, final String name) {
return new NodeItem<>(data, name);
}
/**
* Creates a new unnamed child node.
*
* @param data the data the node will contain
* @param parent the parent of the node
* @param <T> the type of the data
*
* @return the new node
*/
public static <T> Node<T> unnamedChild(final T data, final Node<T> parent) {
return new NodeItem<>(data, parent);
}
/**
* Creates a new named child node.
*
* @param data the data the node will contain
* @param name the name of the node
* @param parent the parent of the node
* @param <T> the type of the data
*
* @return the new node
*/
public static <T> Node<T> namedChild(
final T data, final String name, final Node<T> parent) {
return new NodeItem<>(data, name, parent);
}
}

View file

@ -0,0 +1,62 @@
package net.kemitix.node;
import lombok.val;
import org.assertj.core.api.SoftAssertions;
import org.junit.Test;
import static net.trajano.commons.testing.UtilityClassTestUtil
.assertUtilityClassWellDefined;
/**
* Tests for {@link Nodes}.
*
* @author pcampbell
*/
public class NodesTest {
@Test
public void shouldBeValidUtilityClass() throws Exception {
assertUtilityClassWellDefined(Nodes.class);
}
@Test
public void shouldCreateUnnamedRoot() throws Exception {
val node = Nodes.unnamedRoot("data");
SoftAssertions softly = new SoftAssertions();
softly.assertThat(node.getData()).contains("data");
softly.assertThat(node.getName()).isNull();
softly.assertAll();
}
@Test
public void shouldCreateNamedRoot() throws Exception {
val node = Nodes.namedRoot("data", "name");
SoftAssertions softly = new SoftAssertions();
softly.assertThat(node.getData()).contains("data");
softly.assertThat(node.getName()).isEqualTo("name");
softly.assertAll();
}
@Test
public void shouldCreateUnnamedChild() throws Exception {
val parent = Nodes.unnamedRoot("root");
val node = Nodes.unnamedChild("data", parent);
SoftAssertions softly = new SoftAssertions();
softly.assertThat(node.getData()).contains("data");
softly.assertThat(node.getName()).isNull();
softly.assertThat(node.getParent()).contains(parent);
softly.assertAll();
}
@Test
public void shouldCreateNamedChild() throws Exception {
val parent = Nodes.unnamedRoot("root");
val node = Nodes.namedChild("data", "child", parent);
SoftAssertions softly = new SoftAssertions();
softly.assertThat(node.getData()).contains("data");
softly.assertThat(node.getName()).isEqualTo("child");
softly.assertThat(node.getParent()).contains(parent);
softly.assertAll();
}
}