diff options
Diffstat (limited to 'cras/src/tests/dsp_ini_unittest.cc')
-rw-r--r-- | cras/src/tests/dsp_ini_unittest.cc | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/cras/src/tests/dsp_ini_unittest.cc b/cras/src/tests/dsp_ini_unittest.cc deleted file mode 100644 index ee187906..00000000 --- a/cras/src/tests/dsp_ini_unittest.cc +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright (c) 2012 The Chromium OS Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include <gtest/gtest.h> -#include <stdio.h> -#include <stdlib.h> - -#include "cras_dsp_ini.h" - -#define FILENAME_TEMPLATE "DspIniTest.XXXXXX" - -namespace { - -class DspIniTestSuite : public testing::Test { - protected: - virtual void SetUp() { - strcpy(filename, FILENAME_TEMPLATE); - int fd = mkstemp(filename); - fp = fdopen(fd, "w"); - } - - virtual void TearDown() { - CloseFile(); - unlink(filename); - } - - virtual void CloseFile() { - if (fp) { - fclose(fp); - fp = NULL; - } - } - - char filename[sizeof(FILENAME_TEMPLATE) + 1]; - FILE* fp; -}; - -TEST_F(DspIniTestSuite, EmptyIni) { - struct ini* ini = cras_dsp_ini_create(filename); - EXPECT_EQ(0, ARRAY_COUNT(&ini->plugins)); - EXPECT_EQ(0, ARRAY_COUNT(&ini->flows)); - cras_dsp_ini_free(ini); -} - -TEST_F(DspIniTestSuite, NoLibraryOrLabel) { - fprintf(fp, "[Test]\n"); - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - /* NULL because a plugin doesn't have library or label */ - EXPECT_EQ(NULL, ini); -} - -TEST_F(DspIniTestSuite, OneSimplePlugin) { - fprintf(fp, "[Test]\n"); - fprintf(fp, "library=foo.so\n"); - fprintf(fp, "label=bar\n"); - fprintf(fp, "disable=\"#f\"\n"); - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - EXPECT_EQ(1, ARRAY_COUNT(&ini->plugins)); - EXPECT_EQ(0, ARRAY_COUNT(&ini->flows)); - - struct plugin* plugin = ARRAY_ELEMENT(&ini->plugins, 0); - EXPECT_STREQ("test", plugin->title); - EXPECT_STREQ("foo.so", plugin->library); - EXPECT_STREQ("bar", plugin->label); - EXPECT_TRUE(plugin->disable_expr); - EXPECT_EQ(0, ARRAY_COUNT(&plugin->ports)); - - cras_dsp_ini_free(ini); -} - -TEST_F(DspIniTestSuite, BuiltinPlugin) { - fprintf(fp, "[foo]\n"); - fprintf(fp, "library=builtin\n"); - fprintf(fp, "label=source\n"); - fprintf(fp, "purpose=playback\n"); - fprintf(fp, "[bar]\n"); - fprintf(fp, "library=builtin\n"); - fprintf(fp, "label=sink\n"); - fprintf(fp, "purpose=capture\n"); - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - EXPECT_EQ(2, ARRAY_COUNT(&ini->plugins)); - EXPECT_EQ(0, ARRAY_COUNT(&ini->flows)); - EXPECT_STREQ(ARRAY_ELEMENT(&ini->plugins, 0)->purpose, "playback"); - EXPECT_STREQ(ARRAY_ELEMENT(&ini->plugins, 1)->purpose, "capture"); - cras_dsp_ini_free(ini); -} - -TEST_F(DspIniTestSuite, Ports) { - fprintf(fp, "[foo]\n"); - fprintf(fp, "library=bar\n"); - fprintf(fp, "label=baz\n"); - fprintf(fp, "input_0=10\n"); - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - EXPECT_EQ(1, ARRAY_COUNT(&ini->plugins)); - EXPECT_EQ(0, ARRAY_COUNT(&ini->flows)); - struct plugin* plugin = ARRAY_ELEMENT(&ini->plugins, 0); - EXPECT_EQ(1, ARRAY_COUNT(&plugin->ports)); - struct port* port = ARRAY_ELEMENT(&plugin->ports, 0); - EXPECT_EQ(PORT_INPUT, port->direction); - EXPECT_EQ(PORT_CONTROL, port->type); - EXPECT_EQ(INVALID_FLOW_ID, port->flow_id); - EXPECT_EQ(10, port->init_value); - cras_dsp_ini_free(ini); -} - -TEST_F(DspIniTestSuite, Flows) { - fprintf(fp, "[foo]\n"); - fprintf(fp, "library=foo\n"); - fprintf(fp, "label=foo\n"); - fprintf(fp, "output_0=<control>\n"); - fprintf(fp, "output_1={audio}\n"); - fprintf(fp, "[bar]\n"); - fprintf(fp, "library=bar\n"); - fprintf(fp, "label=bar\n"); - fprintf(fp, "input_0={audio}\n"); - fprintf(fp, "input_1=<control>\n"); - - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - EXPECT_EQ(2, ARRAY_COUNT(&ini->plugins)); - struct plugin* foo = ARRAY_ELEMENT(&ini->plugins, 0); - struct plugin* bar = ARRAY_ELEMENT(&ini->plugins, 1); - EXPECT_EQ(2, ARRAY_COUNT(&foo->ports)); - EXPECT_EQ(2, ARRAY_COUNT(&bar->ports)); - - struct port* foo0 = ARRAY_ELEMENT(&foo->ports, 0); - struct port* foo1 = ARRAY_ELEMENT(&foo->ports, 1); - EXPECT_EQ(PORT_OUTPUT, foo0->direction); - EXPECT_EQ(PORT_CONTROL, foo0->type); - EXPECT_EQ(PORT_OUTPUT, foo1->direction); - EXPECT_EQ(PORT_AUDIO, foo1->type); - EXPECT_EQ(0, foo0->flow_id); - EXPECT_EQ(1, foo1->flow_id); - - struct port* bar0 = ARRAY_ELEMENT(&bar->ports, 0); - struct port* bar1 = ARRAY_ELEMENT(&bar->ports, 1); - EXPECT_EQ(PORT_INPUT, bar0->direction); - EXPECT_EQ(PORT_AUDIO, bar0->type); - EXPECT_EQ(PORT_INPUT, bar1->direction); - EXPECT_EQ(PORT_CONTROL, bar1->type); - EXPECT_EQ(1, bar0->flow_id); - EXPECT_EQ(0, bar1->flow_id); - - EXPECT_EQ(2, ARRAY_COUNT(&ini->flows)); - struct flow* flow0 = ARRAY_ELEMENT(&ini->flows, 0); - struct flow* flow1 = ARRAY_ELEMENT(&ini->flows, 1); - - EXPECT_EQ(PORT_CONTROL, flow0->type); - EXPECT_STREQ("<control>", flow0->name); - - EXPECT_EQ(PORT_AUDIO, flow1->type); - EXPECT_STREQ("{audio}", flow1->name); - - EXPECT_EQ(flow0->from, foo); - EXPECT_EQ(flow0->to, bar); - EXPECT_EQ(flow0->from_port, 0); - EXPECT_EQ(flow0->to_port, 1); - - EXPECT_EQ(flow1->from, foo); - EXPECT_EQ(flow1->to, bar); - EXPECT_EQ(flow1->from_port, 1); - EXPECT_EQ(flow1->to_port, 0); - - cras_dsp_ini_free(ini); -} - -TEST_F(DspIniTestSuite, TwoChannelWithSwap) { - /* - * Stated in ini: - * - * m0 ==(a0, a1)== m1 ==(b0, b1)== m2 - * - * After inserting swap_lr plugin: - * - * m0 ==(a0, a1)== m1 ==(b0, b1)== m_swap_lr ==(swap_lr_0, swap_lr_1)== m2 - * - */ - - const char* content = - "[M0]\n" - "library=builtin\n" - "label=source\n" - "purpose=playback\n" - "output_0={a0}\n" - "output_1={a1}\n" - "[M1]\n" - "library=builtin\n" - "label=foo\n" - "purpose=playback\n" - "input_0={a0}\n" - "input_1={a1}\n" - "output_2={b0}\n" - "output_3={b1}\n" - "[M2]\n" - "library=builtin\n" - "label=sink\n" - "purpose=playback\n" - "input_0={b0}\n" - "input_1={b1}\n"; - fprintf(fp, "%s", content); - CloseFile(); - - struct ini* ini = cras_dsp_ini_create(filename); - - /* 3 plugins and 1 swap_lr plugin. */ - EXPECT_EQ(4, ARRAY_COUNT(&ini->plugins)); - - struct plugin* m0 = ARRAY_ELEMENT(&ini->plugins, 0); - struct plugin* m1 = ARRAY_ELEMENT(&ini->plugins, 1); - struct plugin* m2 = ARRAY_ELEMENT(&ini->plugins, 2); - struct plugin* m_swap_lr = ARRAY_ELEMENT(&ini->plugins, 3); - - EXPECT_EQ(2, ARRAY_COUNT(&m0->ports)); - EXPECT_EQ(4, ARRAY_COUNT(&m1->ports)); - EXPECT_EQ(4, ARRAY_COUNT(&m_swap_lr->ports)); - EXPECT_EQ(2, ARRAY_COUNT(&m2->ports)); - - struct port* m0_0 = ARRAY_ELEMENT(&m0->ports, 0); - struct port* m0_1 = ARRAY_ELEMENT(&m0->ports, 1); - struct port* m1_0 = ARRAY_ELEMENT(&m1->ports, 0); - struct port* m1_1 = ARRAY_ELEMENT(&m1->ports, 1); - struct port* m1_2 = ARRAY_ELEMENT(&m1->ports, 2); - struct port* m1_3 = ARRAY_ELEMENT(&m1->ports, 3); - struct port* m_swap_lr_0 = ARRAY_ELEMENT(&m_swap_lr->ports, 0); - struct port* m_swap_lr_1 = ARRAY_ELEMENT(&m_swap_lr->ports, 1); - struct port* m_swap_lr_2 = ARRAY_ELEMENT(&m_swap_lr->ports, 2); - struct port* m_swap_lr_3 = ARRAY_ELEMENT(&m_swap_lr->ports, 3); - struct port* m2_0 = ARRAY_ELEMENT(&m2->ports, 0); - struct port* m2_1 = ARRAY_ELEMENT(&m2->ports, 1); - - /* flow flow_id from port to port - * ------------------------------------------------------------ - * a0 0 m0_0 m1_0 - * a1 1 m0_1 m1_1 - * b0 2 m1_2 m_swap_lr_0 - * b1 3 m1_3 m_swap_lr_1 - * swap_lr_0 4 m_swap_lr_2 m2_0 - * swap_lr_1 5 m_swap_lr_3 m2_1 - */ - EXPECT_EQ(0, m0_0->flow_id); - EXPECT_EQ(1, m0_1->flow_id); - EXPECT_EQ(0, m1_0->flow_id); - EXPECT_EQ(1, m1_1->flow_id); - EXPECT_EQ(2, m1_2->flow_id); - EXPECT_EQ(3, m1_3->flow_id); - EXPECT_EQ(2, m_swap_lr_0->flow_id); - EXPECT_EQ(3, m_swap_lr_1->flow_id); - EXPECT_EQ(4, m_swap_lr_2->flow_id); - EXPECT_EQ(5, m_swap_lr_3->flow_id); - EXPECT_EQ(4, m2_0->flow_id); - EXPECT_EQ(5, m2_1->flow_id); - - struct flow* flow_a0 = ARRAY_ELEMENT(&ini->flows, 0); - struct flow* flow_a1 = ARRAY_ELEMENT(&ini->flows, 1); - struct flow* flow_b0 = ARRAY_ELEMENT(&ini->flows, 2); - struct flow* flow_b1 = ARRAY_ELEMENT(&ini->flows, 3); - struct flow* flow_swap_lr_0 = ARRAY_ELEMENT(&ini->flows, 4); - struct flow* flow_swap_lr_1 = ARRAY_ELEMENT(&ini->flows, 5); - - EXPECT_EQ(flow_a0->from, m0); - EXPECT_EQ(flow_a0->from_port, 0); - EXPECT_EQ(flow_a0->to, m1); - EXPECT_EQ(flow_a0->to_port, 0); - - EXPECT_EQ(flow_a1->from, m0); - EXPECT_EQ(flow_a1->from_port, 1); - EXPECT_EQ(flow_a1->to, m1); - EXPECT_EQ(flow_a1->to_port, 1); - - EXPECT_EQ(flow_b0->from, m1); - EXPECT_EQ(flow_b0->from_port, 2); - EXPECT_EQ(flow_b0->to, m_swap_lr); - EXPECT_EQ(flow_b0->to_port, 0); - - EXPECT_EQ(flow_b1->from, m1); - EXPECT_EQ(flow_b1->from_port, 3); - EXPECT_EQ(flow_b1->to, m_swap_lr); - EXPECT_EQ(flow_b1->to_port, 1); - - EXPECT_EQ(flow_swap_lr_0->from, m_swap_lr); - EXPECT_EQ(flow_swap_lr_0->from_port, 2); - EXPECT_EQ(flow_swap_lr_0->to, m2); - EXPECT_EQ(flow_swap_lr_0->to_port, 0); - - EXPECT_EQ(flow_swap_lr_1->from, m_swap_lr); - EXPECT_EQ(flow_swap_lr_1->from_port, 3); - EXPECT_EQ(flow_swap_lr_1->to, m2); - EXPECT_EQ(flow_swap_lr_1->to_port, 1); - - cras_dsp_ini_free(ini); -} - -} // namespace - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} |