From 20944c753d5ab8b5b9d753b20937c13a4f206e17 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sun, 19 Jun 2022 20:38:51 +0900 Subject: [PATCH] tests: test virtual functions in object Signed-off-by: Takashi Sakamoto --- tests/alsactl-card | 4 +++- tests/alsactl-card-info | 3 ++- tests/alsactl-elem-info-boolean | 3 ++- tests/alsactl-elem-info-bytes | 3 ++- tests/alsactl-elem-info-enumerated | 3 ++- tests/alsactl-elem-info-iec60958 | 3 ++- tests/alsactl-elem-info-integer | 3 ++- tests/alsactl-elem-info-integer64 | 3 ++- tests/alsactl-elem-value | 3 ++- tests/alsahwdep-device-info | 3 ++- tests/alsarawmidi-stream-pair | 4 +++- tests/alsarawmidi-substream-info | 3 ++- tests/alsarawmidi-substream-params | 3 ++- tests/alsarawmidi-substream-status | 3 ++- tests/alsaseq-client-info | 3 ++- tests/alsaseq-client-pool | 3 ++- tests/alsaseq-port-info | 3 ++- tests/alsaseq-queue-info | 3 ++- tests/alsaseq-queue-status | 3 ++- tests/alsaseq-queue-tempo | 3 ++- tests/alsaseq-queue-timer-alsa | 5 ++--- tests/alsaseq-subscribe-data | 3 ++- tests/alsaseq-system-info | 3 ++- tests/alsaseq-user-client | 9 +++++++-- tests/alsatimer-device-info | 3 ++- tests/alsatimer-device-params | 3 ++- tests/alsatimer-device-status | 3 ++- tests/alsatimer-instance-info | 3 ++- tests/alsatimer-instance-params | 3 ++- tests/alsatimer-instance-status | 3 ++- tests/alsatimer-user-instance | 10 ++++++---- tests/helper.py | 9 ++++++++- 32 files changed, 81 insertions(+), 38 deletions(-) diff --git a/tests/alsactl-card b/tests/alsactl-card index 265b2db..4874493 100644 --- a/tests/alsactl-card +++ b/tests/alsactl-card @@ -31,6 +31,8 @@ methods = ( 'write_elem_value', 'read_elem_value', 'create_source', +) +vmethods = ( 'do_handle_elem_event', 'do_handle_disconnection', ) @@ -39,5 +41,5 @@ signals = ( 'handle-disconnection', ) -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-card-info b/tests/alsactl-card-info index 3d8b65b..c7a5e98 100644 --- a/tests/alsactl-card-info +++ b/tests/alsactl-card-info @@ -20,7 +20,8 @@ props = ( 'components', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-boolean b/tests/alsactl-elem-info-boolean index 17d19c2..8aaba93 100644 --- a/tests/alsactl-elem-info-boolean +++ b/tests/alsactl-elem-info-boolean @@ -20,7 +20,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-bytes b/tests/alsactl-elem-info-bytes index 792d2eb..0af5bbb 100644 --- a/tests/alsactl-elem-info-bytes +++ b/tests/alsactl-elem-info-bytes @@ -20,7 +20,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-enumerated b/tests/alsactl-elem-info-enumerated index dcb4843..050aa7f 100644 --- a/tests/alsactl-elem-info-enumerated +++ b/tests/alsactl-elem-info-enumerated @@ -21,7 +21,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-iec60958 b/tests/alsactl-elem-info-iec60958 index d81d184..a774ab4 100644 --- a/tests/alsactl-elem-info-iec60958 +++ b/tests/alsactl-elem-info-iec60958 @@ -19,7 +19,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-integer b/tests/alsactl-elem-info-integer index 69a0323..ad41810 100644 --- a/tests/alsactl-elem-info-integer +++ b/tests/alsactl-elem-info-integer @@ -23,7 +23,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-info-integer64 b/tests/alsactl-elem-info-integer64 index 066fe2e..129e937 100644 --- a/tests/alsactl-elem-info-integer64 +++ b/tests/alsactl-elem-info-integer64 @@ -23,7 +23,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsactl-elem-value b/tests/alsactl-elem-value index c4a55f7..8dc86ed 100644 --- a/tests/alsactl-elem-value +++ b/tests/alsactl-elem-value @@ -31,7 +31,8 @@ methods = ( 'get_int64', 'equal', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsahwdep-device-info b/tests/alsahwdep-device-info index 4d27ef8..232c7a9 100644 --- a/tests/alsahwdep-device-info +++ b/tests/alsahwdep-device-info @@ -18,7 +18,8 @@ props = ( 'iface', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsarawmidi-stream-pair b/tests/alsarawmidi-stream-pair index 5bd2b1b..398aa26 100644 --- a/tests/alsarawmidi-stream-pair +++ b/tests/alsarawmidi-stream-pair @@ -25,6 +25,8 @@ methods = ( 'drain_substream', 'drop_substream', 'create_source', +) +vmethods = ( 'do_handle_messages', 'do_handle_disconnection', ) @@ -33,5 +35,5 @@ signals = ( 'handle-disconnection', ) -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsarawmidi-substream-info b/tests/alsarawmidi-substream-info index 3d9e87b..11553be 100644 --- a/tests/alsarawmidi-substream-info +++ b/tests/alsarawmidi-substream-info @@ -23,7 +23,8 @@ props = ( 'subdevices-avail', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsarawmidi-substream-params b/tests/alsarawmidi-substream-params index 5a1b631..05b2681 100644 --- a/tests/alsarawmidi-substream-params +++ b/tests/alsarawmidi-substream-params @@ -18,7 +18,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsarawmidi-substream-status b/tests/alsarawmidi-substream-status index 876b649..fa1ef3a 100644 --- a/tests/alsarawmidi-substream-status +++ b/tests/alsarawmidi-substream-status @@ -17,7 +17,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-client-info b/tests/alsaseq-client-info index b268f8e..f51c2dc 100644 --- a/tests/alsaseq-client-info +++ b/tests/alsaseq-client-info @@ -26,7 +26,8 @@ methods = ( 'set_event_filter', 'get_event_filter', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-client-pool b/tests/alsaseq-client-pool index fd5e1d1..86f5e50 100644 --- a/tests/alsaseq-client-pool +++ b/tests/alsaseq-client-pool @@ -19,7 +19,8 @@ props = ( 'input-free', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-port-info b/tests/alsaseq-port-info index bb166c2..ae6e2e5 100644 --- a/tests/alsaseq-port-info +++ b/tests/alsaseq-port-info @@ -26,7 +26,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-queue-info b/tests/alsaseq-queue-info index 42fab07..4eccc0f 100644 --- a/tests/alsaseq-queue-info +++ b/tests/alsaseq-queue-info @@ -19,7 +19,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-queue-status b/tests/alsaseq-queue-status index d5eca73..c96d6e0 100644 --- a/tests/alsaseq-queue-status +++ b/tests/alsaseq-queue-status @@ -20,7 +20,8 @@ methods = ( 'get_tick_time', 'get_real_time', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-queue-tempo b/tests/alsaseq-queue-tempo index 8aca8f3..9647778 100644 --- a/tests/alsaseq-queue-tempo +++ b/tests/alsaseq-queue-tempo @@ -20,7 +20,8 @@ methods = ( 'get_skew', 'set_skew', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-queue-timer-alsa b/tests/alsaseq-queue-timer-alsa index 7ac6f63..fdee1ad 100644 --- a/tests/alsaseq-queue-timer-alsa +++ b/tests/alsaseq-queue-timer-alsa @@ -16,12 +16,11 @@ props = ( 'device-id', 'resolution-ticks', ) - methods = ( 'new', ) - +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-subscribe-data b/tests/alsaseq-subscribe-data index 65c3225..5f64438 100644 --- a/tests/alsaseq-subscribe-data +++ b/tests/alsaseq-subscribe-data @@ -21,7 +21,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-system-info b/tests/alsaseq-system-info index e9c43b1..a01b58f 100644 --- a/tests/alsaseq-system-info +++ b/tests/alsaseq-system-info @@ -19,7 +19,8 @@ props = ( 'current-queue-count', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsaseq-user-client b/tests/alsaseq-user-client index 5ec0b41..f23e8b2 100644 --- a/tests/alsaseq-user-client +++ b/tests/alsaseq-user-client @@ -40,7 +40,12 @@ methods = ( 'remove_events', 'schedule_events', ) -signals = () +vmethods = ( + 'do_handle_event', +) +signals = ( + 'handle-event', +) -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-device-info b/tests/alsatimer-device-info index 97e3123..88df917 100644 --- a/tests/alsatimer-device-info +++ b/tests/alsatimer-device-info @@ -21,7 +21,8 @@ props = ( 'instance-count', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-device-params b/tests/alsatimer-device-params index 3778007..461e3ea 100644 --- a/tests/alsatimer-device-params +++ b/tests/alsatimer-device-params @@ -17,7 +17,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-device-status b/tests/alsatimer-device-status index 4a1382d..10ca725 100644 --- a/tests/alsatimer-device-status +++ b/tests/alsatimer-device-status @@ -18,7 +18,8 @@ props = ( methods = ( 'new', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-instance-info b/tests/alsatimer-instance-info index 25e1588..70797e2 100644 --- a/tests/alsatimer-instance-info +++ b/tests/alsatimer-instance-info @@ -18,7 +18,8 @@ props = ( 'resolution', ) methods = () +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-instance-params b/tests/alsatimer-instance-params index 293f9ed..018d956 100644 --- a/tests/alsatimer-instance-params +++ b/tests/alsatimer-instance-params @@ -20,7 +20,8 @@ methods = ( 'set_event_filter', 'get_event_filter', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-instance-status b/tests/alsatimer-instance-status index 4135042..4400717 100644 --- a/tests/alsatimer-instance-status +++ b/tests/alsatimer-instance-status @@ -20,7 +20,8 @@ methods = ( 'new', 'get_tstamp', ) +vmethods = () signals = () -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/alsatimer-user-instance b/tests/alsatimer-user-instance index 4b94906..bb1ace1 100644 --- a/tests/alsatimer-user-instance +++ b/tests/alsatimer-user-instance @@ -22,19 +22,21 @@ methods = ( 'set_params', 'get_status', 'create_source', - 'do_handle_tick_event', - 'do_handle_tstamp_event', - 'do_handle_disconnection', 'start', 'stop', 'pause', 'continue_', ) +vmethods = ( + 'do_handle_tick_event', + 'do_handle_tstamp_event', + 'do_handle_disconnection', +) signals = ( 'handle-tick-event', 'handle-tstamp-event', 'handle-disconnection', ) -if not test_object(target_type, props, methods, signals): +if not test_object(target_type, props, methods, vmethods, signals): exit(ENXIO) diff --git a/tests/helper.py b/tests/helper.py index 4cabd50..5a42934 100644 --- a/tests/helper.py +++ b/tests/helper.py @@ -1,5 +1,5 @@ def test_object(target_type: object, props: tuple[str], methods: tuple[str], - signals: tuple[str]) -> bool: + vmethods: tuple[str], signals: tuple[str]) -> bool: # All of available methods are put into the list of attribute. for method in methods: if not hasattr(target_type, method): @@ -9,6 +9,7 @@ def test_object(target_type: object, props: tuple[str], methods: tuple[str], # The properties, virtual methods, and signals in interface are not put # into the list of attribute in object implementing the interface. prop_labels = [] + vmethod_labels = [] signal_labels = [] # The gi.ObjectInfo and gi.InterfaceInfo keeps them. Let's traverse them. @@ -16,6 +17,8 @@ def test_object(target_type: object, props: tuple[str], methods: tuple[str], if hasattr(info, '__info__'): for prop in info.__info__.get_properties(): prop_labels.append(prop.get_name()) + for vfunc in info.__info__.get_vfuncs(): + vmethod_labels.append('do_' + vfunc.get_name()) for signal in info.__info__.get_signals(): signal_labels.append(signal.get_name()) @@ -23,6 +26,10 @@ def test_object(target_type: object, props: tuple[str], methods: tuple[str], if prop not in prop_labels: print('Property {0} is not produced.'.format(prop)) return False + for vmethod in vmethods: + if vmethod not in vmethod_labels: + print('Vmethod {0} is not produced.'.format(vmethod)) + return False for signal in signals: if signal not in signal_labels: print('Signal {0} is not produced.'.format(signal)) -- 2.47.3