blob: 5fcc6f9bbc2adf0c5200755435a003b99acb5c2f [file] [log] [blame]
/**
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <AudioConfig.h>
#include <CallQuality.h>
#include <gtest/gtest.h>
using namespace android::telephony::imsmedia;
const int32_t kDownlinkCallQualityLevel = 0;
const int32_t kUplinkCallQualityLevel = 0;
const int32_t kCallDuration = 30000;
const int32_t kNumRtpPacketsTransmitted = 30 * 50;
const int32_t kNumRtpPacketsReceived = 30 * 50;
const int32_t kNumRtpPacketsTransmittedLost = 1;
const int32_t kNumRtpPacketsNotReceived = 1;
const int32_t kAverageRelativeJitter = 1;
const int32_t kMaxRelativeJitter = 5;
const int32_t kAverageRoundTripTime = 100;
const int32_t kCodecType = AudioConfig::CODEC_AMR_WB;
const bool kRtpInactivityDetected = false;
const bool kRxSilenceDetected = false;
const bool kTxSilenceDetected = false;
const int32_t kNumVoiceFrames = 30 * 50;
const int32_t kNumNoDataFrames = 0;
const int32_t kNumDroppedRtpPackets = 0;
const int64_t kMinPlayoutDelayMillis = 100;
const int64_t kMaxPlayoutDelayMillis = 180;
const int32_t kNumRtpSidPacketsReceived = 10;
const int32_t kNumRtpDuplicatePackets = 1;
class CallQualityTest : public ::testing::Test
{
public:
CallQuality quality1;
CallQuality quality2;
CallQuality quality3;
protected:
virtual void SetUp() override
{
quality1.setDownlinkCallQualityLevel(kDownlinkCallQualityLevel);
quality1.setUplinkCallQualityLevel(kUplinkCallQualityLevel);
quality1.setCallDuration(kCallDuration);
quality1.setNumRtpPacketsTransmitted(kNumRtpPacketsTransmitted);
quality1.setNumRtpPacketsReceived(kNumRtpPacketsReceived);
quality1.setNumRtpPacketsTransmittedLost(kNumRtpPacketsTransmittedLost);
quality1.setNumRtpPacketsNotReceived(kNumRtpPacketsNotReceived);
quality1.setAverageRelativeJitter(kAverageRelativeJitter);
quality1.setMaxRelativeJitter(kMaxRelativeJitter);
quality1.setAverageRoundTripTime(kAverageRoundTripTime);
quality1.setCodecType(kCodecType);
quality1.setRtpInactivityDetected(kRtpInactivityDetected);
quality1.setRxSilenceDetected(kRxSilenceDetected);
quality1.setTxSilenceDetected(kTxSilenceDetected);
quality1.setNumVoiceFrames(kNumVoiceFrames);
quality1.setNumNoDataFrames(kNumNoDataFrames);
quality1.setNumDroppedRtpPackets(kNumDroppedRtpPackets);
quality1.setMinPlayoutDelayMillis(kMinPlayoutDelayMillis);
quality1.setMaxPlayoutDelayMillis(kMaxPlayoutDelayMillis);
quality1.setNumRtpSidPacketsReceived(kNumRtpSidPacketsReceived);
quality1.setNumRtpDuplicatePackets(kNumRtpDuplicatePackets);
}
virtual void TearDown() override {}
};
TEST_F(CallQualityTest, TestGetterSetter) {}
TEST_F(CallQualityTest, TestParcel)
{
android::Parcel parcel;
quality1.writeToParcel(&parcel);
parcel.setDataPosition(0);
CallQuality testQuality;
testQuality.readFromParcel(&parcel);
EXPECT_EQ(testQuality, quality1);
}
TEST_F(CallQualityTest, TestAssign)
{
CallQuality testQuality = quality1;
EXPECT_EQ(quality1, testQuality);
}
TEST_F(CallQualityTest, TestEqual)
{
quality2.setDownlinkCallQualityLevel(kDownlinkCallQualityLevel);
quality2.setUplinkCallQualityLevel(kUplinkCallQualityLevel);
quality2.setCallDuration(kCallDuration);
quality2.setNumRtpPacketsTransmitted(kNumRtpPacketsTransmitted);
quality2.setNumRtpPacketsReceived(kNumRtpPacketsReceived);
quality2.setNumRtpPacketsTransmittedLost(kNumRtpPacketsTransmittedLost);
quality2.setNumRtpPacketsNotReceived(kNumRtpPacketsNotReceived);
quality2.setAverageRelativeJitter(kAverageRelativeJitter);
quality2.setMaxRelativeJitter(kMaxRelativeJitter);
quality2.setAverageRoundTripTime(kAverageRoundTripTime);
quality2.setCodecType(kCodecType);
quality2.setRtpInactivityDetected(kRtpInactivityDetected);
quality2.setRxSilenceDetected(kRxSilenceDetected);
quality2.setTxSilenceDetected(kTxSilenceDetected);
quality2.setNumVoiceFrames(kNumVoiceFrames);
quality2.setNumNoDataFrames(kNumNoDataFrames);
quality2.setNumDroppedRtpPackets(kNumDroppedRtpPackets);
quality2.setMinPlayoutDelayMillis(kMinPlayoutDelayMillis);
quality2.setMaxPlayoutDelayMillis(kMaxPlayoutDelayMillis);
quality2.setNumRtpSidPacketsReceived(kNumRtpSidPacketsReceived);
quality2.setNumRtpDuplicatePackets(kNumRtpDuplicatePackets);
EXPECT_EQ(quality2, quality1);
}
TEST_F(CallQualityTest, TestNotEqual)
{
quality2.setDownlinkCallQualityLevel(kDownlinkCallQualityLevel);
quality2.setUplinkCallQualityLevel(kUplinkCallQualityLevel);
quality2.setCallDuration(kCallDuration);
quality2.setNumRtpPacketsTransmitted(kNumRtpPacketsTransmitted);
quality2.setNumRtpPacketsReceived(kNumRtpPacketsReceived);
quality2.setNumRtpPacketsTransmittedLost(kNumRtpPacketsTransmittedLost);
quality2.setNumRtpPacketsNotReceived(kNumRtpPacketsNotReceived);
quality2.setAverageRelativeJitter(5);
quality2.setMaxRelativeJitter(kMaxRelativeJitter);
quality2.setAverageRoundTripTime(kAverageRoundTripTime);
quality2.setCodecType(kCodecType);
quality2.setRtpInactivityDetected(kRtpInactivityDetected);
quality2.setRxSilenceDetected(kRxSilenceDetected);
quality2.setTxSilenceDetected(kTxSilenceDetected);
quality2.setNumVoiceFrames(kNumVoiceFrames);
quality2.setNumNoDataFrames(kNumNoDataFrames);
quality2.setNumDroppedRtpPackets(kNumDroppedRtpPackets);
quality2.setMinPlayoutDelayMillis(kMinPlayoutDelayMillis);
quality2.setMaxPlayoutDelayMillis(kMaxPlayoutDelayMillis);
quality2.setNumRtpSidPacketsReceived(kNumRtpSidPacketsReceived);
quality2.setNumRtpDuplicatePackets(kNumRtpDuplicatePackets);
EXPECT_NE(quality2, quality1);
quality3.setDownlinkCallQualityLevel(kDownlinkCallQualityLevel);
quality3.setUplinkCallQualityLevel(kUplinkCallQualityLevel);
quality3.setCallDuration(kCallDuration);
quality3.setNumRtpPacketsTransmitted(kNumRtpPacketsTransmitted);
quality3.setNumRtpPacketsReceived(kNumRtpPacketsReceived);
quality3.setNumRtpPacketsTransmittedLost(kNumRtpPacketsTransmittedLost);
quality3.setNumRtpPacketsNotReceived(kNumRtpPacketsNotReceived);
quality3.setAverageRelativeJitter(kAverageRelativeJitter);
quality3.setMaxRelativeJitter(kMaxRelativeJitter);
quality3.setAverageRoundTripTime(kAverageRoundTripTime);
quality3.setCodecType(AudioConfig::CODEC_AMR);
quality3.setRtpInactivityDetected(kRtpInactivityDetected);
quality3.setRxSilenceDetected(kRxSilenceDetected);
quality3.setTxSilenceDetected(kTxSilenceDetected);
quality3.setNumVoiceFrames(kNumVoiceFrames);
quality3.setNumNoDataFrames(kNumNoDataFrames);
quality3.setNumDroppedRtpPackets(kNumDroppedRtpPackets);
quality3.setMinPlayoutDelayMillis(kMinPlayoutDelayMillis);
quality3.setMaxPlayoutDelayMillis(kMaxPlayoutDelayMillis);
quality3.setNumRtpSidPacketsReceived(kNumRtpSidPacketsReceived);
quality3.setNumRtpDuplicatePackets(kNumRtpDuplicatePackets);
EXPECT_NE(quality3, quality1);
}