test: volume: Utilize real buffer implementation instead of mocking.

Currently volume unit tests mock buffer components by hand, which
adds maintenance overhead in case of changes in buffer implementation,
which are under way.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
This commit is contained in:
Artur Kloniecki 2020-08-12 10:40:46 +02:00 committed by Janusz Jankowski
parent 2d1b17a55e
commit 4f952a3868
6 changed files with 19 additions and 33 deletions

View File

@ -5,7 +5,7 @@
// Author: Daniel Bogdzia <danielx.bogdzia@linux.intel.com>
// Janusz Jankowski <janusz.jankowski@linux.intel.com>
#include "util.h"
#include "../../util.h"
#include <sof/audio/component_ext.h>
#include <sof/audio/format.h>

View File

@ -5,7 +5,7 @@
// Author: Daniel Bogdzia <danielx.bogdzia@linux.intel.com>
// Janusz Jankowski <janusz.jankowski@linux.intel.com>
#include "util.h"
#include "../../util.h"
#include <sof/audio/component_ext.h>
#include <sof/audio/format.h>

View File

@ -5,7 +5,7 @@
// Author: Daniel Bogdzia <danielx.bogdzia@linux.intel.com>
// Janusz Jankowski <janusz.jankowski@linux.intel.com>
#include "util.h"
#include "../../util.h"
#include <sof/audio/component_ext.h>
#include <sof/audio/mux.h>

View File

@ -15,6 +15,8 @@ add_library(audio_for_volume STATIC
${PROJECT_SOURCE_DIR}/src/audio/volume/volume.c
${PROJECT_SOURCE_DIR}/src/audio/volume/volume_generic.c
${PROJECT_SOURCE_DIR}/src/audio/volume/volume_hifi3.c
${PROJECT_SOURCE_DIR}/src/audio/buffer.c
${PROJECT_SOURCE_DIR}/test/cmocka/src/notifier_mocks.c
)
sof_append_relative_path_definitions(audio_for_volume)

View File

@ -4,6 +4,8 @@
//
// Author: Tomasz Lauda <tomasz.lauda@linux.intel.com>
#include "../../util.h"
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
@ -31,8 +33,7 @@ struct vol_test_state {
struct comp_dev *dev;
struct comp_buffer *sink;
struct comp_buffer *source;
void (*verify)(struct comp_dev *dev, struct comp_buffer *sink,
struct comp_buffer *source);
void (*verify)(struct comp_dev *dev, struct comp_buffer *sink, struct comp_buffer *source);
};
struct vol_test_parameters {
@ -42,8 +43,7 @@ struct vol_test_parameters {
uint32_t buffer_size_ms;
uint32_t source_format;
uint32_t sink_format;
void (*verify)(struct comp_dev *dev, struct comp_buffer *sink,
struct comp_buffer *source);
void (*verify)(struct comp_dev *dev, struct comp_buffer *sink, struct comp_buffer *source);
};
static void set_volume(int32_t *vol, int32_t value, uint32_t channels)
@ -76,31 +76,18 @@ static int setup(void **state)
list_init(&vol_state->dev->bsink_list);
/* allocate new sink buffer */
vol_state->sink = test_malloc(sizeof(*vol_state->sink));
vol_state->sink->stream.frame_fmt = parameters->sink_format;
vol_state->sink->stream.channels = parameters->channels;
size = parameters->frames *
audio_stream_frame_bytes(&vol_state->sink->stream);
size = parameters->frames * get_frame_bytes(parameters->sink_format, parameters->channels) *
parameters->buffer_size_ms;
vol_state->sink->stream.addr = test_calloc(parameters->buffer_size_ms,
size);
buffer_init(vol_state->sink, parameters->buffer_size_ms * size, 0);
list_item_prepend(&vol_state->sink->source_list,
&vol_state->dev->bsink_list);
vol_state->sink = create_test_sink(vol_state->dev, 0, parameters->sink_format,
parameters->channels, size);
/* allocate new source buffer */
vol_state->source = test_malloc(sizeof(*vol_state->source));
vol_state->source->stream.frame_fmt = parameters->source_format;
vol_state->source->stream.channels = parameters->channels;
size = parameters->frames *
audio_stream_frame_bytes(&vol_state->source->stream);
vol_state->source->stream.addr = test_calloc(parameters->buffer_size_ms,
size);
buffer_init(vol_state->source, parameters->buffer_size_ms * size, 0);
size = parameters->frames * get_frame_bytes(parameters->source_format,
parameters->channels) * parameters->buffer_size_ms;
list_item_prepend(&vol_state->source->sink_list,
&vol_state->dev->bsource_list);
vol_state->source = create_test_source(vol_state->dev, 0, parameters->source_format,
parameters->channels, size);
/* set processing function and volume */
cd->scale_vol = vol_get_processing_function(vol_state->dev);
@ -123,10 +110,8 @@ static int teardown(void **state)
/* free everything */
test_free(cd);
test_free(vol_state->dev);
test_free(vol_state->sink->stream.addr);
test_free(vol_state->sink);
test_free(vol_state->source->stream.addr);
test_free(vol_state->source);
free_test_sink(vol_state->sink);
free_test_source(vol_state->source);
test_free(vol_state);
return 0;

View File

@ -7,7 +7,6 @@
#include <sof/sof.h>
#include <sof/audio/component.h>
#include <sof/audio/mux.h>
#include <sof/lib/alloc.h>
#include <stdlib.h>