Add equality checking to each command node

This commit is contained in:
Nathan Adams 2014-09-25 16:34:44 +02:00
parent f91bc15e19
commit 5760f94009
6 changed files with 128 additions and 0 deletions

View file

@ -38,4 +38,26 @@ public class ArgumentCommandNode<T> extends CommandNode {
return "";
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ArgumentCommandNode)) return false;
ArgumentCommandNode that = (ArgumentCommandNode) o;
if (!name.equals(that.name)) return false;
if (!type.equals(that.type)) return false;
if (!getChildren().equals(that.getChildren())) return false;
return true;
}
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + type.hashCode();
result = 31 * result + getChildren().hashCode();
return result;
}
}

View file

@ -29,4 +29,24 @@ public class LiteralCommandNode extends CommandNode {
int start = expected.length();
return command.substring(start);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof LiteralCommandNode)) return false;
LiteralCommandNode that = (LiteralCommandNode) o;
if (!literal.equals(that.literal)) return false;
if (!getChildren().equals(that.getChildren())) return false;
return true;
}
@Override
public int hashCode() {
int result = literal.hashCode();
result = 31 * result + getChildren().hashCode();
return result;
}
}

View file

@ -13,4 +13,21 @@ public class RootCommandNode extends CommandNode {
public String parse(String command, CommandContextBuilder contextBuilder) throws IllegalArgumentSyntaxException, ArgumentValidationException {
return command;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof RootCommandNode)) return false;
RootCommandNode that = (RootCommandNode) o;
if (!getChildren().equals(that.getChildren())) return false;
return true;
}
@Override
public int hashCode() {
return getChildren().hashCode();
}
}

View file

@ -1,5 +1,6 @@
package net.minecraft.commands.tree;
import com.google.common.testing.EqualsTester;
import net.minecraft.commands.context.CommandContextBuilder;
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
import org.junit.Before;
@ -40,4 +41,30 @@ public class ArgumentCommandNodeTest {
public void testParseInvalid() throws Exception {
node.parse("foo", contextBuilder);
}
@Test
public void testEquals() throws Exception {
new EqualsTester()
.addEqualityGroup(
argument("foo", integer()).build(),
argument("foo", integer()).build()
)
.addEqualityGroup(
argument("bar", integer(-100, 100)).build(),
argument("bar", integer(-100, 100)).build()
)
.addEqualityGroup(
argument("foo", integer(-100, 100)).build(),
argument("foo", integer(-100, 100)).build()
)
.addEqualityGroup(
argument("foo", integer()).then(
argument("bar", integer())
).build(),
argument("foo", integer()).then(
argument("bar", integer())
).build()
)
.testEquals();
}
}

View file

@ -1,5 +1,6 @@
package net.minecraft.commands.tree;
import com.google.common.testing.EqualsTester;
import net.minecraft.commands.context.CommandContextBuilder;
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
import org.junit.Before;
@ -38,4 +39,26 @@ public class LiteralCommandNodeTest {
public void testParseInvalid() throws Exception {
node.parse("bar", contextBuilder);
}
@Test
public void testEquals() throws Exception {
new EqualsTester()
.addEqualityGroup(
literal("foo").build(),
literal("foo").build()
)
.addEqualityGroup(
literal("bar").build(),
literal("bar").build()
)
.addEqualityGroup(
literal("foo").then(
literal("bar")
).build(),
literal("foo").then(
literal("bar")
).build()
)
.testEquals();
}
}

View file

@ -1,9 +1,11 @@
package net.minecraft.commands.tree;
import com.google.common.testing.EqualsTester;
import net.minecraft.commands.context.CommandContextBuilder;
import org.junit.Before;
import org.junit.Test;
import static net.minecraft.commands.builder.LiteralArgumentBuilder.literal;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
@ -18,6 +20,23 @@ public class RootCommandNodeTest {
@Test
public void testParse() throws Exception {
assertThat(node.parse("foo bar baz", new CommandContextBuilder()), is("foo bar baz"));
}
@Test
public void testEquals() throws Exception {
new EqualsTester()
.addEqualityGroup(
new RootCommandNode(),
new RootCommandNode()
)
.addEqualityGroup(
new RootCommandNode() {{
addChild(literal("foo").build());
}},
new RootCommandNode() {{
addChild(literal("foo").build());
}}
)
.testEquals();
}
}