Added bool argument
This commit is contained in:
parent
eaf4c6175d
commit
74f7c0e6b0
2 changed files with 136 additions and 0 deletions
|
@ -0,0 +1,46 @@
|
|||
package com.mojang.brigadier.arguments;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.context.CommandContextBuilder;
|
||||
import com.mojang.brigadier.context.FixedParsedArgument;
|
||||
import com.mojang.brigadier.context.ParsedArgument;
|
||||
import com.mojang.brigadier.exceptions.CommandException;
|
||||
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
|
||||
|
||||
public class BoolArgumentType implements ArgumentType<Boolean> {
|
||||
public static final SimpleCommandExceptionType ERROR_INVALID = new SimpleCommandExceptionType("argument.bool.invalid", "Value must be true or false");
|
||||
|
||||
private BoolArgumentType() {
|
||||
}
|
||||
|
||||
public static BoolArgumentType bool() {
|
||||
return new BoolArgumentType();
|
||||
}
|
||||
|
||||
public static boolean getBool(CommandContext<?> context, String name) {
|
||||
return context.getArgument(name, Boolean.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <S> ParsedArgument<S, Boolean> parse(String command, CommandContextBuilder<S> contextBuilder) throws CommandException {
|
||||
int end = command.indexOf(CommandDispatcher.ARGUMENT_SEPARATOR);
|
||||
String raw = command;
|
||||
if (end > -1) {
|
||||
raw = command.substring(0, end);
|
||||
}
|
||||
|
||||
if (raw.equals("true")) {
|
||||
return new FixedParsedArgument<>(raw, true);
|
||||
} else if (raw.equals("false")) {
|
||||
return new FixedParsedArgument<>(raw, false);
|
||||
} else {
|
||||
throw ERROR_INVALID.create();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsageText() {
|
||||
return "bool";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
package com.mojang.brigadier.arguments;
|
||||
|
||||
import com.mojang.brigadier.context.CommandContextBuilder;
|
||||
import com.mojang.brigadier.context.ParsedArgument;
|
||||
import com.mojang.brigadier.exceptions.CommandException;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static com.mojang.brigadier.arguments.BoolArgumentType.ERROR_INVALID;
|
||||
import static com.mojang.brigadier.arguments.BoolArgumentType.bool;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class BoolArgumentTypeTest {
|
||||
private BoolArgumentType type;
|
||||
@Mock
|
||||
private Object source;
|
||||
@Mock
|
||||
private CommandContextBuilder<Object> context;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
type = bool();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_true() throws Exception {
|
||||
ParsedArgument<Object, Boolean> parse = type.parse("true", context);
|
||||
assertThat(parse.getResult(source), is(true));
|
||||
assertThat(parse.getRaw(), equalTo("true"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_false() throws Exception {
|
||||
ParsedArgument<Object, Boolean> parse = type.parse("false", context);
|
||||
assertThat(parse.getResult(source), is(false));
|
||||
assertThat(parse.getRaw(), equalTo("false"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_trailing() throws Exception {
|
||||
ParsedArgument<Object, Boolean> parse = type.parse("false hello world", context);
|
||||
assertThat(parse.getResult(source), is(false));
|
||||
assertThat(parse.getRaw(), equalTo("false"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_invalid() throws Exception {
|
||||
try {
|
||||
type.parse("tuesday", context);
|
||||
} catch (CommandException ex) {
|
||||
assertThat(ex.getType(), is(ERROR_INVALID));
|
||||
assertThat(ex.getData(), equalTo(Collections.emptyMap()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_empty() throws Exception {
|
||||
try {
|
||||
type.parse("", context);
|
||||
} catch (CommandException ex) {
|
||||
assertThat(ex.getType(), is(ERROR_INVALID));
|
||||
assertThat(ex.getData(), equalTo(Collections.emptyMap()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_empty_remaining() throws Exception {
|
||||
try {
|
||||
type.parse(" true", context);
|
||||
} catch (CommandException ex) {
|
||||
assertThat(ex.getType(), is(ERROR_INVALID));
|
||||
assertThat(ex.getData(), equalTo(Collections.emptyMap()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usageText() throws Exception {
|
||||
assertThat(type.getUsageText(), equalTo("bool"));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue