Add node volume
This commit is contained in:
parent
fa67dd3708
commit
e649dea9c1
3 changed files with 157 additions and 0 deletions
|
|
@ -4,6 +4,7 @@
|
|||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
#include <catch2/catch_approx.hpp>
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
namespace {
|
||||
|
|
@ -792,3 +793,63 @@ TEST_CASE("policy mode does not override user defaults") {
|
|||
REQUIRE(defaults2.value.configured_sink_name == defaults.value.configured_sink_name);
|
||||
REQUIRE(defaults2.value.configured_source_name == defaults.value.configured_source_name);
|
||||
}
|
||||
|
||||
TEST_CASE("Test_SetNodeVolume sets and retrieves volume state") {
|
||||
auto result = warppipe::Client::Create(DefaultOptions());
|
||||
REQUIRE(result.ok());
|
||||
auto &client = result.value;
|
||||
|
||||
warppipe::NodeInfo node;
|
||||
node.id = warppipe::NodeId{900};
|
||||
node.name = "vol-sink";
|
||||
node.media_class = "Audio/Sink";
|
||||
REQUIRE(client->Test_InsertNode(node).ok());
|
||||
|
||||
auto vol = client->Test_GetNodeVolume(warppipe::NodeId{900});
|
||||
REQUIRE(vol.ok());
|
||||
REQUIRE(vol.value.volume == Catch::Approx(1.0f));
|
||||
REQUIRE(vol.value.mute == false);
|
||||
|
||||
REQUIRE(client->Test_SetNodeVolume(warppipe::NodeId{900}, 0.5f, false).ok());
|
||||
vol = client->Test_GetNodeVolume(warppipe::NodeId{900});
|
||||
REQUIRE(vol.ok());
|
||||
REQUIRE(vol.value.volume == Catch::Approx(0.5f));
|
||||
REQUIRE(vol.value.mute == false);
|
||||
|
||||
REQUIRE(client->Test_SetNodeVolume(warppipe::NodeId{900}, 0.75f, true).ok());
|
||||
vol = client->Test_GetNodeVolume(warppipe::NodeId{900});
|
||||
REQUIRE(vol.ok());
|
||||
REQUIRE(vol.value.volume == Catch::Approx(0.75f));
|
||||
REQUIRE(vol.value.mute == true);
|
||||
}
|
||||
|
||||
TEST_CASE("Test_SetNodeVolume clamps volume") {
|
||||
auto result = warppipe::Client::Create(DefaultOptions());
|
||||
REQUIRE(result.ok());
|
||||
auto &client = result.value;
|
||||
|
||||
warppipe::NodeInfo node;
|
||||
node.id = warppipe::NodeId{901};
|
||||
node.name = "vol-clamp";
|
||||
node.media_class = "Audio/Sink";
|
||||
REQUIRE(client->Test_InsertNode(node).ok());
|
||||
|
||||
REQUIRE(client->Test_SetNodeVolume(warppipe::NodeId{901}, 2.0f, false).ok());
|
||||
auto vol = client->Test_GetNodeVolume(warppipe::NodeId{901});
|
||||
REQUIRE(vol.ok());
|
||||
REQUIRE(vol.value.volume == Catch::Approx(1.5f));
|
||||
|
||||
REQUIRE(client->Test_SetNodeVolume(warppipe::NodeId{901}, -1.0f, false).ok());
|
||||
vol = client->Test_GetNodeVolume(warppipe::NodeId{901});
|
||||
REQUIRE(vol.ok());
|
||||
REQUIRE(vol.value.volume == Catch::Approx(0.0f));
|
||||
}
|
||||
|
||||
TEST_CASE("Test_SetNodeVolume fails for nonexistent node") {
|
||||
auto result = warppipe::Client::Create(DefaultOptions());
|
||||
REQUIRE(result.ok());
|
||||
|
||||
auto status = result.value->Test_SetNodeVolume(warppipe::NodeId{999}, 0.5f, false);
|
||||
REQUIRE_FALSE(status.ok());
|
||||
REQUIRE(status.code == warppipe::StatusCode::kNotFound);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue