Browse Source

Cover radio panel shutdown and microphone recovery states

master
evgeny 2 days ago
parent
commit
33f276a69e
  1. 22
      tools/chatgui/tests/test_radio_panel.cpp

22
tools/chatgui/tests/test_radio_panel.cpp

@ -26,6 +26,7 @@ extern "C" {
static UTUN_INSTANCE instance{};
static std::atomic<float> probability{0};
static bool detectorAvailable = true;
static bool failCapture;
static int begins, ends, packets, inputs, outputs;
extern "C" UTUN_INSTANCE* gui_bridge_get_inst() { return &instance; }
@ -46,6 +47,7 @@ extern "C" ma_result __wrap_ma_context_init(const ma_backend*, ma_uint32, const
}
extern "C" ma_result __wrap_ma_device_start(ma_device* device) {
if (device->type == ma_device_type_capture) ++inputs; else ++outputs;
if (failCapture && device->type == ma_device_type_capture) return MA_ERROR;
return __real_ma_device_start(device);
}
@ -163,6 +165,19 @@ int main(int argc, char** argv) {
await([&]() { return engine->vadAvailable(); });
REQUIRE(engine->groupId() == 8 && vad->isChecked());
engine->stop();
failCapture = true;
REQUIRE(engine->start(9) == 0);
REQUIRE(!engine->captureAvailable() && vad->isEnabled() && !ptt->isEnabled());
vad->click();
await([&]() { return !engine->settingsBusy() && !engine->vadEnabled(); });
REQUIRE(!engine->captureAvailable());
failCapture = false;
await([&]() { return engine->captureAvailable(); });
vad->click();
await([&]() { return !engine->settingsBusy() && engine->vadAvailable(); });
REQUIRE(vad->isChecked() && ptt->isEnabled());
qInfo("radio panel: unavailable microphone permits VAD settings; capture recovery restores controls PASS");
engine->stop();
engine->loadSettings(directory.filePath("missing.cfg"));
await([&]() { return !engine->settingsBusy(); });
REQUIRE(!engine->applySettings({{"radio_vad_enabled", 0}}) && engine->vadEnabled() && !engine->settingsError().isEmpty());
@ -170,7 +185,12 @@ int main(int argc, char** argv) {
REQUIRE(QMetaObject::invokeMethod(button->menu(), "aboutToShow", Qt::DirectConnection));
REQUIRE(!button->menu()->actions().isEmpty());
}
panel.grab().save("/tmp/desktop-radio-panel.png");
engine->loadSettings(configPath);
await([&]() { return !engine->settingsBusy(); });
REQUIRE(engine->start(10) == 0 && engine->vadAvailable());
pump(100);
REQUIRE(panel.grab().save("/tmp/desktop-radio-panel.png"));
engine->stop();
radio_audio_destroy(&instance);
uasync_destroy(instance.ua, 0);
instance.ua = nullptr;

Loading…
Cancel
Save