gtk_tests = [
  # testname, optional extra sources
  ['callbackcursor'],
  ['devicepixels'],
  ['testsections'],
  ['testfilelauncher'],
  ['input'],
  ['testpopup'],
  ['testupload'],
  ['testtransform'],
  ['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']],
  ['simple'],
  ['video-timer', ['variable.c']],
  ['testaccel'],
  ['testadjustsize'],
  ['testappchooser'],
  ['testappchooserbutton'],
  ['testassistant'],
  ['testbaseline'],
  ['testbaseline2'],
  ['testcalendar'],
  ['testcombo'],
  ['testcolumnview'],
  ['testcombochange'],
  ['testcellrenderertext'],
  ['testdialog'],
  ['testdnd2'],
  ['testdndresize'],
  ['testellipsise'],
  ['testentrycompletion'],
  ['testentryicons'],
  ['testfilechooser'],
  ['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'],
  ['testtextscroll'],
  ['testtextview'],
  ['testtextview2'],
  ['testgmenu'],
  ['testlogout'],
  ['teststack'],
  ['testrevealer'],
  ['testrevealer2'],
  ['testsuspended'],
  ['testwindowsize'],
  ['testpopover'],
  ['listmodel'],
  ['testgaction'],
  ['testwidgetfocus'],
  ['testwidgettransforms'],
  ['testcenterbox'],
  ['testgridbaseline'],
  ['showrendernode'],
  ['testborderdrawing'],
  ['testoutsetshadowdrawing'],
  ['testblur'],
  ['testtexture'],
  ['testwindowdrag'],
  ['testinhibitshortcuts'],
  ['testzoom'],
  ['testdatatable', ['frame-stats.c', 'variable.c']],
  ['testfiledialog'],
]

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

if os_linux
  gtk_tests += [
    ['testdmabuf', ['testdmabuf.c', 'gtkclipper.c']],
  ]
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,
    sources: test_srcs,
    include_directories: [confinc, gdkinc],
    c_args: test_args + common_cflags,
    dependencies: [libgtk_dep, libm],
  )
endforeach
