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 <gtest/gtest.h>
6 #include <stdio.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(struct cras_tm* tm,
78 unsigned int ms,
79 void (*cb)(struct cras_timer* t,
80 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 } // namespace
89
main(int argc,char ** argv)90 int main(int argc, char** argv) {
91 ::testing::InitGoogleTest(&argc, argv);
92 return RUN_ALL_TESTS();
93 }
94