use of pcgen.base.formula.base.EvaluationManager in project pcgen by PCGen.
the class LookupFunctionTest method testNoLookup.
@Test
public void testNoLookup() {
Finder finder = new Finder();
DataTable dt = doTableSetup();
finder.map.put(DataTable.class, "A", dt);
finder.map.put(TableColumn.class, "Name", buildColumn("Name", stringManager));
finder.map.put(TableColumn.class, "Value", buildColumn("Value", numberManager));
finder.map.put(TableColumn.class, "Result", buildColumn("Result", stringManager));
VariableLibrary vl = getVariableLibrary();
WriteableVariableStore vs = getVariableStore();
TableFormatFactory fac = new TableFormatFactory(finder);
FormatManager<?> tableMgr = fac.build("STRING,NUMBER", formatLibrary);
vl.assertLegalVariableID("TableA", getGlobalScope(), tableMgr);
ColumnFormatFactory cfac = new ColumnFormatFactory(finder);
FormatManager<?> columnMgr = cfac.build("NUMBER", formatLibrary);
vl.assertLegalVariableID("ResultColumn", getGlobalScope(), columnMgr);
VariableID tableID = vl.getVariableID(getGlobalScopeInst(), "TableA");
vs.put(tableID, tableMgr.convert("A"));
VariableID columnID = vl.getVariableID(getGlobalScopeInst(), "ResultColumn");
vs.put(columnID, columnMgr.convert("Value"));
String formula = "lookup(TableA,\"Oh No\",ResultColumn)";
SimpleNode node = TestUtilities.doParse(formula);
isValid(formula, node, numberManager, null);
isStatic(formula, node, false);
EvaluationManager manager = generateManager();
Object result = new EvaluateVisitor().visit(node, manager);
if (!result.equals(0)) {
TestCase.fail("Expected Invalid result, should have been zero due to invalid column: " + result);
}
}
use of pcgen.base.formula.base.EvaluationManager in project pcgen by PCGen.
the class SetNumberModifierTest method testGetFormulaModifier.
@Test
public void testGetFormulaModifier() {
SplitFormulaSetup setup = new SplitFormulaSetup();
setup.loadBuiltIns();
setup.getLegalScopeLibrary().registerScope(varScope);
IndividualSetup iSetup = new IndividualSetup(setup, "Global", new SimpleVariableStore());
SetModifierFactory factory = new SetModifierFactory();
Modifier<Number> modifier = factory.getModifier(35, "6+5", new ManagerFactory() {
}, iSetup.getFormulaManager(), varScope, numManager);
assertEquals((35L << 32) + factory.getInherentPriority(), modifier.getPriority());
assertSame(Number.class, modifier.getVariableFormat());
EvaluationManager evalManager = EvalManagerUtilities.getInputEM(4.3);
assertEquals(11, modifier.process(evalManager.getWith(EvaluationManager.FMANAGER, iSetup.getFormulaManager())));
}
use of pcgen.base.formula.base.EvaluationManager in project pcgen by PCGen.
the class AbstractFormulaTestCase method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
setup = new SplitFormulaSetup();
LegalScopeUtilities.loadLegalScopeLibrary(setup.getLegalScopeLibrary());
localSetup = new IndividualSetup(setup, "Global", new MonitorableVariableStore());
setup.getSolverFactory().addSolverFormat(Number.class, new Modifier() {
@Override
public Object process(EvaluationManager manager) {
return 0;
}
@Override
public void getDependencies(DependencyManager fdm) {
}
@Override
public long getPriority() {
return 0;
}
@Override
public Class getVariableFormat() {
return Number.class;
}
@Override
public String getIdentification() {
return "SET";
}
@Override
public String getInstructions() {
return "0";
}
});
setup.getSolverFactory().addSolverFormat(String.class, new Modifier() {
@Override
public Object process(EvaluationManager manager) {
return "";
}
@Override
public void getDependencies(DependencyManager fdm) {
}
@Override
public long getPriority() {
return 0;
}
@Override
public Class getVariableFormat() {
return String.class;
}
@Override
public String getIdentification() {
return "SET";
}
@Override
public String getInstructions() {
return "";
}
});
}
use of pcgen.base.formula.base.EvaluationManager in project pcgen by PCGen.
the class AbstractFormulaTestCase method evaluatesTo.
public void evaluatesTo(String formula, SimpleNode node, Object valueOf, LoadContext context) {
EvaluationManager manager = generateManager(context);
performEvaluation(formula, node, valueOf, manager);
}
use of pcgen.base.formula.base.EvaluationManager in project pcgen by PCGen.
the class LookupFunctionTest method testNoColumn.
@Test
public void testNoColumn() {
Finder finder = new Finder();
DataTable dt = doTableSetup();
finder.map.put(DataTable.class, "A", dt);
finder.map.put(TableColumn.class, "Name", buildColumn("Name", stringManager));
finder.map.put(TableColumn.class, "Value", buildColumn("Value", numberManager));
finder.map.put(TableColumn.class, "Result", buildColumn("Result", stringManager));
VariableLibrary vl = getVariableLibrary();
WriteableVariableStore vs = getVariableStore();
TableFormatFactory fac = new TableFormatFactory(finder);
FormatManager<?> tableMgr = fac.build("STRING,NUMBER", formatLibrary);
vl.assertLegalVariableID("TableA", getGlobalScope(), tableMgr);
ColumnFormatFactory cfac = new ColumnFormatFactory(finder);
FormatManager<?> columnMgr = cfac.build("NUMBER", formatLibrary);
vl.assertLegalVariableID("ResultColumn", getGlobalScope(), columnMgr);
VariableID tableID = vl.getVariableID(getGlobalScopeInst(), "TableA");
vs.put(tableID, tableMgr.convert("A"));
VariableID columnID = vl.getVariableID(getGlobalScopeInst(), "ResultColumn");
vs.put(columnID, columnMgr.convert("Result"));
String formula = "lookup(TableA,\"That\",ResultColumn)";
SimpleNode node = TestUtilities.doParse(formula);
isValid(formula, node, numberManager, null);
isStatic(formula, node, false);
EvaluationManager manager = generateManager();
Object result = new EvaluateVisitor().visit(node, manager);
if (result instanceof Number) {
TestCase.fail("Expected Invalid result, should have been a string due to invalid column: " + result);
}
}
Aggregations