1 // Copyright 2014 The Chromium 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.
5 #include "components/copresence/handlers/audio/audio_directive_list.h"
8 #include "base/bind_helpers.h"
9 #include "base/message_loop/message_loop.h"
10 #include "testing/gmock/include/gmock/gmock.h"
12 using testing::IsNull;
14 namespace copresence {
16 class AudioDirectiveListTest : public testing::Test {
18 AudioDirectiveListTest() : directive_list_(new AudioDirectiveList) {}
21 base::MessageLoop message_loop_;
22 scoped_ptr<AudioDirectiveList> directive_list_;
25 TEST_F(AudioDirectiveListTest, Basic) {
26 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
28 EXPECT_THAT(directive_list_->GetActiveDirective(), IsNull());
30 directive_list_->AddDirective("op_id1", kTtl);
31 directive_list_->AddDirective("op_id2", kTtl * 3);
32 directive_list_->AddDirective("op_id3", kTtl * 2);
33 EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id);
35 directive_list_->RemoveDirective("op_id2");
36 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
39 TEST_F(AudioDirectiveListTest, AddDirectiveMultiple) {
40 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
42 directive_list_->AddDirective("op_id1", kTtl);
43 directive_list_->AddDirective("op_id2", kTtl * 2);
44 directive_list_->AddDirective("op_id3", kTtl * 3 * 2);
45 directive_list_->AddDirective("op_id3", kTtl * 3 * 3);
46 directive_list_->AddDirective("op_id4", kTtl * 4);
48 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
49 directive_list_->RemoveDirective("op_id3");
50 EXPECT_EQ("op_id4", directive_list_->GetActiveDirective()->op_id);
51 directive_list_->RemoveDirective("op_id4");
52 EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id);
53 directive_list_->RemoveDirective("op_id2");
54 EXPECT_EQ("op_id1", directive_list_->GetActiveDirective()->op_id);
55 directive_list_->RemoveDirective("op_id1");
56 EXPECT_THAT(directive_list_->GetActiveDirective(), IsNull());
59 TEST_F(AudioDirectiveListTest, RemoveDirectiveMultiple) {
60 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
62 directive_list_->AddDirective("op_id1", kTtl);
63 directive_list_->AddDirective("op_id2", kTtl * 2);
64 directive_list_->AddDirective("op_id3", kTtl * 3);
65 directive_list_->AddDirective("op_id4", kTtl * 4);
67 EXPECT_EQ("op_id4", directive_list_->GetActiveDirective()->op_id);
68 directive_list_->RemoveDirective("op_id4");
69 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
70 directive_list_->RemoveDirective("op_id3");
71 directive_list_->RemoveDirective("op_id3");
72 directive_list_->RemoveDirective("op_id3");
73 EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id);
74 directive_list_->RemoveDirective("op_id2");
75 EXPECT_EQ("op_id1", directive_list_->GetActiveDirective()->op_id);
76 directive_list_->RemoveDirective("op_id1");
77 EXPECT_THAT(directive_list_->GetActiveDirective(), IsNull());
80 } // namespace copresence