Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / components / copresence / handlers / audio / audio_directive_list_unittest.cc
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.
4
5 #include "components/copresence/handlers/audio/audio_directive_list.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/message_loop/message_loop.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11
12 using testing::IsNull;
13
14 namespace copresence {
15
16 class AudioDirectiveListTest : public testing::Test {
17  public:
18   AudioDirectiveListTest() : directive_list_(new AudioDirectiveList) {}
19
20  protected:
21   base::MessageLoop message_loop_;
22   scoped_ptr<AudioDirectiveList> directive_list_;
23 };
24
25 TEST_F(AudioDirectiveListTest, Basic) {
26   const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
27
28   EXPECT_THAT(directive_list_->GetActiveDirective(), IsNull());
29
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);
34
35   directive_list_->RemoveDirective("op_id2");
36   EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
37 }
38
39 TEST_F(AudioDirectiveListTest, AddDirectiveMultiple) {
40   const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
41
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);
47
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());
57 }
58
59 TEST_F(AudioDirectiveListTest, RemoveDirectiveMultiple) {
60   const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
61
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);
66
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());
78 }
79
80 }  // namespace copresence