# Copyright (c) Meta Platforms, Inc. and affiliates.

load("@fbcode_macros//build_defs:cpp_unittest.bzl", "cpp_unittest")
load("@fbcode_macros//build_defs:python_binary.bzl", "python_binary")
load("//data_compression/experimental/zstrong:defs.bzl", "zs_fuzzers")

oncall("data_compression")

cpp_unittest(
    # @autodeps-skip
    name = "test_zstrong_cpp",
    srcs = ["test_zstrong_cpp.cpp"],
    deps = [
        "//data_compression/experimental/zstrong/tools:zstrong_json",
    ],
)

cpp_unittest(
    # @autodeps-skip
    name = "test_zstrong_json",
    srcs = ["test_zstrong_json.cpp"],
    deps = [
        "//data_compression/experimental/zstrong/tools:zstrong_json",  # @manual
        "//folly:file_util",
        "//folly:memory",
        "//folly/testing:test_util",
    ],
)

cpp_unittest(
    # @autodeps-skip
    name = "test_zstrong_ml",
    srcs = ["test_zstrong_ml.cpp"],
    headers = ["test_zstrong_ml_models.h"],
    deps = [
        "//data_compression/experimental/zstrong:zstronglib",  # @manual
        "//data_compression/experimental/zstrong/tools:zstrong_ml",  # @manual
        "//folly:base64",
        "//folly:dynamic",
    ],
)

python_binary(
    name = "test_zstrong_ml_models_generator",
    main_function = ".test_zstrong_ml_models_generator.main",
    main_src = "test_zstrong_ml_models_generator.py",
    deps = [
        "fbsource//third-party/pypi/click:click",
        "fbsource//third-party/pypi/numpy:numpy",
        "fbsource//third-party/pypi/pandas:pandas",
        "fbsource//third-party/pypi/xgboost:xgboost",
        "//data_compression/experimental/zstrong/tools/py:zstrong_ml",
    ],
)

zs_fuzzers(
    srcs = [
        "fuzz_zstrong_ml.cpp",
    ],
    headers = [
        "test_zstrong_ml_models.h",
    ],
    ftest_names = [
        ("MLTest", "FuzzGBTPredictorConfiguration"),
        ("MLTest", "FuzzGBTPredictorPredict"),
        ("MLTest", "FuzzFeatureGeneatros_IntFeaturesGenerator"),
        ("MLTest", "FuzzFeatureGeneatros_DeltaIntFeaturesGenerator"),
        ("MLTest", "FuzzFeatureGeneatros_TokenizeIntFeaturesGenerator"),
    ],
    deps = [
        "fbsource//xplat/security/lionhead/utils/lib_ftest:lib",
        "//data_compression/experimental/zstrong/tests:fuzz_utils",
        "//data_compression/experimental/zstrong/tools:zstrong_ml",
        "//data_compression/experimental/zstrong/tools/gbt_predictor:zstrong_gbt_predictor",
    ],
)
