// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "media/audio/audio_streams_tracker.h" #include #include "testing/gtest/include/gtest/gtest.h" namespace media { TEST(AudioStreamsTrackerTest, IncreaseAndDecreaseOnce) { AudioStreamsTracker audio_streams_tracker; const size_t kNumberOfOperations = 5; // Increase count. for (size_t i = 1; i <= kNumberOfOperations; ++i) { audio_streams_tracker.IncreaseStreamCount(); EXPECT_EQ(i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(i, audio_streams_tracker.max_stream_count()); } // Reset and check max count. audio_streams_tracker.ResetMaxStreamCount(); EXPECT_EQ(kNumberOfOperations, audio_streams_tracker.max_stream_count()); // Decrease count. for (size_t i = 1; i <= kNumberOfOperations; ++i) { audio_streams_tracker.DecreaseStreamCount(); EXPECT_EQ(kNumberOfOperations - i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(kNumberOfOperations, audio_streams_tracker.max_stream_count()); } // Reset and check max count. audio_streams_tracker.ResetMaxStreamCount(); EXPECT_EQ(0u, audio_streams_tracker.max_stream_count()); } TEST(AudioStreamsTrackerTest, IncreaseAndDecreaseMultiple) { AudioStreamsTracker audio_streams_tracker; const size_t kNumberOfOperations = 5; // Increase 2N (N = kNumberOfOperations). for (size_t i = 1; i <= 2 * kNumberOfOperations; ++i) { audio_streams_tracker.IncreaseStreamCount(); EXPECT_EQ(i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(i, audio_streams_tracker.max_stream_count()); } // Decrease N. for (size_t i = 1; i <= kNumberOfOperations; ++i) { audio_streams_tracker.DecreaseStreamCount(); EXPECT_EQ(2 * kNumberOfOperations - i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(2 * kNumberOfOperations, audio_streams_tracker.max_stream_count()); } // Reset and check max count. audio_streams_tracker.ResetMaxStreamCount(); EXPECT_EQ(kNumberOfOperations, audio_streams_tracker.max_stream_count()); // Increase 2N. for (size_t i = 1; i <= 2 * kNumberOfOperations; ++i) { audio_streams_tracker.IncreaseStreamCount(); EXPECT_EQ(kNumberOfOperations + i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(kNumberOfOperations + i, audio_streams_tracker.max_stream_count()); } // Decrease N. for (size_t i = 1; i <= kNumberOfOperations; ++i) { audio_streams_tracker.DecreaseStreamCount(); EXPECT_EQ(3 * kNumberOfOperations - i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(3 * kNumberOfOperations, audio_streams_tracker.max_stream_count()); } // Reset and check max count. audio_streams_tracker.ResetMaxStreamCount(); EXPECT_EQ(2 * kNumberOfOperations, audio_streams_tracker.max_stream_count()); // Decrease 2N. for (size_t i = 1; i <= 2 * kNumberOfOperations; ++i) { audio_streams_tracker.DecreaseStreamCount(); EXPECT_EQ(2 * kNumberOfOperations - i, audio_streams_tracker.current_stream_count_); EXPECT_EQ(2 * kNumberOfOperations, audio_streams_tracker.max_stream_count()); } // Reset and check max count. audio_streams_tracker.ResetMaxStreamCount(); EXPECT_EQ(0u, audio_streams_tracker.max_stream_count()); } } // namespace media