I am trying to test my toString method below but get an error. I tried to use the debugger but that too freezes on me. Here is the failure trace:
java.lang.StackOverflowError
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at Rectangle1.BinaryNode.toString(BinaryNode.java:158)
at Rectangle1.BinaryNode.toString(BinaryNode.java:161)
My test method (when I comment out the last assert, the test passes):
public void testToString() {
assertEquals("null, 15, 10", node3.toString());
node3.setLeft(node2);
assertEquals("10, 15, 10", node3.toString());
node3.left().setRight(node2);
assertEquals(10, node3.left().right().key(), 0.1);
assertNull(node3.left().left());
assertEquals("10, 10, 15, 10", node3.toString());
}
And this is the toString() method:
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
if (left != null)
{
builder.append(left.toString() + ", ");
}
builder.append(key);
if (right != null)
{
builder.append(", " + right.toString());
}
return builder.toString();
}
A node is declared as:
private BinaryNode<Integer, String> node1;
private BinaryNode<Integer, String> node2;
private BinaryNode<Integer, String> node3;
this.node1 = new BinaryNode<>();
this.node2 = new BinaryNode<>(10, "bonjr");
this.node3 = new BinaryNode<>(15, "Chika", node1, node2);
Aucun commentaire:
Enregistrer un commentaire