Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
 test/tablet-validity.c | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/test/tablet-validity.c b/test/tablet-validity.c
index ee07dae..1146f58 100644
--- a/test/tablet-validity.c
+++ b/test/tablet-validity.c
@@ -135,6 +135,45 @@ static int tablet_has_lr_buttons(WacomDevice *device)
        return 0;
 }
 
+static int verify_led_groups(WacomDevice *device)
+{
+       const WacomStatusLEDs *leds;
+       int nleds, led_idx;
+       int nbuttons, btn_idx;
+       uint32_t group_flags = 0;
+
+       leds = libwacom_get_status_leds(device, &nleds);
+       if (nleds == 0)
+               return 1;
+
+       for (led_idx = 0; led_idx < nleds; led_idx++) {
+               WacomStatusLEDs l = leds[led_idx];
+               assert(l != WACOM_STATUS_LED_UNAVAILABLE);
+               assert(l <= WACOM_STATUS_LED_TOUCHSTRIP2);
+       }
+
+       /* Check we have a toggle button for each led group */
+       nbuttons = libwacom_get_num_buttons(device);
+       for (btn_idx = 0; btn_idx < nbuttons; btn_idx++) {
+               WacomButtonFlags flags = libwacom_get_button_flag(device, 'A' + 
btn_idx);
+               int group = libwacom_get_button_led_group(device, 'A' + 
btn_idx);
+
+               if (flags & WACOM_BUTTON_MODESWITCH)
+                       assert(group != -1);
+               else
+                       assert(group == -1);
+
+               if (group == -1)
+                       continue;
+
+               group_flags |= 1 << group;
+       }
+
+       assert(group_flags == (1 << nleds) - 1);
+
+       return 1;
+}
+
 static void verify_tablet(WacomDeviceDatabase *db, WacomDevice *device)
 {
        const char *name;
@@ -252,6 +291,8 @@ static void verify_tablet(WacomDeviceDatabase *db, 
WacomDevice *device)
 
        if (libwacom_is_reversible(device) && libwacom_get_num_buttons(device) 
> 0)
                assert(tablet_has_lr_buttons(device));
+
+       verify_led_groups(device);
 }
 
 int main(int argc, char **argv)
-- 
2.7.4


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to