package org.mafagafogigante.dungeon.schema.rules;
import org.mafagafogigante.dungeon.schema.JsonRule;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonValue;
import org.junit.Test;
public class VariableArrayJsonRuleTest {
private static final JsonRule rule = new VariableArrayJsonRule(new BooleanJsonRule());
@Test(expected = IllegalArgumentException.class)
public void variableArrayJsonRuleShouldFailOnNonArrayType() {
JsonValue jsonValue = Json.value(true);
rule.validate(jsonValue);
}
@Test
public void variableArrayJsonRuleShouldPassOnEmptyArray() {
JsonArray jsonArray = new JsonArray();
rule.validate(jsonArray);
}
@Test
public void variableArrayJsonRuleShouldPassOnSingleElementArray() {
JsonArray jsonArray = new JsonArray();
jsonArray.add(true);
rule.validate(jsonArray);
}
@Test(expected = IllegalArgumentException.class)
public void variableArrayJsonRuleShouldFailOnInvalidSingleElementArray() {
JsonArray jsonArray = new JsonArray();
jsonArray.add("A");
rule.validate(jsonArray);
}
@Test
public void variableArrayJsonRuleShouldPassOnMultipleElementArray() {
JsonArray jsonArray = new JsonArray();
jsonArray.add(true);
jsonArray.add(false);
rule.validate(jsonArray);
}
@Test(expected = IllegalArgumentException.class)
public void variableArrayJsonRuleShouldFailOnInvalidFirstElement() {
JsonArray jsonArray = new JsonArray();
jsonArray.add("A");
jsonArray.add(false);
rule.validate(jsonArray);
}
@Test(expected = IllegalArgumentException.class)
public void variableArrayJsonRuleShouldFailOnInvalidSecondElement() {
JsonArray jsonArray = new JsonArray();
jsonArray.add(true);
jsonArray.add("B");
rule.validate(jsonArray);
}
@Test(expected = IllegalArgumentException.class)
public void variableArrayJsonRuleShouldFailOnInvalidElements() {
JsonArray jsonArray = new JsonArray();
jsonArray.add("A");
jsonArray.add("B");
rule.validate(jsonArray);
}
}