use of com.google.api.expr.v1alpha1.Expr.CreateStruct.Entry in project cel-java by projectnessie.
the class AttributesTest method attributeStateTracking.
@ParameterizedTest
@MethodSource("attributeStateTrackingTests")
void attributeStateTracking(TestDef tc) {
Source src = Source.newTextSource(tc.expr);
ParseResult parsed = Parser.parseAllMacros(src);
assertThat(parsed.hasErrors()).isFalse();
Container cont = Container.defaultContainer;
TypeRegistry reg = newRegistry();
CheckerEnv env = newStandardCheckerEnv(cont, reg);
if (tc.env != null) {
env.add(tc.env);
}
CheckResult checkResult = Checker.Check(parsed, src, env);
if (parsed.hasErrors()) {
throw new IllegalArgumentException(parsed.getErrors().toDisplayString());
}
AttributeFactory attrs = newAttributeFactory(cont, reg, reg);
Interpreter interp = newStandardInterpreter(cont, reg, reg, attrs);
// Show that program planning will now produce an error.
EvalState st = newEvalState();
Interpretable i = interp.newInterpretable(checkResult.getCheckedExpr(), optimize(), trackState(st));
Activation in = newActivation(tc.in);
Val out = i.eval(in);
assertThat(out).extracting(o -> o.equal(tc.out)).isSameAs(True);
for (Entry<Object, Object> iv : tc.state.entrySet()) {
long id = ((Number) iv.getKey()).longValue();
Object val = iv.getValue();
Val stVal = st.value(id);
assertThat(stVal).withFailMessage(() -> String.format("id(%d), val=%s, stVal=%s", id, val, stVal)).isNotNull();
assertThat(stVal).withFailMessage(() -> String.format("id(%d), val=%s, stVal=%s", id, val, stVal)).isEqualTo(DefaultTypeAdapter.Instance.nativeToValue(val));
deepEquals(String.format("id(%d)", id), stVal.value(), val);
}
}
Aggregations