1gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
2gmock_dep = dependency('gmock', disabler: true, required: false)
3if not gtest_dep.found() or not gmock_dep.found()
4    gtest_proj = import('cmake').subproject('googletest', required: false)
5    if gtest_proj.found()
6        gtest_dep = declare_dependency(
7            dependencies: [
8                dependency('threads'),
9                gtest_proj.dependency('gtest'),
10                gtest_proj.dependency('gtest_main'),
11            ]
12        )
13        gmock_dep = gtest_proj.dependency('gmock')
14  else
15        assert(
16            not get_option('tests').allowed(),
17            'Googletest is required if tests are enabled'
18        )
19  endif
20endif
21
22test_yamls = [
23  'test-group-priority',
24  'test-led-priority'
25]
26
27test_sources = [
28  '../manager/manager.cpp',
29  '../utils.cpp',
30]
31
32foreach yaml : test_yamls
33  gen_hpp = custom_target(
34    yaml + '.hpp',
35    command : [
36        prog_python,
37        meson.project_source_root() + '/scripts/parse_led.py',
38        '--filename', meson.project_source_root() + '/test/config/' + yaml + '.yaml',
39        '-o', meson.current_build_dir(),
40        '--output-filename', yaml + '.hpp'
41    ],
42    output : yaml + '.hpp')
43
44  test_sources += [ gen_hpp ]
45endforeach
46
47tests = [
48  'utest.cpp',
49  'utest-led-json.cpp',
50  'utest-group-priority.cpp',
51  'utest-led-yaml-group-priority.cpp',
52  'utest-led-yaml-led-priority.cpp',
53]
54if get_option('persistent-led-asserted').allowed()
55  test_sources += [
56    '../manager/serialize.cpp',
57  ]
58  tests += [
59    'utest-serialize.cpp',
60  ]
61endif
62
63foreach t : tests
64  test(t, executable(t.underscorify(), t,
65                     test_sources,
66                     include_directories: ['..', '../manager'],
67                     dependencies: [
68                         gtest_dep,
69                         gmock_dep,
70                         deps
71                         ]),
72       workdir: meson.current_source_dir())
73endforeach
74