Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: components/copresence/handlers/audio/audio_directive_list_unittest.cc

Issue 461803003: Stop playing/recording when not needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/copresence/handlers/audio/audio_directive_list.h" 5 #include "components/copresence/handlers/audio/audio_directive_list.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "components/copresence/test/audio_test_support.h"
11 #include "media/base/audio_bus.h"
12 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
13 11
14 namespace copresence { 12 namespace copresence {
15 13
16 class AudioDirectiveListTest : public testing::Test { 14 class AudioDirectiveListTest : public testing::Test {
17 public: 15 public:
18 AudioDirectiveListTest() 16 AudioDirectiveListTest() : directive_list_(new AudioDirectiveList()) {}
19 : directive_list_(new AudioDirectiveList(
20 base::Bind(&AudioDirectiveListTest::EncodeToken,
21 base::Unretained(this)),
22 base::Bind(&base::DoNothing),
23 false)) {}
24 17
25 virtual ~AudioDirectiveListTest() {} 18 virtual ~AudioDirectiveListTest() {}
26 19
27 protected: 20 protected:
28 void EncodeToken(const std::string& token,
29 bool audible,
30 const AudioDirectiveList::SamplesCallback& callback) {
31 callback.Run(
32 token, audible, CreateRandomAudioRefCounted(0x1337, 1, 0x7331));
33 }
34
35 base::MessageLoop message_loop_; 21 base::MessageLoop message_loop_;
36 scoped_ptr<AudioDirectiveList> directive_list_; 22 scoped_ptr<AudioDirectiveList> directive_list_;
37 }; 23 };
38 24
39 // TODO(rkc): Fix errors in these tests. See crbug/402578. 25 TEST_F(AudioDirectiveListTest, Basic) {
40 #define MAYBE_Basic DISABLED_Basic 26 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
41 #define MAYBE_OutOfOrderAndMultiple DISABLED_OutOfOrderAndMultiple
42 27
43 TEST_F(AudioDirectiveListTest, MAYBE_Basic) { 28 EXPECT_EQ(NULL, directive_list_->GetActiveDirective().get());
44 const base::TimeDelta kZeroTtl = base::TimeDelta::FromMilliseconds(0);
45 const base::TimeDelta kLargeTtl = base::TimeDelta::FromSeconds(0x7331);
46 29
47 directive_list_->AddTransmitDirective("token1", "op_id1", kZeroTtl); 30 directive_list_->AddDirective("op_id1", kTtl);
48 directive_list_->AddTransmitDirective("token2", "op_id2", kLargeTtl); 31 directive_list_->AddDirective("op_id2", kTtl * 3);
49 directive_list_->AddTransmitDirective("token3", "op_id1", kZeroTtl); 32 directive_list_->AddDirective("op_id3", kTtl * 2);
33 EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id);
50 34
51 EXPECT_EQ("token2", directive_list_->GetNextTransmit()->token); 35 directive_list_->RemoveDirective("op_id2");
52 36 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
53 directive_list_->AddReceiveDirective("op_id1", kZeroTtl);
54 directive_list_->AddReceiveDirective("op_id3", kZeroTtl);
55 directive_list_->AddReceiveDirective("op_id3", kLargeTtl);
56 directive_list_->AddReceiveDirective("op_id7", kZeroTtl);
57
58 EXPECT_EQ("op_id3", directive_list_->GetNextReceive()->op_id);
59 } 37 }
60 38
61 TEST_F(AudioDirectiveListTest, MAYBE_OutOfOrderAndMultiple) { 39 TEST_F(AudioDirectiveListTest, AddDirectiveMultiple) {
62 const base::TimeDelta kZeroTtl = base::TimeDelta::FromMilliseconds(0); 40 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
63 const base::TimeDelta kLargeTtl = base::TimeDelta::FromSeconds(0x7331);
64 41
65 EXPECT_EQ(NULL, directive_list_->GetNextTransmit().get()); 42 directive_list_->AddDirective("op_id1", kTtl);
66 EXPECT_EQ(NULL, directive_list_->GetNextReceive().get()); 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);
67 47
68 directive_list_->AddTransmitDirective("token1", "op_id1", kZeroTtl); 48 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
69 directive_list_->AddTransmitDirective("token2", "op_id2", kLargeTtl); 49 directive_list_->RemoveDirective("op_id3");
70 directive_list_->AddTransmitDirective("token3", "op_id1", kLargeTtl); 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_EQ(NULL, directive_list_->GetActiveDirective().get());
57 }
71 58
72 // Should keep getting the directive till it expires or we add a newer one. 59 TEST_F(AudioDirectiveListTest, RemoveDirectiveMultiple) {
73 EXPECT_EQ("token3", directive_list_->GetNextTransmit()->token); 60 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999);
74 EXPECT_EQ("token3", directive_list_->GetNextTransmit()->token);
75 EXPECT_EQ("token3", directive_list_->GetNextTransmit()->token);
76 EXPECT_EQ(NULL, directive_list_->GetNextReceive().get());
77 61
78 directive_list_->AddReceiveDirective("op_id1", kLargeTtl); 62 directive_list_->AddDirective("op_id1", kTtl);
79 directive_list_->AddReceiveDirective("op_id3", kZeroTtl); 63 directive_list_->AddDirective("op_id2", kTtl * 2);
80 directive_list_->AddReceiveDirective("op_id3", kLargeTtl); 64 directive_list_->AddDirective("op_id3", kTtl * 3);
81 directive_list_->AddReceiveDirective("op_id7", kLargeTtl); 65 directive_list_->AddDirective("op_id4", kTtl * 4);
82 66
83 // Should keep getting the directive till it expires or we add a newer one. 67 EXPECT_EQ("op_id4", directive_list_->GetActiveDirective()->op_id);
84 EXPECT_EQ("op_id7", directive_list_->GetNextReceive()->op_id); 68 directive_list_->RemoveDirective("op_id4");
85 EXPECT_EQ("op_id7", directive_list_->GetNextReceive()->op_id); 69 EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id);
86 EXPECT_EQ("op_id7", directive_list_->GetNextReceive()->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_EQ(NULL, directive_list_->GetActiveDirective().get());
87 } 78 }
88 79
89 } // namespace copresence 80 } // namespace copresence
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698