gtk_tests = [
  # testname, optional extra sources
  ['testdropdown'],
  ['rendernode'],
  ['rendernode-create-tests'],
  ['overlayscroll'],
  ['syncscroll'],
  ['animated-resizing', ['frame-stats.c', 'variable.c']],
  ['animated-revealing', ['frame-stats.c', 'variable.c']],
  ['motion-compression'],
  ['scrolling-performance', ['frame-stats.c', 'variable.c']],
  ['blur-performance', ['../gsk/gskcairoblur.c']],
  ['simple'],
  ['video-timer', ['variable.c']],
  ['testaccel'],
  ['testadjustsize'],
  ['testappchooser'],
  ['testappchooserbutton'],
  ['testassistant'],
  ['testbaseline'],
  ['testcalendar'],
  ['testclipboard2'],
  ['testcombo'],
  ['testcolumnview'],
  ['testcombochange'],
  ['testcellrenderertext'],
  ['testdialog'],
  ['testdnd'],
  ['testdnd2'],
  ['testellipsise'],
  ['testentrycompletion'],
  ['testentryicons'],
  ['testfilechooser'],
  ['testfilechooserbutton'],
  ['testflowbox'],
  ['testfontoptions'],
  ['testframe'],
  ['testfullscreen'],
  ['testglarea'],
  ['testglblending', ['gtkgears.c']],
  ['testgrid'],
  ['testgtk'],
  ['testheaderbar'],
  ['testheightforwidth'],
  ['testhover'],
  ['testiconview'],
  ['testiconview-keynav'],
  ['testinfobar'],
  ['testkineticscrolling'],
  ['testlist'],
  ['testlist2'],
  ['testlist3'],
  ['testlist4'],
  ['testlistdnd'],
  ['testlistview'],
  ['testlistview-animating'],
  ['testlevelbar'],
  ['testlockbutton'],
  ['testmenubutton'],
  ['testmountoperation'],
  ['testnotebookdnd'],
  ['testnouiprint'],
  ['testoverlay'],
  ['testoverlaystyleclass'],
  ['testprint', ['testprintfileoperation.c']],
  ['testscale'],
  ['testselectionmode'],
  ['testsounds'],
  ['testspinbutton'],
  ['testtreechanging'],
  ['testtreednd'],
  ['testtreeedit'],
  ['testtreemodel'],
  ['testtreeview'],
  ['testtreefocus'],
  ['testtreeflow'],
  ['testtreecolumns'],
  ['testtreecolumnsizing'],
  ['testtreesort'],
  ['testverticalcells'],
  ['treestoretest'],
  ['testgrouping'],
  ['testtooltips'],
  ['testexpand'],
  ['testvolumebutton'],
  ['testscrolledwindow'],
  ['testscrolledge'],
  ['testscrolltofocus'],
  ['testcellarea'],
  ['testswitch'],
  ['testtreepos'],
  ['testsensitive'],
  ['testtextview'],
  ['testtextview2'],
  ['testgmenu'],
  ['testlogout'],
  ['teststack'],
  ['testrevealer'],
  ['testrevealer2'],
  ['testwindowsize'],
  ['testpopover'],
  ['listmodel'],
  ['testgaction'],
  ['testwidgetfocus'],
  ['testwidgettransforms'],
  ['testcenterbox'],
  ['testgridbaseline'],
  ['showrendernode'],
  ['testborderdrawing'],
  ['testoutsetshadowdrawing'],
  ['testblur'],
  ['testtexture'],
  ['testwindowdrag'],
  ['testinhibitshortcuts'],
  ['testtexthistory', ['../gtk/gtktexthistory.c']],
]

if os_unix
  gtk_tests += [['testfontchooserdialog']]
endif

if x11_enabled
  gtk_tests += [['testerrors']]
endif

# Pass the source dir here so programs can change into the source directory
# and find .ui files and .png files and such that they load at runtime
test_args = ['-DGTK_SRCDIR="@0@"'.format(meson.current_source_dir())]

foreach t: gtk_tests
  test_name = t.get(0)
  test_srcs = ['@0@.c'.format(test_name), t.get(1, [])]
  executable(test_name, test_srcs,
             include_directories: [confinc, gdkinc],
             c_args: test_args + common_cflags,
             dependencies: [libgtk_dep, libm])
endforeach

if get_option('profiler')
  executable('testperf', 'testperf.c',
              dependencies: [profiler_dep, platform_gio_dep, libm])
endif