gnome = import('gnome')
subdir('src')
+subdir('tests')
--- /dev/null
+#!/usr/bin/env python3
+
+from sys import exit
+import gi
+gi.require_version('ALSACtl', '0.0')
+from gi.repository import ALSACtl
+
+elem_types = (
+ 'NONE',
+ 'BOOLEAN',
+ 'INTEGER',
+ 'ENUMERATED',
+ 'BYTES',
+ 'IEC60958',
+ 'INTEGER64',
+)
+
+elem_iface_types = (
+ 'CARD',
+ 'HWDEP',
+ 'MIXER',
+ 'PCM',
+ 'RAWMIDI',
+ 'TIMER',
+ 'SEQUENCER',
+)
+
+elem_access_flags = (
+ 'READ',
+ 'WRITE',
+ 'VOLATILE',
+ 'TLV_READ',
+ 'TLV_WRITE',
+ 'TLV_COMMAND',
+ 'INACTIVE',
+ 'LOCK',
+ 'OWNER',
+ 'TLV_CALLBACK',
+ 'USER',
+)
+
+event_types = (
+ 'ELEM',
+)
+
+event_mask_flags = (
+ 'VALUE',
+ 'INFO',
+ 'ADD',
+ 'TLV',
+ 'REMOVE',
+)
+
+types = {
+ ALSACtl.ElemType: elem_types,
+ ALSACtl.ElemIfaceType: elem_iface_types,
+ ALSACtl.ElemAccessFlag: elem_access_flags,
+ ALSACtl.ElemAccessFlag: elem_access_flags,
+ ALSACtl.EventType: event_types,
+ ALSACtl.EventMaskFlag: event_mask_flags,
+}
+
+for obj, types in types.items():
+ for t in types:
+ if not hasattr(obj, t):
+ print('Enumerator {0} is not produced.'.format(t))
+ exit(1)
--- /dev/null
+import gi
+gi.require_version('GObject', '2.0')
+from gi.repository import GObject
+
+def test(target, props, methods, signals) ->bool:
+ labels = [prop.name for prop in target.props]
+ for prop in props:
+ if prop not in labels:
+ print('Property {0} is not produced.'.format(prop))
+ return False
+ for method in methods:
+ if not hasattr(target, method):
+ print('Method {0} is not produced.'.format(method))
+ return False
+ labels = GObject.signal_list_names(target)
+ for signal in signals:
+ if signal not in labels:
+ print('Signal {0} is not produced.'.format(signal))
+ return False
+ return True
--- /dev/null
+# Each entry includes:
+# key: the name of test script
+# value: namespace for metadata of gobject introspection
+tests = {
+ 'ctl': [
+ 'alsactl-enums',
+ ],
+}
+
+foreach path, scripts: tests
+ objdir = join_paths(meson.build_root(), 'src', path)
+
+ env = environment()
+ env.append('LD_LIBRARY_PATH', objdir, separator : ':')
+ env.append('GI_TYPELIB_PATH', objdir, separator : ':')
+
+ foreach script: scripts
+ prog = find_program(script)
+ test(script, prog,
+ env: env,
+ )
+ endforeach
+endforeach