1project('D Features', 'd', default_options : ['debug=false'])
2
3# ONLY FOR BACKWARDS COMPATIBILITY.
4# DO NOT DO THIS IN NEW CODE!
5# USE include_directories() INSTEAD OF BUILDING
6# STRINGS TO PATHS MANUALLY!
7data_dir = join_paths(meson.current_source_dir(), 'data')
8
9test_src = ['app.d', 'extra.d']
10
11e_plain_bcompat = executable('dapp_menu_bcompat',
12    test_src,
13    d_import_dirs: [data_dir]
14)
15test('dapp_menu_t_fail_bcompat', e_plain_bcompat, should_fail: true)
16test('dapp_menu_t_bcompat', e_plain_bcompat, args: ['menu'])
17
18# directory for data
19# This is the correct way to do this.
20data_dir = include_directories('data')
21
22e_plain = executable('dapp_menu',
23    test_src,
24    d_import_dirs: [data_dir]
25)
26test('dapp_menu_t_fail', e_plain, should_fail: true)
27test('dapp_menu_t', e_plain, args: ['menu'])
28
29
30# test feature versions and string imports
31e_versions = executable('dapp_versions',
32    test_src,
33    d_import_dirs: [data_dir],
34    d_module_versions: ['No_Menu', 'With_People']
35)
36test('dapp_versions_t_fail', e_versions, args: ['menu'], should_fail: true)
37test('dapp_versions_t', e_versions, args: ['people'])
38
39# test everything and unittests
40e_test = executable('dapp_test',
41    test_src,
42    d_import_dirs: [data_dir],
43    d_module_versions: ['No_Menu', 'With_People'],
44    d_unittest: true
45)
46test('dapp_test', e_test)
47
48# test version level
49e_version_int = executable('dapp_version_int',
50    test_src,
51    d_import_dirs: [data_dir],
52    d_module_versions: ['With_VersionInteger', 3],
53)
54test('dapp_version_int_t', e_version_int, args: ['debug'])
55
56# test version level failure
57e_version_int_fail = executable('dapp_version_int_fail',
58    test_src,
59    d_import_dirs: [data_dir],
60    d_module_versions: ['With_VersionInteger', 2],
61)
62test('dapp_version_int_t_fail', e_version_int_fail, args: ['debug'], should_fail: true)
63
64# test debug conditions: disabled
65e_no_debug = executable('dapp_no_debug',
66    test_src,
67    d_import_dirs: [data_dir],
68    d_module_versions: ['With_Debug'],
69)
70test('dapp_no_debug_t_fail', e_no_debug, args: ['debug'], should_fail: true)
71
72# test debug conditions: enabled
73e_debug = executable('dapp_debug',
74    test_src,
75    d_import_dirs: [data_dir],
76    d_module_versions: ['With_Debug'],
77    d_debug: 1,
78)
79test('dapp_debug_t', e_debug, args: ['debug'])
80
81# test debug conditions: integer
82e_debug_int = executable('dapp_debug_int',
83    test_src,
84    d_import_dirs: [data_dir],
85    d_module_versions: ['With_DebugInteger'],
86    d_debug: 3,
87)
88test('dapp_debug_int_t', e_debug_int, args: ['debug'])
89
90# test debug conditions: identifier
91e_debug_ident = executable('dapp_debug_ident',
92    test_src,
93    d_import_dirs: [data_dir],
94    d_module_versions: ['With_DebugIdentifier'],
95    d_debug: 'DebugIdentifier',
96)
97test('dapp_debug_ident_t', e_debug_ident, args: ['debug'])
98
99# test with all debug conditions at once, and with redundant values
100e_debug_all = executable('dapp_debug_all',
101    test_src,
102    d_import_dirs: [data_dir],
103    d_module_versions: ['With_DebugAll'],
104    d_debug: ['4', 'DebugIdentifier', 2, 'DebugIdentifierUnused'],
105)
106test('dapp_debug_all_t', e_debug_all, args: ['debug'])
107