//
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

cc_defaults {
    name: "libnativebridge-test-case-defaults",
    defaults: [
        "art_defaults",
        "art_test_defaults",
    ],
    // TODO(mast): Split up art_gtest_defaults so that it can be used for the
    // following without pulling in lots of libs.
    target: {
        linux: {
            cflags: [
                // gtest issue
                "-Wno-used-but-marked-unused",
                "-Wno-deprecated",
                "-Wno-missing-noreturn",
            ],
        },
    },
    header_libs: [
        "jni_headers",
        "libnativebridge-headers",
    ],
    cppflags: ["-fvisibility=protected"],
}

cc_library_shared {
    name: "libnativebridge-test-case",
    srcs: ["NativeBridgeTestCase.cpp"],
    defaults: ["libnativebridge-test-case-defaults"],
}

cc_library_shared {
    name: "libnativebridge2-test-case",
    srcs: ["NativeBridgeTestCase2.cpp"],
    defaults: ["libnativebridge-test-case-defaults"],
}

cc_library_shared {
    name: "libnativebridge3-test-case",
    srcs: ["NativeBridgeTestCase3.cpp"],
    defaults: ["libnativebridge-test-case-defaults"],
}

cc_library_shared {
    name: "libnativebridge6-test-case",
    srcs: ["NativeBridgeTestCase6.cpp"],
    defaults: ["libnativebridge-test-case-defaults"],
    shared_libs: [
        "libnativebridge6prezygotefork",
    ],
}

// A helper library to produce test-case side effect of PreZygoteForkNativeBridge.
cc_library_shared {
    name: "libnativebridge6prezygotefork",
    srcs: ["NativeBridge6PreZygoteFork_lib.cpp"],
    defaults: ["libnativebridge-test-case-defaults"],
}

// Build the unit tests.
cc_defaults {
    name: "libnativebridge-tests-defaults",
    defaults: [
        "art_defaults",
        "art_test_defaults",
    ],
    // TODO(mast): Split up art_gtest_defaults so that it can be used for the
    // following without pulling in lots of libs.
    target: {
        linux: {
            cflags: [
                // gtest issue
                "-Wno-used-but-marked-unused",
                "-Wno-deprecated",
                "-Wno-missing-noreturn",
            ],
        },
    },

    srcs: [
        "CodeCacheCreate_test.cpp",
        "CodeCacheExists_test.cpp",
        "CodeCacheStatFail_test.cpp",
        "CompleteFlow_test.cpp",
        "InvalidCharsNativeBridge_test.cpp",
        "NativeBridge2Signal_test.cpp",
        "NativeBridgeVersion_test.cpp",
        "NeedsNativeBridge_test.cpp",
        "PreInitializeNativeBridge_test.cpp",
        "PreInitializeNativeBridgeFail1_test.cpp",
        "PreInitializeNativeBridgeFail2_test.cpp",
        "ReSetupNativeBridge_test.cpp",
        "UnavailableNativeBridge_test.cpp",
        "ValidNameNativeBridge_test.cpp",
        "NativeBridge3UnloadLibrary_test.cpp",
        "NativeBridge3GetError_test.cpp",
        "NativeBridge3IsPathSupported_test.cpp",
        "NativeBridge3InitAnonymousNamespace_test.cpp",
        "NativeBridge3CreateNamespace_test.cpp",
        "NativeBridge3LoadLibraryExt_test.cpp",
        "NativeBridge6PreZygoteFork_test.cpp",
    ],

    shared_libs: [
        "liblog",
        "libnativebridge-test-case",
        "libnativebridge6prezygotefork",
    ],
    header_libs: ["libbase_headers"],
}

cc_test {
    name: "libnativebridge-tests",
    defaults: ["libnativebridge-tests-defaults"],
    shared_libs: ["libnativebridge"],
}

cc_test {
    name: "libnativebridge-lazy-tests",
    defaults: ["libnativebridge-tests-defaults"],
    host_supported: false,
    shared_libs: ["libnativebridge_lazy"],
}

// Build the test for the C API.
cc_test {
    name: "libnativebridge-api-tests",
    defaults: [
        "art_defaults",
        "art_test_defaults",
    ],
    // TODO(mast): Split up art_gtest_defaults so that it can be used for the
    // following without pulling in lots of libs.
    target: {
        linux: {
            cflags: [
                // gtest issue
                "-Wno-used-but-marked-unused",
                "-Wno-deprecated",
                "-Wno-missing-noreturn",
            ],
        },
    },
    srcs: [
        "NativeBridgeApi.c",
    ],
    header_libs: [
        "jni_headers",
        "libnativebridge-headers",
    ],
}
