summaryrefslogtreecommitdiff
path: root/test/user-ctl-element-set.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/user-ctl-element-set.c')
-rw-r--r--test/user-ctl-element-set.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/test/user-ctl-element-set.c b/test/user-ctl-element-set.c
index 51e850c1..c346e03f 100644
--- a/test/user-ctl-element-set.c
+++ b/test/user-ctl-element-set.c
@@ -17,6 +17,7 @@ struct elem_set_trial {
unsigned int element_count;
snd_ctl_elem_id_t *id;
+ int dimension[4];
int (*add_elem_set)(struct elem_set_trial *trial,
snd_ctl_elem_info_t *info);
@@ -229,6 +230,7 @@ static int add_elem_set(struct elem_set_trial *trial)
{
snd_ctl_elem_info_t *info;
char name[64] = {0};
+ int err;
snprintf(name, 64, "userspace-control-element-%s",
snd_ctl_elem_type_name(trial->type));
@@ -236,8 +238,13 @@ static int add_elem_set(struct elem_set_trial *trial)
snd_ctl_elem_info_alloca(&info);
snd_ctl_elem_info_set_interface(info, SND_CTL_ELEM_IFACE_MIXER);
snd_ctl_elem_info_set_name(info, name);
+ snd_ctl_elem_info_set_dimension(info, trial->dimension);
+
+ err = trial->add_elem_set(trial, info);
+ if (err >= 0)
+ snd_ctl_elem_info_get_id(info, trial->id);
- return trial->add_elem_set(trial, info);
+ return err;
}
static int check_event(struct elem_set_trial *trial, unsigned int mask,
@@ -301,6 +308,7 @@ static int check_elem_set_props(struct elem_set_trial *trial)
unsigned int numid;
unsigned int index;
unsigned int i;
+ unsigned int j;
int err;
snd_ctl_elem_id_alloca(&id);
@@ -329,6 +337,11 @@ static int check_elem_set_props(struct elem_set_trial *trial)
return -EIO;
if (snd_ctl_elem_info_get_count(info) != trial->member_count)
return -EIO;
+ for (j = 0; j < 4; ++j) {
+ if (snd_ctl_elem_info_get_dimension(info, j) !=
+ trial->dimension[j])
+ return -EIO;
+ }
/*
* In a case of IPC, this is the others. But in this case,
@@ -464,6 +477,10 @@ int main(void)
case SND_CTL_ELEM_TYPE_BOOLEAN:
trial.element_count = 900;
trial.member_count = 128;
+ trial.dimension[0] = 4;
+ trial.dimension[1] = 4;
+ trial.dimension[2] = 8;
+ trial.dimension[3] = 0;
trial.add_elem_set = add_bool_elem_set;
trial.check_elem_props = NULL;
trial.change_elem_members = change_bool_elem_members;
@@ -471,6 +488,10 @@ int main(void)
case SND_CTL_ELEM_TYPE_INTEGER:
trial.element_count = 900;
trial.member_count = 128;
+ trial.dimension[0] = 128;
+ trial.dimension[1] = 0;
+ trial.dimension[2] = 0;
+ trial.dimension[3] = 0;
trial.add_elem_set = add_int_elem_set;
trial.check_elem_props = check_int_elem_props;
trial.change_elem_members = change_int_elem_members;
@@ -478,6 +499,10 @@ int main(void)
case SND_CTL_ELEM_TYPE_ENUMERATED:
trial.element_count = 900;
trial.member_count = 128;
+ trial.dimension[0] = 16;
+ trial.dimension[1] = 8;
+ trial.dimension[2] = 0;
+ trial.dimension[3] = 0;
trial.add_elem_set = add_enum_elem_set;
trial.check_elem_props = check_enum_elem_props;
trial.change_elem_members = change_enum_elem_members;
@@ -485,6 +510,10 @@ int main(void)
case SND_CTL_ELEM_TYPE_BYTES:
trial.element_count = 900;
trial.member_count = 512;
+ trial.dimension[0] = 8;
+ trial.dimension[1] = 4;
+ trial.dimension[2] = 8;
+ trial.dimension[3] = 4;
trial.add_elem_set = add_bytes_elem_set;
trial.check_elem_props = NULL;
trial.change_elem_members = change_bytes_elem_members;
@@ -492,6 +521,10 @@ int main(void)
case SND_CTL_ELEM_TYPE_IEC958:
trial.element_count = 1;
trial.member_count = 1;
+ trial.dimension[0] = 0;
+ trial.dimension[1] = 0;
+ trial.dimension[2] = 0;
+ trial.dimension[3] = 0;
trial.add_elem_set = add_iec958_elem_set;
trial.check_elem_props = NULL;
trial.change_elem_members = change_iec958_elem_members;
@@ -500,6 +533,10 @@ int main(void)
default:
trial.element_count = 900;
trial.member_count = 64;
+ trial.dimension[0] = 0;
+ trial.dimension[1] = 0;
+ trial.dimension[2] = 0;
+ trial.dimension[3] = 0;
trial.add_elem_set = add_int64_elem_set;
trial.check_elem_props = check_int64_elem_props;
trial.change_elem_members = change_int64_elem_members;