public int ReadChoice(string caption, string message, IList <ChoiceItem> choices, int defaultChoice) { if (string.IsNullOrEmpty(caption)) { caption = ResourceStrings.PromptForChoice_DefaultCaption; } if (message == null) { message = string.Empty; } if (choices == null) { throw new ArgumentNullException("choices"); } if (!choices.Any()) { throw new ArgumentException(string.Format(ResourceStrings.ChoicesCollectionShouldHaveAtLeastOneElement, "choices"), "choices"); } foreach (var c in choices) { if (c == null) { throw new ArgumentNullException("choices"); } } if (defaultChoice < -1 || defaultChoice >= choices.Count) { throw new ArgumentOutOfRangeException("defaultChoice"); } int choice = -1; ThreadHelper.Generic.Invoke(() => { ReadHostPromptForChoicesViewModel viewModel = new ReadHostPromptForChoicesViewModel(caption, message, choices, defaultChoice); ReadHostPromptForChoicesView dialog = new ReadHostPromptForChoicesView(viewModel); NativeMethods.SetForegroundWindow(); var ret = dialog.ShowModal(); if (ret == true) { choice = viewModel.UserChoice; } }); return(choice); }
public void ShouldInitializeViewModelCorrectly() { ReadHostPromptForChoicesViewModel viewModel = new ReadHostPromptForChoicesViewModel( "Caption", "Message", new ChoiceItem[] { new ChoiceItem("Label_Apple", "This is an Apple"), new ChoiceItem("Label_Banana", "This is a banana"), new ChoiceItem("Label_Orange", "This is an orange") }, 1); Assert.AreEqual <string>("Caption", viewModel.Caption); Assert.AreEqual <string>("Message", viewModel.Message); Assert.AreEqual <bool>(false, viewModel.Choices[0].IsDefault); Assert.AreEqual <bool>(true, viewModel.Choices[1].IsDefault); Assert.AreEqual <bool>(false, viewModel.Choices[2].IsDefault); }
public void ShouldExecuteCommandCorrectly() { ReadHostPromptForChoicesViewModel viewModel = new ReadHostPromptForChoicesViewModel( "Caption", "Message", new ChoiceItem[] { new ChoiceItem("Label_Apple", "This is an Apple"), new ChoiceItem("Label_Banana", "This is a banana"), new ChoiceItem("Label_Orange", "This is an orange") }, 1); Assert.AreEqual <bool>(false, viewModel.Choices[0].IsDefault); Assert.AreEqual <bool>(true, viewModel.Choices[1].IsDefault); Assert.AreEqual <bool>(false, viewModel.Choices[2].IsDefault); viewModel.Command.Execute("Label_Orange"); Assert.AreEqual <int>(2, viewModel.UserChoice); }