# Copyright (c) 2020 vesoft inc. All rights reserved.
#
# This source code is licensed under Apache 2.0 License.

nebula_add_library(
    mock_schema_obj OBJECT
    MockSchemaManager.cpp
    MockIndexManager.cpp
)

set(VALIDATOR_TEST_LIBS
    $<TARGET_OBJECTS:mock_schema_obj>
    $<TARGET_OBJECTS:util_obj>
    $<TARGET_OBJECTS:validator_obj>
    $<TARGET_OBJECTS:expr_visitor_obj>
    $<TARGET_OBJECTS:planner_obj>
    $<TARGET_OBJECTS:plan_obj>
    $<TARGET_OBJECTS:graph_flags_obj>
    $<TARGET_OBJECTS:parser_obj>
    $<TARGET_OBJECTS:ast_match_path_obj>
    $<TARGET_OBJECTS:idgenerator_obj>
    $<TARGET_OBJECTS:graph_context_obj>
    $<TARGET_OBJECTS:graph_auth_obj>
    $<TARGET_OBJECTS:graph_session_obj>
    $<TARGET_OBJECTS:expression_obj>
    $<TARGET_OBJECTS:network_obj>
    $<TARGET_OBJECTS:fs_obj>
    $<TARGET_OBJECTS:time_obj>
    $<TARGET_OBJECTS:stats_obj>
    $<TARGET_OBJECTS:graph_stats_obj>
    $<TARGET_OBJECTS:meta_client_stats_obj>
    $<TARGET_OBJECTS:storage_client_stats_obj>
    $<TARGET_OBJECTS:time_obj>
    $<TARGET_OBJECTS:common_thrift_obj>
    $<TARGET_OBJECTS:graph_thrift_obj>
    $<TARGET_OBJECTS:storage_thrift_obj>
    $<TARGET_OBJECTS:thrift_obj>
    $<TARGET_OBJECTS:thread_obj>
    $<TARGET_OBJECTS:datatypes_obj>
    $<TARGET_OBJECTS:wkt_wkb_io_obj>
    $<TARGET_OBJECTS:base_obj>
    $<TARGET_OBJECTS:memory_obj>
    $<TARGET_OBJECTS:meta_thrift_obj>
    $<TARGET_OBJECTS:meta_obj>
    $<TARGET_OBJECTS:graph_thrift_obj>
    $<TARGET_OBJECTS:charset_obj>
    $<TARGET_OBJECTS:meta_client_obj>
    $<TARGET_OBJECTS:file_based_cluster_id_man_obj>
    $<TARGET_OBJECTS:function_manager_obj>
    $<TARGET_OBJECTS:wkt_wkb_io_obj>
    $<TARGET_OBJECTS:agg_function_manager_obj>
    $<TARGET_OBJECTS:conf_obj>
    $<TARGET_OBJECTS:http_client_obj>
    $<TARGET_OBJECTS:process_obj>
    $<TARGET_OBJECTS:time_utils_obj>
    $<TARGET_OBJECTS:datetime_parser_obj>
    $<TARGET_OBJECTS:graph_obj>
    $<TARGET_OBJECTS:es_adapter_obj>
    $<TARGET_OBJECTS:ws_common_obj>
    $<TARGET_OBJECTS:version_obj>
    $<TARGET_OBJECTS:ssl_obj>
    $<TARGET_OBJECTS:gc_obj>
)

if(ENABLE_STANDALONE_VERSION)
set(VALIDATOR_TEST_LIBS
    ${VALIDATOR_TEST_LIBS}
    $<TARGET_OBJECTS:sa_test_graph_flags_obj>
)
endif()

nebula_add_test(
    NAME
        validator_test
    SOURCES
        ACLValidatorTest.cpp
        FetchVerticesTest.cpp
        FetchEdgesTest.cpp
        MockSchemaManagerTest.cpp
        QueryValidatorTest.cpp
        AdminValidatorTest.cpp
        MaintainValidatorTest.cpp
        MutateValidatorTest.cpp
        YieldValidatorTest.cpp
        GetSubgraphValidatorTest.cpp
        FindPathValidatorTest.cpp
        ValidatorTestBase.cpp
        ExplainValidatorTest.cpp
        GroupByValidatorTest.cpp
        MatchValidatorTest.cpp
        LookupValidatorTest.cpp
        SymbolsTest.cpp
    OBJECTS
        ${VALIDATOR_TEST_LIBS}
    LIBRARIES
        gtest
        ${THRIFT_LIBRARIES}
        ${PROXYGEN_LIBRARIES}
        curl
)
