mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-21 18:14:48 +08:00
selftests: alsa: Start validating control names
Not much of a test but we keep on getting problems with boolean controls not being called Switches so let's add a few basic checks to help people spot problems. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220421115020.14118-1-broonie@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
67d64069bc
commit
c92b576a13
@ -27,7 +27,7 @@
|
||||
|
||||
#include "../kselftest.h"
|
||||
|
||||
#define TESTS_PER_CONTROL 6
|
||||
#define TESTS_PER_CONTROL 7
|
||||
|
||||
struct card_data {
|
||||
snd_ctl_t *handle;
|
||||
@ -456,6 +456,44 @@ out:
|
||||
ctl->card->card, ctl->elem);
|
||||
}
|
||||
|
||||
static bool strend(const char *haystack, const char *needle)
|
||||
{
|
||||
size_t haystack_len = strlen(haystack);
|
||||
size_t needle_len = strlen(needle);
|
||||
|
||||
if (needle_len > haystack_len)
|
||||
return false;
|
||||
return strcmp(haystack + haystack_len - needle_len, needle) == 0;
|
||||
}
|
||||
|
||||
static void test_ctl_name(struct ctl_data *ctl)
|
||||
{
|
||||
bool name_ok = true;
|
||||
bool check;
|
||||
|
||||
/* Only boolean controls should end in Switch */
|
||||
if (strend(ctl->name, " Switch")) {
|
||||
if (snd_ctl_elem_info_get_type(ctl->info) != SND_CTL_ELEM_TYPE_BOOLEAN) {
|
||||
ksft_print_msg("%d.%d %s ends in Switch but is not boolean\n",
|
||||
ctl->card->card, ctl->elem, ctl->name);
|
||||
name_ok = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Writeable boolean controls should end in Switch */
|
||||
if (snd_ctl_elem_info_get_type(ctl->info) == SND_CTL_ELEM_TYPE_BOOLEAN &&
|
||||
snd_ctl_elem_info_is_writable(ctl->info)) {
|
||||
if (!strend(ctl->name, " Switch")) {
|
||||
ksft_print_msg("%d.%d %s is a writeable boolean but not a Switch\n",
|
||||
ctl->card->card, ctl->elem, ctl->name);
|
||||
name_ok = false;
|
||||
}
|
||||
}
|
||||
|
||||
ksft_test_result(name_ok, "name.%d.%d\n",
|
||||
ctl->card->card, ctl->elem);
|
||||
}
|
||||
|
||||
static bool show_mismatch(struct ctl_data *ctl, int index,
|
||||
snd_ctl_elem_value_t *read_val,
|
||||
snd_ctl_elem_value_t *expected_val)
|
||||
@ -1062,6 +1100,7 @@ int main(void)
|
||||
* test stores the default value for later cleanup.
|
||||
*/
|
||||
test_ctl_get_value(ctl);
|
||||
test_ctl_name(ctl);
|
||||
test_ctl_write_default(ctl);
|
||||
test_ctl_write_valid(ctl);
|
||||
test_ctl_write_invalid(ctl);
|
||||
|
Loading…
Reference in New Issue
Block a user