15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/copresence/handlers/audio/audio_directive_list.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind_helpers.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/message_loop/message_loop.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace copresence { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class AudioDirectiveListTest : public testing::Test { 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) AudioDirectiveListTest() : directive_list_(new AudioDirectiveList()) {} 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~AudioDirectiveListTest() {} 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) protected: 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::MessageLoop message_loop_; 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<AudioDirectiveList> directive_list_; 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(AudioDirectiveListTest, Basic) { 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999); 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(NULL, directive_list_->GetActiveDirective().get()); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id1", kTtl); 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id2", kTtl * 3); 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id3", kTtl * 2); 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id2"); 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(AudioDirectiveListTest, AddDirectiveMultiple) { 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999); 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id1", kTtl); 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id2", kTtl * 2); 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id3", kTtl * 3 * 2); 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id3", kTtl * 3 * 3); 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id4", kTtl * 4); 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id); 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id3"); 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id4", directive_list_->GetActiveDirective()->op_id); 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id4"); 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id); 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id2"); 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id1", directive_list_->GetActiveDirective()->op_id); 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id1"); 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(NULL, directive_list_->GetActiveDirective().get()); 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(AudioDirectiveListTest, RemoveDirectiveMultiple) { 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::TimeDelta kTtl = base::TimeDelta::FromSeconds(9999); 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id1", kTtl); 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id2", kTtl * 2); 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id3", kTtl * 3); 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->AddDirective("op_id4", kTtl * 4); 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id4", directive_list_->GetActiveDirective()->op_id); 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id4"); 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id3", directive_list_->GetActiveDirective()->op_id); 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id3"); 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id3"); 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id3"); 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id2", directive_list_->GetActiveDirective()->op_id); 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id2"); 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ("op_id1", directive_list_->GetActiveDirective()->op_id); 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) directive_list_->RemoveDirective("op_id1"); 776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(NULL, directive_list_->GetActiveDirective().get()); 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace copresence 81