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

Unified Diff: remoting/host/audio_volume_applier_unittest.cc

Issue 2840773004: [Chromoting] Add AudioVolumeApplier to reduce the complexity and the dependency of kChannels (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: remoting/host/audio_volume_applier_unittest.cc
diff --git a/remoting/host/audio_volume_applier_unittest.cc b/remoting/host/audio_volume_applier_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3d8bbcb85b094512a055bfddfc09e8d3abca0742
--- /dev/null
+++ b/remoting/host/audio_volume_applier_unittest.cc
@@ -0,0 +1,79 @@
+// Copyright 2017 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 "remoting/host/audio_volume_applier.h"
+
+#include "base/macros.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace remoting {
+
+namespace {
+
+class FakeAudioVolumeApplier : public AudioVolumeApplier {
+ public:
+ FakeAudioVolumeApplier(int silence_threshold)
+ : AudioVolumeApplier(silence_threshold) {}
+ ~FakeAudioVolumeApplier() override = default;
+
+ void set_audio_level(float level) { level_ = level; }
+
+ protected:
+ float GetAudioLevel() override { return level_; }
+
+ private:
+ float level_ = 0;
+};
+
+} // namespace
+
+TEST(AudioVolumeApplierTest, TwoChannels) {
+ int16_t samples[] =
+ {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10};
+ FakeAudioVolumeApplier applier(0);
+ applier.set_audio_level(0.5f);
+ applier.Initialize(9, 2);
+ // After applying the audio volume, the |samples| should still pass the
+ // AudioSilenceDetector, AudioVolumeApplier::Apply() returns true under this
+ // condition. Ditto.
+ ASSERT_TRUE(applier.Apply(samples, arraysize(samples) / 2));
+}
+
+TEST(AudioVolumeApplierTest, ThreeChannels) {
+ int16_t samples[] =
+ {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11};
+ FakeAudioVolumeApplier applier(0);
+ applier.set_audio_level(0.5f);
+ applier.Initialize(6, 3);
+ ASSERT_TRUE(applier.Apply(samples, arraysize(samples) / 3));
+}
+
+TEST(AudioVolumeApplierTest, SilentSamples) {
+ int16_t samples[] =
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ FakeAudioVolumeApplier applier(0);
+ applier.set_audio_level(0.5f);
+ applier.Initialize(9, 2);
+ ASSERT_FALSE(applier.Apply(samples, arraysize(samples) / 2));
+}
+
+TEST(AudioVolumeApplierTest, AudioLevel0) {
+ int16_t samples[] =
+ {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10};
+ FakeAudioVolumeApplier applier(0);
+ applier.set_audio_level(0);
+ applier.Initialize(9, 2);
+ ASSERT_FALSE(applier.Apply(samples, arraysize(samples) / 2));
+}
+
+TEST(AudioVolumeApplierTest, SilcentAfterApplying) {
+ int16_t samples[] =
+ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+ FakeAudioVolumeApplier applier(0);
+ applier.set_audio_level(0.9f);
+ applier.Initialize(9, 2);
+ ASSERT_FALSE(applier.Apply(samples, arraysize(samples) / 2));
+}
+
+} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698