Search in sources :

Example 6 with Entry

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);
    }
}
Also used : Val(org.projectnessie.cel.common.types.ref.Val) Cost.estimateCost(org.projectnessie.cel.interpreter.Coster.Cost.estimateCost) Arrays(java.util.Arrays) AttributePattern.newPartialAttributeFactory(org.projectnessie.cel.interpreter.AttributePattern.newPartialAttributeFactory) ParseResult(org.projectnessie.cel.parser.Parser.ParseResult) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Interpreter.optimize(org.projectnessie.cel.interpreter.Interpreter.optimize) Source(org.projectnessie.cel.common.Source) AttributePattern.newAttributePattern(org.projectnessie.cel.interpreter.AttributePattern.newAttributePattern) Activation.emptyActivation(org.projectnessie.cel.interpreter.Activation.emptyActivation) IntType(org.projectnessie.cel.common.types.IntT.IntType) True(org.projectnessie.cel.common.types.BoolT.True) Interpreter.trackState(org.projectnessie.cel.interpreter.Interpreter.trackState) Map(java.util.Map) CheckerEnv.newStandardCheckerEnv(org.projectnessie.cel.checker.CheckerEnv.newStandardCheckerEnv) Val(org.projectnessie.cel.common.types.ref.Val) Container.newContainer(org.projectnessie.cel.common.containers.Container.newContainer) TypeRegistry(org.projectnessie.cel.common.types.ref.TypeRegistry) MethodSource(org.junit.jupiter.params.provider.MethodSource) False(org.projectnessie.cel.common.types.BoolT.False) StringT.stringOf(org.projectnessie.cel.common.types.StringT.stringOf) Decls(org.projectnessie.cel.checker.Decls) IntT.intOf(org.projectnessie.cel.common.types.IntT.intOf) Test(org.junit.jupiter.api.Test) CheckerEnv(org.projectnessie.cel.checker.CheckerEnv) List(java.util.List) UnknownT.unknownOf(org.projectnessie.cel.common.types.UnknownT.unknownOf) Entry(java.util.Map.Entry) DefaultTypeAdapter(org.projectnessie.cel.common.types.pb.DefaultTypeAdapter) Activation.newPartialActivation(org.projectnessie.cel.interpreter.Activation.newPartialActivation) Any(com.google.protobuf.Any) Err.newErr(org.projectnessie.cel.common.types.Err.newErr) NestedMessage(com.google.api.expr.test.v1.proto3.TestAllTypesProto.TestAllTypes.NestedMessage) Checker(org.projectnessie.cel.checker.Checker) CheckResult(org.projectnessie.cel.checker.Checker.CheckResult) Parser(org.projectnessie.cel.parser.Parser) EvalState.newEvalState(org.projectnessie.cel.interpreter.EvalState.newEvalState) Util.deepEquals(org.projectnessie.cel.Util.deepEquals) Qualifier(org.projectnessie.cel.interpreter.AttributeFactory.Qualifier) ProtoTypeRegistry.newRegistry(org.projectnessie.cel.common.types.pb.ProtoTypeRegistry.newRegistry) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) Type(com.google.api.expr.v1alpha1.Type) AttributeFactory.newAttributeFactory(org.projectnessie.cel.interpreter.AttributeFactory.newAttributeFactory) NamespacedAttribute(org.projectnessie.cel.interpreter.AttributeFactory.NamespacedAttribute) UnknownT(org.projectnessie.cel.common.types.UnknownT) Container(org.projectnessie.cel.common.containers.Container) Interpretable.newConstValue(org.projectnessie.cel.interpreter.Interpretable.newConstValue) Attribute(org.projectnessie.cel.interpreter.AttributeFactory.Attribute) Decl(com.google.api.expr.v1alpha1.Decl) InterpretableConst(org.projectnessie.cel.interpreter.Interpretable.InterpretableConst) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Activation.newActivation(org.projectnessie.cel.interpreter.Activation.newActivation) TestAllTypes(com.google.api.expr.test.v1.proto3.TestAllTypesProto.TestAllTypes) Util.mapOf(org.projectnessie.cel.Util.mapOf) Interpreter.newStandardInterpreter(org.projectnessie.cel.interpreter.Interpreter.newStandardInterpreter) Interpreter.newStandardInterpreter(org.projectnessie.cel.interpreter.Interpreter.newStandardInterpreter) ParseResult(org.projectnessie.cel.parser.Parser.ParseResult) AttributePattern.newPartialAttributeFactory(org.projectnessie.cel.interpreter.AttributePattern.newPartialAttributeFactory) AttributeFactory.newAttributeFactory(org.projectnessie.cel.interpreter.AttributeFactory.newAttributeFactory) Activation.emptyActivation(org.projectnessie.cel.interpreter.Activation.emptyActivation) Activation.newPartialActivation(org.projectnessie.cel.interpreter.Activation.newPartialActivation) Activation.newActivation(org.projectnessie.cel.interpreter.Activation.newActivation) TypeRegistry(org.projectnessie.cel.common.types.ref.TypeRegistry) Source(org.projectnessie.cel.common.Source) MethodSource(org.junit.jupiter.params.provider.MethodSource) Container.newContainer(org.projectnessie.cel.common.containers.Container.newContainer) Container(org.projectnessie.cel.common.containers.Container) CheckResult(org.projectnessie.cel.checker.Checker.CheckResult) CheckerEnv.newStandardCheckerEnv(org.projectnessie.cel.checker.CheckerEnv.newStandardCheckerEnv) CheckerEnv(org.projectnessie.cel.checker.CheckerEnv) EvalState.newEvalState(org.projectnessie.cel.interpreter.EvalState.newEvalState) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Aggregations

Expr (com.google.api.expr.v1alpha1.Expr)4 Entry (com.google.api.expr.v1alpha1.Expr.CreateStruct.Entry)4 Val (org.projectnessie.cel.common.types.ref.Val)4 ArrayList (java.util.ArrayList)3 Any (com.google.protobuf.Any)2 ByteString (com.google.protobuf.ByteString)2 List (java.util.List)2 Map (java.util.Map)2 TestAllTypes (com.google.api.expr.test.v1.proto3.TestAllTypesProto.TestAllTypes)1 NestedMessage (com.google.api.expr.test.v1.proto3.TestAllTypesProto.TestAllTypes.NestedMessage)1 CheckRequest (com.google.api.expr.v1alpha1.CheckRequest)1 CheckResponse (com.google.api.expr.v1alpha1.CheckResponse)1 ConformanceServiceImplBase (com.google.api.expr.v1alpha1.ConformanceServiceGrpc.ConformanceServiceImplBase)1 Decl (com.google.api.expr.v1alpha1.Decl)1 ErrorSet (com.google.api.expr.v1alpha1.ErrorSet)1 EvalRequest (com.google.api.expr.v1alpha1.EvalRequest)1 EvalResponse (com.google.api.expr.v1alpha1.EvalResponse)1 Call (com.google.api.expr.v1alpha1.Expr.Call)1 Comprehension (com.google.api.expr.v1alpha1.Expr.Comprehension)1 CreateList (com.google.api.expr.v1alpha1.Expr.CreateList)1