| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_MEDIA_AUDIO_AUDIO_CORE_POLICY_LOADER_UNITTEST_DATA_H_ |
| #define SRC_MEDIA_AUDIO_AUDIO_CORE_POLICY_LOADER_UNITTEST_DATA_H_ |
| |
| #include <fuchsia/media/cpp/fidl.h> |
| #include <lib/fidl/cpp/enum.h> |
| |
| namespace media::audio::test { |
| // Examples of invalid configs. |
| |
| // This config is missing 'audio_policy_rules' |
| constexpr char no_rules[] = R"JSON({"useless_key": 1.0})JSON"; |
| |
| constexpr char rules_not_array[] = R"JSON({"audio_policy_rules": 1.0})JSON"; |
| |
| constexpr char rules_array_not_rules[] = R"JSON({"audio_policy_rules": [ 1.0 ]})JSON"; |
| |
| constexpr char no_active[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "DUCK" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char no_affected[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "behavior": "DUCK" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char no_behavior[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "affected": {"render_usage":"MEDIA"} |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char invalid_renderusage[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"INVALID"}, |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "DUCK" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char invalid_captureusage[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "affected": {"capture_usage":"INVALID"}, |
| "behavior": "DUCK" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char invalid_behavior[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "INVALID" |
| } |
| ] |
| } |
| )JSON"; |
| |
| // Examples of valid configs. |
| // A config with no rules specified is valid. |
| constexpr char empty_rules_json[] = R"JSON({"audio_policy_rules": []})JSON"; |
| |
| // Make sure we don't error out if the json contains keys we don't care about. |
| constexpr char ignored_key[] = R"JSON({"useless_key": 1.0, "audio_policy_rules": []})JSON"; |
| |
| constexpr char render_render[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "NONE" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char render_capture[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"MEDIA"}, |
| "affected": {"capture_usage":"BACKGROUND"}, |
| "behavior": "NONE" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char capture_render[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"capture_usage":"BACKGROUND"}, |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "NONE" |
| } |
| ] |
| } |
| )JSON"; |
| |
| constexpr char capture_capture[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"capture_usage":"BACKGROUND"}, |
| "affected": {"capture_usage":"BACKGROUND"}, |
| "behavior": "NONE" |
| } |
| ] |
| } |
| )JSON"; |
| |
| // Some static asserts that document the values we used to generate the JSON blob below with. If |
| // these fail we'll want to update the corresponding test data. |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioRenderUsage::BACKGROUND) == 0); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioRenderUsage::MEDIA) == 1); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioRenderUsage::INTERRUPTION) == 2); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioRenderUsage::SYSTEM_AGENT) == 3); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioRenderUsage::COMMUNICATION) == 4); |
| static_assert(fuchsia::media::RENDER_USAGE_COUNT == 5); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioCaptureUsage::BACKGROUND) == 0); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioCaptureUsage::FOREGROUND) == 1); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioCaptureUsage::SYSTEM_AGENT) == 2); |
| static_assert(fidl::ToUnderlying(fuchsia::media::AudioCaptureUsage::COMMUNICATION) == 3); |
| static_assert(fuchsia::media::CAPTURE_USAGE_COUNT == 4); |
| static_assert(fidl::ToUnderlying(fuchsia::media::Behavior::NONE) == 0); |
| static_assert(fidl::ToUnderlying(fuchsia::media::Behavior::DUCK) == 1); |
| static_assert(fidl::ToUnderlying(fuchsia::media::Behavior::MUTE) == 2); |
| |
| constexpr char contains_all_usages_and_behaviors[] = R"JSON( |
| { |
| "audio_policy_rules": [ |
| { |
| "active": {"render_usage":"BACKGROUND"}, |
| "affected": {"render_usage":"MEDIA"}, |
| "behavior": "DUCK" |
| }, |
| { |
| "active": {"render_usage":"INTERRUPTION"}, |
| "affected": {"render_usage":"SYSTEM_AGENT"}, |
| "behavior": "MUTE" |
| }, |
| { |
| "active": {"render_usage":"COMMUNICATION"}, |
| "affected": {"capture_usage":"BACKGROUND"}, |
| "behavior": "NONE" |
| }, |
| { |
| "active": {"capture_usage":"FOREGROUND"}, |
| "affected": {"capture_usage":"SYSTEM_AGENT"}, |
| "behavior": "DUCK" |
| }, |
| { |
| "active": {"capture_usage":"SYSTEM_AGENT"}, |
| "affected": {"capture_usage":"COMMUNICATION"}, |
| "behavior": "DUCK" |
| } |
| ] |
| } |
| )JSON"; |
| } // namespace media::audio::test |
| |
| #endif // SRC_MEDIA_AUDIO_AUDIO_CORE_POLICY_LOADER_UNITTEST_DATA_H_ |