gtest = dependency('gtest', main: true, disabler: true, required: false)
gmock = dependency('gmock', disabler: true, required: false)
if not gtest.found() or not gmock.found()
  gtest_opts = import('cmake').subproject_options()
  gtest_opts.add_cmake_defines({'CMAKE_CXX_FLAGS': '-Wno-pedantic'})
  gtest_proj = import('cmake').subproject(
    'googletest',
    options: gtest_opts,
    required: false)
  if gtest_proj.found()
    gtest = declare_dependency(
      dependencies: [
        dependency('threads'),
        gtest_proj.dependency('gtest'),
        gtest_proj.dependency('gtest_main'),
      ])
    gmock = gtest_proj.dependency('gmock')
  else
    assert(not get_option('tests').enabled(), 'Googletest is required')
  endif
endif

test('entitymap_json',
  executable(
    'entitymap_json',
    'entitymap_json_unittest.cpp',
    include_directories: root_inc,
    build_by_default: false,
    implicit_include_directories: false,
    dependencies: [
        entity_map_json_dep,
        gmock,
        gtest,
        nlohmann_json_dep,
        sdbusplus_dep,
    ]
  ))

# Build/add oemrouter_unittest to test suite
# Issue #3325
# test('oemrouter',
#  executable(
#    'oemrouter',
#    'oemrouter_unittest.cpp',
#    include_directories: root_inc,
#    build_by_default: false,
#    implicit_include_directories: false,
#    dependencies: [gtest, gmock]
#  ))

# Build/add message packing/unpacking unit tests
test('message',
  executable(
    'message',
    'message/pack.cpp',
    'message/payload.cpp',
    'message/unpack.cpp',
    include_directories: root_inc,
    build_by_default: false,
    implicit_include_directories: false,
    dependencies: [boost, phosphor_logging_dep, crypto, systemd, sdbusplus_dep, gtest, gmock]
  ))

# Build/add closesession_unittest to test suite
test('session/closesession',
  executable(
    'session_closesession',
    'session/closesession_unittest.cpp',
    include_directories: root_inc,
    build_by_default: false,
    implicit_include_directories: false,
    dependencies: [gtest, gmock]
  ))

# Build/add sensorcommands_unittest to test suite
test('dbus-sdr/sensorcommands',
  executable(
    'dbus-sdr_sensorcommands',
    'dbus-sdr/sensorcommands_unittest.cpp',
    include_directories: root_inc,
    build_by_default: false,
    implicit_include_directories: false,
    dependencies: [sensorutils_dep, gtest, gmock]
  ))