test: test sandbox sound driver more rigorously
Consider unexpected values for frequency: * negative frequency * zero frequency * frequency exceeding sampling frequency As in these cases the sum of the samples is zero also check the count of the samples. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
d0e8777bee
commit
968eaaeaa7
@ -188,6 +188,16 @@ int sandbox_get_setup_called(struct udevice *dev);
|
|||||||
*/
|
*/
|
||||||
int sandbox_get_sound_active(struct udevice *dev);
|
int sandbox_get_sound_active(struct udevice *dev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sandbox_get_sound_count() - Read back the count of the sound data so far
|
||||||
|
*
|
||||||
|
* This data is provided to the sandbox driver by the sound play() method.
|
||||||
|
*
|
||||||
|
* @dev: Device to check
|
||||||
|
* Return: count of audio data
|
||||||
|
*/
|
||||||
|
int sandbox_get_sound_count(struct udevice *dev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sandbox_get_sound_sum() - Read back the sum of the sound data so far
|
* sandbox_get_sound_sum() - Read back the sum of the sound data so far
|
||||||
*
|
*
|
||||||
|
@ -29,6 +29,7 @@ struct sandbox_i2s_priv {
|
|||||||
struct sandbox_sound_priv {
|
struct sandbox_sound_priv {
|
||||||
int setup_called; /* Incremented when setup() method is called */
|
int setup_called; /* Incremented when setup() method is called */
|
||||||
bool active; /* TX data is being sent */
|
bool active; /* TX data is being sent */
|
||||||
|
int count; /* Use to count the provided audio data */
|
||||||
int sum; /* Use to sum the provided audio data */
|
int sum; /* Use to sum the provided audio data */
|
||||||
bool allow_beep; /* true to allow the start_beep() interface */
|
bool allow_beep; /* true to allow the start_beep() interface */
|
||||||
int frequency_hz; /* Beep frequency if active, else 0 */
|
int frequency_hz; /* Beep frequency if active, else 0 */
|
||||||
@ -68,6 +69,13 @@ int sandbox_get_sound_active(struct udevice *dev)
|
|||||||
return priv->active;
|
return priv->active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sandbox_get_sound_count(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sandbox_sound_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return priv->count;
|
||||||
|
}
|
||||||
|
|
||||||
int sandbox_get_sound_sum(struct udevice *dev)
|
int sandbox_get_sound_sum(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_sound_priv *priv = dev_get_priv(dev);
|
struct sandbox_sound_priv *priv = dev_get_priv(dev);
|
||||||
@ -168,6 +176,7 @@ static int sandbox_sound_play(struct udevice *dev, void *data, uint data_size)
|
|||||||
|
|
||||||
for (i = 0; i < data_size; i++)
|
for (i = 0; i < data_size; i++)
|
||||||
priv->sum += ((uint8_t *)data)[i];
|
priv->sum += ((uint8_t *)data)[i];
|
||||||
|
priv->count += data_size;
|
||||||
|
|
||||||
return i2s_tx_data(uc_priv->i2s, data, data_size);
|
return i2s_tx_data(uc_priv->i2s, data, data_size);
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,19 @@ static int dm_test_sound(struct unit_test_state *uts)
|
|||||||
ut_asserteq(0, sandbox_get_setup_called(dev));
|
ut_asserteq(0, sandbox_get_setup_called(dev));
|
||||||
|
|
||||||
ut_assertok(sound_beep(dev, 1, 100));
|
ut_assertok(sound_beep(dev, 1, 100));
|
||||||
|
ut_asserteq(48, sandbox_get_sound_count(dev));
|
||||||
ut_asserteq(4560, sandbox_get_sound_sum(dev));
|
ut_asserteq(4560, sandbox_get_sound_sum(dev));
|
||||||
ut_assertok(sound_beep(dev, 1, 100));
|
ut_assertok(sound_beep(dev, 1, 100));
|
||||||
|
ut_asserteq(96, sandbox_get_sound_count(dev));
|
||||||
|
ut_asserteq(9120, sandbox_get_sound_sum(dev));
|
||||||
|
ut_assertok(sound_beep(dev, 1, -100));
|
||||||
|
ut_asserteq(144, sandbox_get_sound_count(dev));
|
||||||
|
ut_asserteq(9120, sandbox_get_sound_sum(dev));
|
||||||
|
ut_assertok(sound_beep(dev, 1, 0));
|
||||||
|
ut_asserteq(192, sandbox_get_sound_count(dev));
|
||||||
|
ut_asserteq(9120, sandbox_get_sound_sum(dev));
|
||||||
|
ut_assertok(sound_beep(dev, 1, INT_MAX));
|
||||||
|
ut_asserteq(240, sandbox_get_sound_count(dev));
|
||||||
ut_asserteq(9120, sandbox_get_sound_sum(dev));
|
ut_asserteq(9120, sandbox_get_sound_sum(dev));
|
||||||
ut_asserteq(false, sandbox_get_sound_active(dev));
|
ut_asserteq(false, sandbox_get_sound_active(dev));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user