Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions eval/eval/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,7 @@ cc_test(
deps = [
":cel_expression_flat_impl",
":evaluator_core",
"//base:attributes",
"//base:data",
"//common:constant",
"//common:expr",
Expand Down Expand Up @@ -587,14 +588,10 @@ cc_test(
deps = [
":cel_expression_flat_impl",
":evaluator_core",
"//base:attributes",
"//base:data",
"//common:expr",
"//eval/public:activation",
"//eval/public:cel_attribute",
"//eval/public:cel_value",
"//eval/public:unknown_attribute_set",
"//eval/public:unknown_set",
"//internal:status_macros",
"//internal:testing",
"//runtime:runtime_options",
Expand Down Expand Up @@ -856,14 +853,9 @@ cc_test(
":cel_expression_flat_impl",
":evaluator_core",
":ternary_step",
"//base:attributes",
"//base:data",
"//common:expr",
"//eval/public:activation",
"//eval/public:cel_attribute",
"//eval/public:cel_value",
"//eval/public:unknown_attribute_set",
"//eval/public:unknown_set",
"//internal:testing",
"//runtime:runtime_options",
"//runtime/internal:runtime_env",
Expand Down
54 changes: 0 additions & 54 deletions eval/eval/create_map_step_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -136,25 +136,6 @@ TEST_P(CreateMapStepTest, TestCreateEmptyMap) {
ASSERT_EQ(cel_map->size(), 0);
}

// Test message creation if unknown argument is passed
TEST(CreateMapStepTest, TestMapCreateWithUnknown) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
UnknownSet unknown_set;
std::vector<std::pair<CelValue, CelValue>> entries;

std::vector<std::string> kKeys = {"test2", "test1"};

entries.push_back(
{CelValue::CreateString(&kKeys[0]), CelValue::CreateInt64(2)});
entries.push_back({CelValue::CreateString(&kKeys[1]),
CelValue::CreateUnknownSet(&unknown_set)});

ASSERT_OK_AND_ASSIGN(CelValue result, RunCreateMapExpression(
env, entries, &arena, true, false));
ASSERT_TRUE(result.IsUnknownSet());
}

TEST(CreateMapStepTest, TestMapCreateWithError) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
Expand All @@ -172,41 +153,6 @@ TEST(CreateMapStepTest, TestMapCreateWithError) {
EXPECT_THAT(*result.ErrorOrDie(), StatusIs(absl::StatusCode::kCancelled));
}

TEST(CreateMapStepTest, TestMapCreateWithErrorRecursiveProgram) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
UnknownSet unknown_set;
absl::Status error = absl::CancelledError();
std::vector<std::pair<CelValue, CelValue>> entries;
entries.push_back({CelValue::CreateStringView("foo"),
CelValue::CreateUnknownSet(&unknown_set)});
entries.push_back(
{CelValue::CreateStringView("bar"), CelValue::CreateError(&error)});

ASSERT_OK_AND_ASSIGN(CelValue result, RunCreateMapExpression(
env, entries, &arena, true, true));
ASSERT_TRUE(result.IsError());
EXPECT_THAT(*result.ErrorOrDie(), StatusIs(absl::StatusCode::kCancelled));
}

TEST(CreateMapStepTest, TestMapCreateWithUnknownRecursiveProgram) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
UnknownSet unknown_set;
std::vector<std::pair<CelValue, CelValue>> entries;

std::vector<std::string> kKeys = {"test2", "test1"};

entries.push_back(
{CelValue::CreateString(&kKeys[0]), CelValue::CreateInt64(2)});
entries.push_back({CelValue::CreateString(&kKeys[1]),
CelValue::CreateUnknownSet(&unknown_set)});

ASSERT_OK_AND_ASSIGN(CelValue result, RunCreateMapExpression(
env, entries, &arena, true, true));
ASSERT_TRUE(result.IsUnknownSet());
}

// Test that String Map is created successfully.
TEST_P(CreateMapStepTest, TestCreateStringMap) {
Arena arena;
Expand Down
28 changes: 0 additions & 28 deletions eval/eval/create_struct_step_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -229,34 +229,6 @@ TEST(CreateCreateStructStepTest, TestMessageCreateErrorRecursive) {
StatusIs(absl::StatusCode::kCancelled));
}

// Test message creation if unknown argument is passed
TEST(CreateCreateStructStepTest, TestMessageCreateWithUnknown) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
TestMessage test_msg;
UnknownSet unknown_set;

auto eval_status =
RunExpression(env, "bool_value", CelValue::CreateUnknownSet(&unknown_set),
&arena, true, /*enable_recursive_planning=*/false);
ASSERT_THAT(eval_status, IsOk());
ASSERT_TRUE(eval_status->IsUnknownSet());
}

// Test message creation if unknown argument is passed
TEST(CreateCreateStructStepTest, TestMessageCreateWithUnknownRecursive) {
absl_nonnull std::shared_ptr<const RuntimeEnv> env = NewTestingRuntimeEnv();
Arena arena;
TestMessage test_msg;
UnknownSet unknown_set;

auto eval_status =
RunExpression(env, "bool_value", CelValue::CreateUnknownSet(&unknown_set),
&arena, true, /*enable_recursive_planning=*/true);
ASSERT_THAT(eval_status, IsOk());
ASSERT_TRUE(eval_status->IsUnknownSet()) << eval_status->DebugString();
}

// Test that fields of type bool are set correctly
TEST_P(CreateCreateStructStepTest, TestSetBoolField) {
TestMessage test_msg;
Expand Down
11 changes: 7 additions & 4 deletions eval/eval/function_step_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "base/attribute.h"
#include "base/attribute_set.h"
#include "base/type_provider.h"
#include "common/constant.h"
#include "common/expr.h"
Expand Down Expand Up @@ -162,7 +164,8 @@ class SinkFunction : public CelFunction {

// Create and initialize a registry with some default functions.
void AddDefaults(CelFunctionRegistry& registry) {
static UnknownSet* unknown_set = new UnknownSet();
static UnknownSet* unknown_set =
new UnknownSet(cel::AttributeSet({cel::Attribute("foo")}));
EXPECT_TRUE(registry
.Register(std::make_unique<ConstFunction>(
CelValue::CreateInt64(3), "Const3"))
Expand Down Expand Up @@ -863,7 +866,7 @@ TEST(FunctionStepTestUnknownFunctionResults, UnknownVsErrorPrecedenceTest) {

CelError error0 = absl::CancelledError();
CelValue error_value = CelValue::CreateError(&error0);
UnknownSet unknown_set;
UnknownSet unknown_set(cel::AttributeSet({cel::Attribute("foo")}));
CelValue unknown_value = CelValue::CreateUnknownSet(&unknown_set);

ASSERT_OK(registry.Register(
Expand Down Expand Up @@ -960,7 +963,7 @@ class NullFunction : public CelFunction {

TEST(FunctionStepStrictnessTest,
IfFunctionStrictAndGivenUnknownSkipsInvocation) {
UnknownSet unknown_set;
UnknownSet unknown_set(cel::AttributeSet({cel::Attribute("foo")}));
CelFunctionRegistry registry;
ASSERT_THAT(registry.Register(std::make_unique<ConstFunction>(
CelValue::CreateUnknownSet(&unknown_set), "ConstUnknown")),
Expand Down Expand Up @@ -991,7 +994,7 @@ TEST(FunctionStepStrictnessTest,
}

TEST(FunctionStepStrictnessTest, IfFunctionNonStrictAndGivenUnknownInvokesIt) {
UnknownSet unknown_set;
UnknownSet unknown_set(cel::AttributeSet({cel::Attribute("foo")}));
CelFunctionRegistry registry;
ASSERT_THAT(registry.Register(std::make_unique<ConstFunction>(
CelValue::CreateUnknownSet(&unknown_set), "ConstUnknown")),
Expand Down
116 changes: 0 additions & 116 deletions eval/eval/logic_step_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,17 @@
#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "absl/base/nullability.h"
#include "absl/status/status.h"
#include "absl/status/status_matchers.h"
#include "absl/strings/string_view.h"
#include "base/attribute.h"
#include "base/attribute_set.h"
#include "base/type_provider.h"
#include "common/expr.h"
#include "eval/eval/cel_expression_flat_impl.h"
#include "eval/eval/evaluator_core.h"
#include "eval/public/activation.h"
#include "eval/public/cel_attribute.h"
#include "eval/public/cel_value.h"
#include "eval/public/unknown_attribute_set.h"
#include "eval/public/unknown_set.h"
#include "internal/status_macros.h"
#include "internal/testing.h"
#include "runtime/internal/runtime_env.h"
Expand All @@ -32,14 +26,11 @@ namespace google::api::expr::runtime {
namespace {

using ::absl_testing::IsOk;
using ::cel::Attribute;
using ::cel::AttributeSet;
using ::cel::Expr;
using ::cel::TypeProvider;
using ::cel::runtime_internal::NewTestingRuntimeEnv;
using ::cel::runtime_internal::RuntimeEnv;
using ::google::protobuf::Arena;
using ::testing::Eq;

class LogicStepTest : public testing::TestWithParam<bool> {
public:
Expand Down Expand Up @@ -193,113 +184,6 @@ TEST_P(LogicStepTest, TestOrLogicErrorHandling) {
ASSERT_TRUE(result.BoolOrDie());
}

TEST_F(LogicStepTest, TestAndLogicUnknownHandling) {
CelValue result;
UnknownSet unknown_set;
CelError cel_error = absl::CancelledError();
CelValue unknown_value = CelValue::CreateUnknownSet(&unknown_set);
CelValue error_value = CelValue::CreateError(&cel_error);
absl::Status status = EvaluateLogic(unknown_value, CelValue::CreateBool(true),
false, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(CelValue::CreateBool(true), unknown_value, false,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(CelValue::CreateBool(false), unknown_value, false,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsBool());
ASSERT_FALSE(result.BoolOrDie());

status = EvaluateLogic(unknown_value, CelValue::CreateBool(false), false,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsBool());
ASSERT_FALSE(result.BoolOrDie());

status = EvaluateLogic(error_value, unknown_value, false, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(unknown_value, error_value, false, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

CelAttribute attr0("name0", {}), attr1("name1", {});
UnknownAttributeSet unknown_attr_set0({attr0});
UnknownAttributeSet unknown_attr_set1({attr1});
UnknownSet unknown_set0(unknown_attr_set0);
UnknownSet unknown_set1(unknown_attr_set1);

EXPECT_THAT(unknown_attr_set0.size(), Eq(1));
EXPECT_THAT(unknown_attr_set1.size(), Eq(1));

status = EvaluateLogic(CelValue::CreateUnknownSet(&unknown_set0),
CelValue::CreateUnknownSet(&unknown_set1), false,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());
ASSERT_THAT(result.UnknownSetOrDie()->unknown_attributes().size(), Eq(2));
}

TEST_F(LogicStepTest, TestOrLogicUnknownHandling) {
CelValue result;
UnknownSet unknown_set;
CelError cel_error = absl::CancelledError();
CelValue unknown_value = CelValue::CreateUnknownSet(&unknown_set);
CelValue error_value = CelValue::CreateError(&cel_error);
absl::Status status = EvaluateLogic(
unknown_value, CelValue::CreateBool(false), true, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(CelValue::CreateBool(false), unknown_value, true,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(CelValue::CreateBool(true), unknown_value, true,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsBool());
ASSERT_TRUE(result.BoolOrDie());

status = EvaluateLogic(unknown_value, CelValue::CreateBool(true), true,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsBool());
ASSERT_TRUE(result.BoolOrDie());

status = EvaluateLogic(unknown_value, error_value, true, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

status = EvaluateLogic(error_value, unknown_value, true, &result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());

CelAttribute attr0("name0", {}), attr1("name1", {});
UnknownAttributeSet unknown_attr_set0({attr0});
UnknownAttributeSet unknown_attr_set1({attr1});

UnknownSet unknown_set0(unknown_attr_set0);
UnknownSet unknown_set1(unknown_attr_set1);

EXPECT_THAT(unknown_attr_set0.size(), Eq(1));
EXPECT_THAT(unknown_attr_set1.size(), Eq(1));

status = EvaluateLogic(CelValue::CreateUnknownSet(&unknown_set0),
CelValue::CreateUnknownSet(&unknown_set1), true,
&result, true);
ASSERT_THAT(status, IsOk());
ASSERT_TRUE(result.IsUnknownSet());
ASSERT_THAT(result.UnknownSetOrDie()->unknown_attributes().size(), Eq(2));
}

INSTANTIATE_TEST_SUITE_P(LogicStepTest, LogicStepTest, testing::Bool());

} // namespace
Expand Down
20 changes: 0 additions & 20 deletions eval/eval/select_step_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -290,26 +290,6 @@ TEST_F(SelectStepTest, MapPresenseIsErrorTest) {
EXPECT_EQ(result.ErrorOrDie()->code(), absl::StatusCode::kInvalidArgument);
}

TEST_F(SelectStepTest, MapPresenseIsTrueWithUnknownTest) {
UnknownSet unknown_set;
std::string key1 = "key1";
std::vector<std::pair<CelValue, CelValue>> key_values{
{CelValue::CreateString(&key1),
CelValue::CreateUnknownSet(&unknown_set)}};

auto map_value = CreateContainerBackedMap(
absl::Span<std::pair<CelValue, CelValue>>(key_values))
.value();

RunExpressionOptions options;
options.enable_unknowns = true;

ASSERT_OK_AND_ASSIGN(CelValue result,
RunExpression(map_value.get(), "key1", true, options));
ASSERT_TRUE(result.IsBool());
EXPECT_EQ(result.BoolOrDie(), true);
}

TEST_P(SelectStepConformanceTest, FieldIsNotPresentInProtoTest) {
TestMessage message;

Expand Down
Loading
Loading