Node.setData(): add ability to change node's data after instantiation

This commit is contained in:
Paul Campbell 2016-05-24 14:30:00 +01:00
parent 2ed0024bc0
commit fc55bacb04
3 changed files with 23 additions and 1 deletions

View file

@ -34,6 +34,13 @@ public interface Node<T> {
*/
T getData();
/**
* Set the data held within the node.
*
* @param data the node's data
*/
void setData(T data);
/**
* Returns true if the node is empty (has no data).
*

View file

@ -16,7 +16,7 @@ import java.util.function.Function;
*/
public class NodeItem<T> implements Node<T> {
private final T data;
private T data;
private final Set<Node<T>> children = new HashSet<>();
@ -127,6 +127,11 @@ public class NodeItem<T> implements Node<T> {
return data;
}
@Override
public void setData(final T data) {
this.data = data;
}
@Override
public boolean isEmpty() {
return data == null;

View file

@ -878,4 +878,14 @@ public class NodeItemTest {
"[ lucy]");
assertThat(lines).containsSubsequence("[root]", "[ bob]");
}
@Test
public void canChangeNodeData() {
//given
node = new NodeItem<>("initial");
//when
node.setData("updated");
//then
assertThat(node.getData()).isEqualTo("updated");
}
}