1 // Copyright 2015 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <stdio.h>
6 #include <gtest/gtest.h>
7
8 extern "C" {
9 #include "cras_rstream.h"
10 #include "stream_list.h"
11 }
12
13 namespace {
14
15 static unsigned int add_called;
added_cb(struct cras_rstream * rstream)16 static int added_cb(struct cras_rstream *rstream) {
17 add_called++;
18 return 0;
19 }
20
21 static unsigned int rm_called;
22 static struct cras_rstream *rmed_stream;
removed_cb(struct cras_rstream * rstream)23 static int removed_cb(struct cras_rstream *rstream) {
24 rm_called++;
25 rmed_stream = rstream;
26 return 0;
27 }
28
29 static unsigned int create_called;
30 static struct cras_rstream_config *create_config;
31 static struct cras_rstream dummy_rstream;
create_rstream_cb(struct cras_rstream_config * stream_config,struct cras_rstream ** stream)32 static int create_rstream_cb(struct cras_rstream_config *stream_config,
33 struct cras_rstream **stream) {
34 create_called++;
35 create_config = stream_config;
36 *stream = &dummy_rstream;
37 dummy_rstream.stream_id = 0x3003;
38 return 0;
39 }
40
41 static unsigned int destroy_called;
42 static struct cras_rstream *destroyed_stream;
destroy_rstream_cb(struct cras_rstream * rstream)43 static void destroy_rstream_cb(struct cras_rstream *rstream) {
44 destroy_called++;
45 destroyed_stream = rstream;
46 }
47
reset_test_data()48 static void reset_test_data() {
49 add_called = 0;
50 rm_called = 0;
51 create_called = 0;
52 destroy_called = 0;
53 }
54
TEST(StreamList,AddRemove)55 TEST(StreamList, AddRemove) {
56 struct stream_list *l;
57 struct cras_rstream *s1;
58 struct cras_rstream_config s1_config;
59
60 reset_test_data();
61 l = stream_list_create(added_cb, removed_cb, create_rstream_cb,
62 destroy_rstream_cb, NULL);
63 stream_list_add(l, &s1_config, &s1);
64 EXPECT_EQ(1, add_called);
65 EXPECT_EQ(1, create_called);
66 EXPECT_EQ(&s1_config, create_config);
67 EXPECT_EQ(0, stream_list_rm(l, 0x3003));
68 EXPECT_EQ(1, rm_called);
69 EXPECT_EQ(s1, rmed_stream);
70 EXPECT_EQ(1, destroy_called);
71 EXPECT_EQ(s1, destroyed_stream);
72 stream_list_destroy(l);
73 }
74
75 extern "C" {
76
cras_tm_create_timer(struct cras_tm * tm,unsigned int ms,void (* cb)(struct cras_timer * t,void * data),void * cb_data)77 struct cras_timer *cras_tm_create_timer(
78 struct cras_tm *tm,
79 unsigned int ms,
80 void (*cb)(struct cras_timer *t, void *data),
81 void *cb_data) {
82 return reinterpret_cast<struct cras_timer *>(0x404);
83 }
84
cras_tm_cancel_timer(struct cras_tm * tm,struct cras_timer * t)85 void cras_tm_cancel_timer(struct cras_tm *tm, struct cras_timer *t) {
86 }
87
88 }
89
90 } // namespace
91
main(int argc,char ** argv)92 int main(int argc, char **argv) {
93 ::testing::InitGoogleTest(&argc, argv);
94 return RUN_ALL_TESTS();
95 }
96