public void GetAudioSourceConfigurationOptionsTest()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();

                Assert(profiles != null && profiles.Length > 0,
                       "DUT did not return any profile",
                       "Check if the DUT returned media profiles");

                AudioSourceConfiguration[] configurations = GetAudioSourceConfigurations();

                Assert(configurations != null && configurations.Length > 0,
                       "DUT did not return any configuration",
                       "Check if the DUT returned configurations");

                AudioSourceConfigurationOptions options =
                    GetAudioSourceConfigurationOptions(null, configurations[0].token,
                                                       string.Format("Get Audio source configuration options for configuration [token='{0}']", configurations[0].token));

                options = GetAudioSourceConfigurationOptions(profiles[0].token, null,
                                                             string.Format("Get Audio source configuration options for profile [token='{0}']", profiles[0].token));

                options = GetAudioSourceConfigurationOptions(profiles[0].token, configurations[0].token,
                                                             string.Format("Get Audio source configuration options for configuration [token='{0}'] and profile [token = '{1}']", configurations[0].token, profiles[0].token));

                options = GetAudioSourceConfigurationOptions(null, null, "Get Audio source configuration options (empty message)");
            });
        }
        private void show_btn_Click(object sender, RoutedEventArgs e)
        {
            AudioSourceConfigurationOptions audioOpt = media.GetAudioSourceConfigurationOptions(null, null);
            string configsStr = JsonConvert.SerializeObject(audioOpt, Formatting.Indented);

            io = new InfoOption(configsStr);
            io.Show();
        }
        public void ProfilesAudioSourceConfigurationAndConfigurationOptionsConsistencyTest()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();

                Assert(profiles != null,
                       "DUT did not return any profile",
                       "Check if the DUT returned media profiles");


                foreach (Profile profile in profiles)
                {
                    if (profile.AudioSourceConfiguration != null)
                    {
                        AudioSourceConfigurationOptions options =
                            GetAudioSourceConfigurationOptions(profile.token, profile.AudioSourceConfiguration.token);

                        Assert(options != null, "No configuration options received",
                               "Check that the DUT sent audio source configuration options");

                        Assert(options.InputTokensAvailable != null, "Input tokens available not specified", "Check that input tokens list is not empty");

                        // check that tokens are unique
                        List <string> duplicates = new List <string>();
                        List <string> tokens     = new List <string>();
                        foreach (string inputToken in options.InputTokensAvailable)
                        {
                            if (tokens.Contains(inputToken))
                            {
                                if (!duplicates.Contains(inputToken))
                                {
                                    duplicates.Add(inputToken);
                                }
                            }
                            else
                            {
                                tokens.Add(inputToken);
                            }
                        }

                        StringBuilder sb = new StringBuilder("The following input tokens in InputTokensAvailable are not unique: ");
                        bool first       = true;
                        foreach (string token in duplicates)
                        {
                            sb.Append(first ? token : string.Format(", {0}", token));
                            first = false;
                        }

                        Assert((duplicates.Count == 0), sb.ToString(), "Check that input tokens listed are unique");

                        Assert(options.InputTokensAvailable.Contains(profile.AudioSourceConfiguration.SourceToken),
                               string.Format("Source token specified ('{0}') not found in options", profile.AudioSourceConfiguration.SourceToken),
                               "Check that source token is presented in the list of available input tokens");
                    }
                }
            });
        }
        public void AudioSourceConfigurationAndConfigurationOptionsConsistencyTest()
        {
            RunTest(() =>
            {
                // Audio source configurations

                AudioSourceConfiguration[] configurations = GetAudioSourceConfigurations();

                Assert(configurations != null,
                       "DUT did not return any configuration",
                       "Check if the DUT returned configurations");

                foreach (AudioSourceConfiguration configuration in configurations)
                {
                    AudioSourceConfigurationOptions options = GetAudioSourceConfigurationOptions(null, configuration.token);

                    Assert(options != null,
                           "DUT did not return audio source configuration options",
                           "Check if the DUT returned audio source configuration options");

                    Assert(options.InputTokensAvailable != null && options.InputTokensAvailable.Length > 0,
                           "No InputTokensAvailable returned", "Check if the DUT returned available input tokens");

                    // check that tokens are unique
                    List <string> duplicates = new List <string>();
                    List <string> tokens     = new List <string>();
                    foreach (string inputToken in options.InputTokensAvailable)
                    {
                        if (tokens.Contains(inputToken))
                        {
                            if (!duplicates.Contains(inputToken))
                            {
                                duplicates.Add(inputToken);
                            }
                        }
                        else
                        {
                            tokens.Add(inputToken);
                        }
                    }

                    StringBuilder sb = new StringBuilder("The following input tokens in InputTokensAvailable are not unique: ");
                    bool first       = true;
                    foreach (string token in duplicates)
                    {
                        sb.Append(first ? token : string.Format(", {0}", token));
                        first = false;
                    }

                    Assert((duplicates.Count == 0), sb.ToString(), "Check that input tokens listed are unique");


                    Assert(options.InputTokensAvailable.Contains(configuration.SourceToken),
                           string.Format("InputTokensAvailable does not contain '{0}'", configuration.SourceToken),
                           string.Format("Check that InputTokensAvailable contains SourceToken"));
                }
            });
        }
        public void AudioSourceConfiguration()
        {
            Profile profile = null;

            RunTest <Profile>(
                new Backup <Profile>(() => { return(null); }),
                () =>
            {
                profile = CreateProfile("testprofilex", null);
                string reason;
                Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);

                AudioSource[] sources = GetAudioSources();
                Assert(ValidateAudioSources(sources, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration[] configs = GetAudioSourceConfigurations();
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);

                AudioSourceConfigurationOptions options = GetAudioSourceConfigurationOptions(null, config.token);

                string sourceToken = config.SourceToken;
                config.SourceToken = "InvalidToken";
                //TODO make sure that token is invalid
                string details = string.Format("Setting invalid configuration (/AudioSourceConfiguration/SourceToken = '{0}')", config.SourceToken);
                SetInvalidAudioSourceConfiguration(config, false, details);

                config.SourceToken = sourceToken;
                SetAudioSourceConfiguration(config, false);

                AudioSourceConfiguration newConfig = GetAudioSourceConfiguration(config.token);
                Assert(EqualConfigurations(config, newConfig, out reason),
                       string.Format(Resources.ErrorAudioSourceConfigNotEqual_Format, reason),
                       Resources.StepCompareAudioSourceConfigs_Title);

                RemoveAudioSourceConfiguration(profile.token);
                DeleteProfile(profile.token);
                profile = null;
            },
                (param) =>
            {
                if (profile != null)
                {
                    DeleteProfile(profile.token);
                }
            });
        }
        public void AudioSourceConfiguration()
        {
            Profile deletedProfile  = null;
            Profile createdProfile  = null;
            Profile modifiedProfile = null;
            Profile profile         = null;

            RunTest(
                () =>
            {
                profile = CreateProfileByAnnex3("testprofileX", null, out deletedProfile, out createdProfile, out modifiedProfile);
                string reason;
                Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);

                AudioSource[] sources = GetAudioSources();
                Assert(ValidateAudioSources(sources, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration[] configs = GetAudioSourceConfigurations();
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);

                AudioSourceConfigurationOptions options = GetAudioSourceConfigurationOptions(null, config.token);

                string sourceToken = config.SourceToken;
                config.SourceToken = "InvalidToken";
                //TODO make sure that token is invalid
                string details = string.Format("Setting invalid configuration (/AudioSourceConfiguration/SourceToken = '{0}')", config.SourceToken);
                SetInvalidAudioSourceConfiguration(config, false, details);

                config.SourceToken = sourceToken;
                SetAudioSourceConfiguration(config, false);

                AudioSourceConfiguration newConfig = GetAudioSourceConfiguration(config.token);
                Assert(EqualConfigurations(config, newConfig, out reason),
                       string.Format(Resources.ErrorAudioSourceConfigNotEqual_Format, reason),
                       Resources.StepCompareAudioSourceConfigs_Title);

                RemoveAudioSourceConfiguration(profile.token);
            },
                () =>
            {
                RestoreProfileByAnnex3(deletedProfile, createdProfile, modifiedProfile);
            });
        }