Refactor factory functions for TypeCheckerBuilders. · google/cel-cpp@fe432f3
@@ -22,9 +22,11 @@
2222#include "absl/status/status_matchers.h"
2323#include "base/ast_internal/ast_impl.h"
2424#include "base/ast_internal/expr.h"
25+#include "checker/checker_options.h"
2526#include "checker/internal/test_ast_helpers.h"
2627#include "checker/type_checker.h"
2728#include "checker/type_checker_builder.h"
29+#include "checker/type_checker_builder_factory.h"
2830#include "checker/validation_result.h"
2931#include "common/ast.h"
3032#include "common/constant.h"
@@ -50,27 +52,27 @@ using AstType = cel::ast_internal::Type;
50525153TEST(StandardLibraryTest, StandardLibraryAddsDecls) {
5254ASSERT_OK_AND_ASSIGN(
53- TypeCheckerBuilder builder,
55+std::unique_ptr<TypeCheckerBuilder> builder,
5456CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));
55-EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());
56-EXPECT_THAT(std::move(builder).Build(), IsOk());
57+EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());
58+EXPECT_THAT(std::move(*builder).Build(), IsOk());
5759}
58605961TEST(StandardLibraryTest, StandardLibraryErrorsIfAddedTwice) {
6062ASSERT_OK_AND_ASSIGN(
61- TypeCheckerBuilder builder,
63+std::unique_ptr<TypeCheckerBuilder> builder,
6264CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));
63-EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());
64-EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()),
65+EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());
66+EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()),
6567StatusIs(absl::StatusCode::kAlreadyExists));
6668}
67696870TEST(StandardLibraryTest, ComprehensionVarsIndirectCyclicParamAssignability) {
6971 google::protobuf::Arena arena;
7072ASSERT_OK_AND_ASSIGN(
71- TypeCheckerBuilder builder,
73+std::unique_ptr<TypeCheckerBuilder> builder,
7274CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));
73-ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());
75+ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());
74767577// Note: this is atypical -- parameterized variables aren't well supported
7678// outside of built-in syntax.
@@ -83,13 +85,13 @@ TEST(StandardLibraryTest, ComprehensionVarsIndirectCyclicParamAssignability) {
8385 Type list_type = ListType(&arena, TypeParamType("V"));
8486 Type map_type = MapType(&arena, TypeParamType("K"), TypeParamType("V"));
858786-ASSERT_THAT(builder.AddVariable(MakeVariableDecl("list_var", list_type)),
88+ASSERT_THAT(builder->AddVariable(MakeVariableDecl("list_var", list_type)),
8789IsOk());
88-ASSERT_THAT(builder.AddVariable(MakeVariableDecl("map_var", map_type)),
90+ASSERT_THAT(builder->AddVariable(MakeVariableDecl("map_var", map_type)),
8991IsOk());
90929193ASSERT_OK_AND_ASSIGN(std::unique_ptr<TypeChecker> type_checker,
92-std::move(builder).Build());
94+std::move(*builder).Build());
93959496ASSERT_OK_AND_ASSIGN(
9597auto ast, checker_internal::MakeTestParsedAst(
@@ -108,10 +110,10 @@ class StandardLibraryDefinitionsTest : public ::testing::Test {
108110public:
109111void SetUp() override {
110112ASSERT_OK_AND_ASSIGN(
111- TypeCheckerBuilder builder,
113+std::unique_ptr<TypeCheckerBuilder> builder,
112114CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));
113-ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());
114-ASSERT_OK_AND_ASSIGN(stdlib_type_checker_, std::move(builder).Build());
115+ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());
116+ASSERT_OK_AND_ASSIGN(stdlib_type_checker_, std::move(*builder).Build());
115117 }
116118117119protected:
@@ -212,12 +214,12 @@ class StdLibDefinitionsTest
212214// Type-parameterized functions are not yet checkable.
213215TEST_P(StdLibDefinitionsTest, Runner) {
214216ASSERT_OK_AND_ASSIGN(
215- TypeCheckerBuilder builder,
217+std::unique_ptr<TypeCheckerBuilder> builder,
216218CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool(),
217219GetParam().options));
218-ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());
220+ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());
219221ASSERT_OK_AND_ASSIGN(std::unique_ptr<TypeChecker> type_checker,
220-std::move(builder).Build());
222+std::move(*builder).Build());
221223222224ASSERT_OK_AND_ASSIGN(std::unique_ptr<Ast> ast,
223225checker_internal::MakeTestParsedAst(GetParam().expr));