[alsa-devel] [PATCH] hda-emu: Add check for unnecessary indices of kcontrols to testsuite

David Henningsson david.henningsson at canonical.com
Wed Oct 3 16:23:25 CEST 2012


---
 tester/runner.py |   29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/tester/runner.py b/tester/runner.py
index 30118ce..1e7ecf9 100644
--- a/tester/runner.py
+++ b/tester/runner.py
@@ -25,7 +25,9 @@ class ControlInfo():
         self.runner = runner
         carr = list_info.split(":")
         self.numid = carr[1]
-        self.name = carr[2]
+        self.name = carr[2][1:]
+        self.index, _ = tuple(carr[3].split(" "))
+        self.index = int(self.index)
 
     def add_info(self, get_info):
         minmax_regex = re.compile("MIN/MAX: (\d+)/(\d+),\s+VAL:(( \\[\d+\\])+)")
@@ -222,13 +224,28 @@ class HdaEmuRunner():
             if (int(a) != int(b)):
                 self.add_error("Tried to set " + c.name + " to " + str([int(x) for x in values]) + ", but got " + str(c.values) + " instead", "Error")
 
-    def run_kcontrol_test(self):
-        minmax_regex = re.compile("MIN/MAX: (\d+)/(\d+),\s+VAL:(( \\[\d+\\])+)")
-        val_regex = re.compile(" \\[(\d+)\\]")
+    def check_kcontrol_indices(self, cinfo):
+        d = {}
+        for c in cinfo:
+            if not c.name in d:
+                d[c.name] = []
+            d[c.name].append(c.index)
+
+        for k, v in d.iteritems():
+            j = 0
+            for i in sorted(v):
+                if i > j:
+                    self.add_error("Unneccesary index on control '" + k + "' (" + str(i) + ")", "Error")
+# Commented out - gives false positives for 'Playback Channel Map'
+#                elif i < j:
+#                    self.add_error("Duplicate control '" + k + "' (" + str(i) + ")", "Error")
+                j = i+1
 
+    def run_kcontrol_test(self):
         controls = self.run_command("list")
-        for control in controls:
-            c = ControlInfo(self, control)
+        cinfo = [ControlInfo(self, control) for control in controls]
+        self.check_kcontrol_indices(cinfo)
+        for c in cinfo:
             c.add_info(self.run_command("get " + c.numid))
             if "minval" in c.__dict__:
                 minval = c.minval
-- 
1.7.9.5



More information about the Alsa-devel mailing list