# Description:
#   generated integration test for one specific kernel in a model.
load(
    "//tensorflow/lite/micro:build_def.bzl",
    "generate_cc_arrays",
    "micro_copts",
)

package(
    default_visibility = ["//visibility:public"],
    # Disabling layering_check because of http://b/177257332
    features = ["-layering_check"],
    licenses = ["notice"],
)

generate_cc_arrays(
    name = "generated_transpose_conv0_model_data_cc",
    src = "transpose_conv0.tflite",
    out = "transpose_conv0_model_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_model_data_hdr",
    src = "transpose_conv0.tflite",
    out = "transpose_conv0_model_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_model_data_cc",
    src = "transpose_conv1.tflite",
    out = "transpose_conv1_model_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_model_data_hdr",
    src = "transpose_conv1.tflite",
    out = "transpose_conv1_model_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_model_data_cc",
    src = "transpose_conv2.tflite",
    out = "transpose_conv2_model_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_model_data_hdr",
    src = "transpose_conv2.tflite",
    out = "transpose_conv2_model_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_model_data_cc",
    src = "transpose_conv3.tflite",
    out = "transpose_conv3_model_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_model_data_hdr",
    src = "transpose_conv3.tflite",
    out = "transpose_conv3_model_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_model_data_cc",
    src = "transpose_conv4.tflite",
    out = "transpose_conv4_model_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_model_data_hdr",
    src = "transpose_conv4.tflite",
    out = "transpose_conv4_model_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_input0_int32_test_data_cc",
    src = "transpose_conv0_input0_int32.csv",
    out = "transpose_conv0_input0_int32_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_input0_int32_test_data_hdr",
    src = "transpose_conv0_input0_int32.csv",
    out = "transpose_conv0_input0_int32_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_input1_int16_test_data_cc",
    src = "transpose_conv0_input1_int16.csv",
    out = "transpose_conv0_input1_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_input1_int16_test_data_hdr",
    src = "transpose_conv0_input1_int16.csv",
    out = "transpose_conv0_input1_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_golden_int16_test_data_cc",
    src = "transpose_conv0_golden_int16.csv",
    out = "transpose_conv0_golden_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv0_golden_int16_test_data_hdr",
    src = "transpose_conv0_golden_int16.csv",
    out = "transpose_conv0_golden_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_input0_int32_test_data_cc",
    src = "transpose_conv1_input0_int32.csv",
    out = "transpose_conv1_input0_int32_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_input0_int32_test_data_hdr",
    src = "transpose_conv1_input0_int32.csv",
    out = "transpose_conv1_input0_int32_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_input1_int16_test_data_cc",
    src = "transpose_conv1_input1_int16.csv",
    out = "transpose_conv1_input1_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_input1_int16_test_data_hdr",
    src = "transpose_conv1_input1_int16.csv",
    out = "transpose_conv1_input1_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_golden_int16_test_data_cc",
    src = "transpose_conv1_golden_int16.csv",
    out = "transpose_conv1_golden_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv1_golden_int16_test_data_hdr",
    src = "transpose_conv1_golden_int16.csv",
    out = "transpose_conv1_golden_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_input0_int32_test_data_cc",
    src = "transpose_conv2_input0_int32.csv",
    out = "transpose_conv2_input0_int32_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_input0_int32_test_data_hdr",
    src = "transpose_conv2_input0_int32.csv",
    out = "transpose_conv2_input0_int32_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_input1_int16_test_data_cc",
    src = "transpose_conv2_input1_int16.csv",
    out = "transpose_conv2_input1_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_input1_int16_test_data_hdr",
    src = "transpose_conv2_input1_int16.csv",
    out = "transpose_conv2_input1_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_golden_int16_test_data_cc",
    src = "transpose_conv2_golden_int16.csv",
    out = "transpose_conv2_golden_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv2_golden_int16_test_data_hdr",
    src = "transpose_conv2_golden_int16.csv",
    out = "transpose_conv2_golden_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_input0_int32_test_data_cc",
    src = "transpose_conv3_input0_int32.csv",
    out = "transpose_conv3_input0_int32_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_input0_int32_test_data_hdr",
    src = "transpose_conv3_input0_int32.csv",
    out = "transpose_conv3_input0_int32_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_input1_int16_test_data_cc",
    src = "transpose_conv3_input1_int16.csv",
    out = "transpose_conv3_input1_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_input1_int16_test_data_hdr",
    src = "transpose_conv3_input1_int16.csv",
    out = "transpose_conv3_input1_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_golden_int16_test_data_cc",
    src = "transpose_conv3_golden_int16.csv",
    out = "transpose_conv3_golden_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv3_golden_int16_test_data_hdr",
    src = "transpose_conv3_golden_int16.csv",
    out = "transpose_conv3_golden_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_input0_int32_test_data_cc",
    src = "transpose_conv4_input0_int32.csv",
    out = "transpose_conv4_input0_int32_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_input0_int32_test_data_hdr",
    src = "transpose_conv4_input0_int32.csv",
    out = "transpose_conv4_input0_int32_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_input1_int16_test_data_cc",
    src = "transpose_conv4_input1_int16.csv",
    out = "transpose_conv4_input1_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_input1_int16_test_data_hdr",
    src = "transpose_conv4_input1_int16.csv",
    out = "transpose_conv4_input1_int16_test_data.h",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_golden_int16_test_data_cc",
    src = "transpose_conv4_golden_int16.csv",
    out = "transpose_conv4_golden_int16_test_data.cc",
)

