gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
gmock_dep = dependency('gmock', disabler: true, required: false)
if not gtest_dep.found() or not gmock_dep.found()
    gtest_proj = import('cmake').subproject('googletest', required: false)
    if gtest_proj.found()
        gtest_dep = declare_dependency(
            dependencies: [
                dependency('threads'),
                gtest_proj.dependency('gtest'),
                gtest_proj.dependency('gtest_main'),
            ],
        )
        gmock_dep = gtest_proj.dependency('gmock')
    else
        assert(
            not get_option('tests').allowed(),
            'Googletest is required if tests are enabled',
        )
    endif
endif

test_sources = [
    '../occ_pass_through.cpp',
    '../occ_manager.cpp',
    '../occ_status.cpp',
    '../occ_device.cpp',
    '../occ_errors.cpp',
    '../occ_ffdc.cpp',
    '../occ_presence.cpp',
    '../occ_command.cpp',
    '../occ_dbus.cpp',
    '../pldm.cpp',
    '../powercap.cpp',
    '../powermode.cpp',
    '../utils.cpp',
    occ_sensor_hpp,
]

tests = ['error_files_tests.cpp', 'occ_dbus_test.cpp', 'utest.cpp']

pthread_dep = dependency('threads')

foreach t : tests
    test(
        t,
        executable(
            t.underscorify(),
            t,
            test_sources,
            include_directories: '..',
            dependencies: [gtest_dep, gmock_dep, pthread_dep, deps],
        ),
        workdir: meson.current_source_dir(),
    )
endforeach
