/**
*
*/
package xhail.core.terms;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.BeforeClass;
import org.junit.Test;
import xhail.core.terms.Placemarker.Type;
/**
* @author stefano
*
*/
public class SchemeTest {
private static final String FLUENT = "fluent";
private static final String FLUENT_V1 = "fluent(V1)";
private static final String HAPPENS = "happens";
private static final String HOLDS_AT = "holdsAt";
private static Scheme scheme1;
private static Scheme scheme2;
private static final String SUGAR = "sugar";
private static final String SUGAR_V1 = "sugar(V1)";
private static final String TIME = "time";
private static final String TIME_V2 = "time(V2)";
private static final String USE = "use";
private static final String V1 = "V1";
private static final String V2 = "V2";
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
// #modeh happens(use($sugar), +time).
scheme1 = new Scheme.Builder(HAPPENS) //
.addTerm(new Scheme.Builder(USE).addTerm(//
new Placemarker.Builder(SUGAR).setType(Type.CONSTANT).build()).build()) //
.addTerm(new Placemarker.Builder(TIME).setType(Type.INPUT).build()) //
.build();
// #modeb holdsAt($fluent, +time).
scheme2 = new Scheme.Builder(HOLDS_AT) //
.addTerm(new Placemarker.Builder(FLUENT).setType(Type.CONSTANT).build()) //
.addTerm(new Placemarker.Builder(TIME).setType(Type.INPUT).build()) //
.build();
}
@Test
public void testPlacemarkers1() {
Placemarker[] result = scheme1.getPlacemarkers();
assertNotNull("Scheme1: placemarkers can not be null", result);
assertEquals("Scheme1: placemarkers must have size 2", 2, result.length);
assertEquals("Scheme1: first placemarker must be CONSTANT", Type.CONSTANT, result[0].getType());
assertEquals("Scheme1: first placemarker must be 'sugar'", SUGAR, result[0].getIdentifier());
assertEquals("Scheme1: second placemarker must be CONSTANT", Type.INPUT, result[1].getType());
assertEquals("Scheme1: second placemarker must be 'time'", TIME, result[1].getIdentifier());
}
@Test
public void testPlacemarkers2() {
Placemarker[] result = scheme2.getPlacemarkers();
assertNotNull("Scheme2: placemarkers can not be null", result);
assertEquals("Scheme2: placemarkers must have size 2", 2, result.length);
assertEquals("Scheme2: first placemarker must be CONSTANT", Type.CONSTANT, result[0].getType());
assertEquals("Scheme2: first placemarker must be 'fluent'", FLUENT, result[0].getIdentifier());
assertEquals("Scheme2: second placemarker must be CONSTANT", Type.INPUT, result[1].getType());
assertEquals("Scheme2: second placemarker must be 'time'", TIME, result[1].getIdentifier());
}
@Test
public void testTypes1() {
String[] result = scheme1.getTypes();
assertNotNull("Scheme1: types can not be null", result);
assertEquals("Scheme1: types must have size 2", 2, result.length);
assertEquals("Scheme1: first type must be 'sugar(V1)'", SUGAR_V1, result[0]);
assertEquals("Scheme1: second type must be 'time(V2)'", TIME_V2, result[1]);
}
@Test
public void testTypes2() {
String[] result = scheme2.getTypes();
assertNotNull("Scheme2: types can not be null", result);
assertEquals("Scheme2: types must have size 2", 2, result.length);
assertEquals("Scheme2: first type must be 'fluent(V1)'", FLUENT_V1, result[0]);
assertEquals("Scheme2: second type must be 'time(V2)'", TIME_V2, result[1]);
}
@Test
public void testVariables1() {
String[] result = scheme1.getVariables();
assertNotNull("Scheme1: variables can not be null", result);
assertEquals("Scheme1: variables must have size 2", 2, result.length);
assertEquals("Scheme1: first variable must be 'V1'", V1, result[0]);
assertEquals("Scheme1: second variable must be 'V2'", V2, result[1]);
}
@Test
public void testVariables2() {
String[] result = scheme2.getVariables();
assertNotNull("Scheme2: variables can not be null", result);
assertEquals("Scheme2: variables must have size 2", 2, result.length);
assertEquals("Scheme2: first variable must be 'V1'", V1, result[0]);
assertEquals("Scheme2: second variable must be 'V2'", V2, result[1]);
}
}