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/gtest/include/gtest/gtest.h" 11 12namespace copresence { 13 14class AudioDirectiveListTest : public testing::Test { 15 public: 16 AudioDirectiveListTest() : directive_list_(new AudioDirectiveList()) {} 17 18 virtual ~AudioDirectiveListTest() {} 19 20 protected: 21 base::MessageLoop message_loop_; 22 scoped_ptr<AudioDirectiveList> directive_list_; 23}; 24 25TEST_F(AudioDirectiveListTest, Basic) { 26 const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999); 27 28 EXPECT_EQ(NULL, directive_list_->GetActiveDirective().get()); 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 39TEST_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_EQ(NULL, directive_list_->GetActiveDirective().get()); 57} 58 59TEST_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_EQ(NULL, directive_list_->GetActiveDirective().get()); 78} 79 80} // namespace copresence 81