generate_cc_arrays(
    name = "generated_transpose_conv4_golden_int16_test_data_hdr",
    src = "transpose_conv4_golden_int16.csv",
    out = "transpose_conv4_golden_int16_test_data.h",
)

cc_library(
    name = "models_and_testdata",
    srcs = [
        "generated_transpose_conv0_golden_int16_test_data_cc",
        "generated_transpose_conv0_input0_int32_test_data_cc",
        "generated_transpose_conv0_input1_int16_test_data_cc",
        "generated_transpose_conv0_model_data_cc",
        "generated_transpose_conv1_golden_int16_test_data_cc",
        "generated_transpose_conv1_input0_int32_test_data_cc",
        "generated_transpose_conv1_input1_int16_test_data_cc",
        "generated_transpose_conv1_model_data_cc",
        "generated_transpose_conv2_golden_int16_test_data_cc",
        "generated_transpose_conv2_input0_int32_test_data_cc",
        "generated_transpose_conv2_input1_int16_test_data_cc",
        "generated_transpose_conv2_model_data_cc",
        "generated_transpose_conv3_golden_int16_test_data_cc",
        "generated_transpose_conv3_input0_int32_test_data_cc",
        "generated_transpose_conv3_input1_int16_test_data_cc",
        "generated_transpose_conv3_model_data_cc",
        "generated_transpose_conv4_golden_int16_test_data_cc",
        "generated_transpose_conv4_input0_int32_test_data_cc",
        "generated_transpose_conv4_input1_int16_test_data_cc",
        "generated_transpose_conv4_model_data_cc",
    ],
    hdrs = [
        "generated_transpose_conv0_golden_int16_test_data_hdr",
        "generated_transpose_conv0_input0_int32_test_data_hdr",
        "generated_transpose_conv0_input1_int16_test_data_hdr",
        "generated_transpose_conv0_model_data_hdr",
        "generated_transpose_conv1_golden_int16_test_data_hdr",
        "generated_transpose_conv1_input0_int32_test_data_hdr",
        "generated_transpose_conv1_input1_int16_test_data_hdr",
        "generated_transpose_conv1_model_data_hdr",
        "generated_transpose_conv2_golden_int16_test_data_hdr",
        "generated_transpose_conv2_input0_int32_test_data_hdr",
        "generated_transpose_conv2_input1_int16_test_data_hdr",
        "generated_transpose_conv2_model_data_hdr",
        "generated_transpose_conv3_golden_int16_test_data_hdr",
        "generated_transpose_conv3_input0_int32_test_data_hdr",
        "generated_transpose_conv3_input1_int16_test_data_hdr",
        "generated_transpose_conv3_model_data_hdr",
        "generated_transpose_conv4_golden_int16_test_data_hdr",
        "generated_transpose_conv4_input0_int32_test_data_hdr",
        "generated_transpose_conv4_input1_int16_test_data_hdr",
        "generated_transpose_conv4_model_data_hdr",
    ],
    copts = micro_copts(),
)

cc_test(
    name = "integration_test",
    srcs = [
        "integration_tests.cc",
    ],
    copts = micro_copts(),
    deps = [
        ":models_and_testdata",
        "//python/tflite_micro:python_ops_resolver",
        "//tensorflow/lite/micro:micro_framework",
        "//tensorflow/lite/micro:micro_log",
        "//tensorflow/lite/micro:micro_resource_variable",
        "//tensorflow/lite/micro:op_resolvers",
        "//tensorflow/lite/micro:recording_allocators",
        "//tensorflow/lite/micro/testing:micro_test",
    ],
)
