Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13a6753e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add step and cancel tests for default bcradio HAL" into main

parents d8c14434 ed2d124e
Loading
Loading
Loading
Loading
+102 −0
Original line number Diff line number Diff line
@@ -117,6 +117,21 @@ class DefaultBroadcastRadioHalTest : public testing::Test {
        }
    }

    bool getAmFmBandRange(utils::FrequencyBand band, AmFmBandRange* res) {
        AmFmRegionConfig config;
        auto halResult = mBroadcastRadioHal->getAmFmRegionConfig(/* full= */ false, &config);
        if (!halResult.isOk()) {
            return false;
        }
        for (const auto& range : config.ranges) {
            if (utils::getBand(range.lowerBound) == band) {
                *res = range;
                return true;
            }
        }
        return false;
    }

    std::shared_ptr<BroadcastRadio> mBroadcastRadioHal;
    std::shared_ptr<MockBroadcastRadioCallback> mTunerCallback;
};
@@ -246,4 +261,91 @@ TEST_F(DefaultBroadcastRadioHalTest, TuneWithoutTunerCallback) {
    ASSERT_EQ(halResult.getServiceSpecificError(), utils::resultToInt(Result::INVALID_STATE));
}

TEST_F(DefaultBroadcastRadioHalTest, StepUp) {
    AmFmBandRange fmRange;
    ASSERT_TRUE(getAmFmBandRange(utils::FrequencyBand::FM, &fmRange));
    ProgramSelector nextChannelSel =
            utils::makeSelectorAmfm(kFmSel1.primaryId.value + fmRange.spacing);
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(kFmSel1).isOk());
    verifyUpdatedProgramInfo(kFmSel1);

    auto halResult = mBroadcastRadioHal->step(/* in_directionUp= */ true);

    ASSERT_TRUE(halResult.isOk());
    verifyUpdatedProgramInfo(nextChannelSel);
}

TEST_F(DefaultBroadcastRadioHalTest, StepUpFromUpperBound) {
    AmFmBandRange fmRange;
    ASSERT_TRUE(getAmFmBandRange(utils::FrequencyBand::FM, &fmRange));
    ProgramSelector upperBoundSel = utils::makeSelectorAmfm(fmRange.upperBound);
    ProgramSelector lowerBoundSel = utils::makeSelectorAmfm(fmRange.lowerBound);
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(upperBoundSel).isOk());
    verifyUpdatedProgramInfo(upperBoundSel);

    auto halResult = mBroadcastRadioHal->step(/* in_directionUp= */ true);

    ASSERT_TRUE(halResult.isOk());
    verifyUpdatedProgramInfo(lowerBoundSel);
}

TEST_F(DefaultBroadcastRadioHalTest, StepDown) {
    AmFmBandRange fmRange;
    ASSERT_TRUE(getAmFmBandRange(utils::FrequencyBand::FM, &fmRange));
    ProgramSelector nextChannelSel =
            utils::makeSelectorAmfm(kFmSel1.primaryId.value - fmRange.spacing);
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(kFmSel1).isOk());
    verifyUpdatedProgramInfo(kFmSel1);

    auto halResult = mBroadcastRadioHal->step(/* directionUp= */ false);

    ASSERT_TRUE(halResult.isOk());
    verifyUpdatedProgramInfo(nextChannelSel);
}

TEST_F(DefaultBroadcastRadioHalTest, StepDownFromLowerBound) {
    AmFmBandRange fmRange;
    ASSERT_TRUE(getAmFmBandRange(utils::FrequencyBand::FM, &fmRange));
    ProgramSelector upperBoundSel = utils::makeSelectorAmfm(fmRange.upperBound);
    ProgramSelector lowerBoundSel = utils::makeSelectorAmfm(fmRange.lowerBound);
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(lowerBoundSel).isOk());
    verifyUpdatedProgramInfo(lowerBoundSel);

    auto halResult = mBroadcastRadioHal->step(/* directionUp= */ false);

    ASSERT_TRUE(halResult.isOk());
    verifyUpdatedProgramInfo(upperBoundSel);
}

TEST_F(DefaultBroadcastRadioHalTest, StepWithoutTunerCallback) {
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(kFmSel1).isOk());
    verifyUpdatedProgramInfo(kFmSel1);
    mBroadcastRadioHal->unsetTunerCallback();

    auto halResult = mBroadcastRadioHal->step(/* directionUp= */ false);

    ASSERT_EQ(halResult.getServiceSpecificError(), utils::resultToInt(Result::INVALID_STATE));
}

TEST_F(DefaultBroadcastRadioHalTest, Cancel) {
    ASSERT_TRUE(mBroadcastRadioHal->setTunerCallback(mTunerCallback).isOk());
    mTunerCallback->reset();
    ASSERT_TRUE(mBroadcastRadioHal->tune(kFmSel1).isOk());

    auto halResult = mBroadcastRadioHal->cancel();

    ASSERT_TRUE(halResult.isOk());
    mTunerCallback->reset();
}

}  // namespace aidl::android::hardware::broadcastradio