private static bool?ShowParameterEditor(ParamBlockAst paramBlockAst, out string scriptArgs)
        {
            scriptArgs = String.Empty;
            var model     = PowerShellParseUtilities.ParseParameters(paramBlockAst);
            var viewModel = new ParameterEditorViewModel(model);
            var view      = new ParameterEditorView(viewModel);

            bool?wasOkClicked = view.ShowModal();

            if (wasOkClicked != true)
            {
                return(wasOkClicked);
            }

            scriptArgs = GenerateScripArgsFromModel(model);
            return(wasOkClicked);
        }
        public void ShouldParseParametersCorrectly()
        {
            ParamBlockAst paramBlock = GenerateParamBlockAst(scriptWithParameters);
            var           model      = PowerShellParseUtilities.ParseParameters(paramBlock);

            var expectedModel = new ParameterEditorModel(
                new ObservableCollection <ScriptParameterViewModel>()
            {
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "StringType",
                    Type         = DataTypeConstants.StringType,
                    DefaultValue = null
                }),
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "CharType",
                    Type         = DataTypeConstants.CharType,
                    DefaultValue = null
                }),
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "ByteType",
                    Type         = DataTypeConstants.ByteType,
                    DefaultValue = null
                }),
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "IntType",
                    Type         = DataTypeConstants.Int32Type,
                    DefaultValue = null
                })
            },

                PowerShellParseUtilities.GenerateCommonParameters());

            Assert.AreEqual <bool>(true, CompareParameterEditorModels(expectedModel, model));
        }
        public void ShouldParseParameterSetNamesCorrectly()
        {
            ParamBlockAst paramBlock = GenerateParamBlockAst(scriptWithParameterSets);
            var           model      = PowerShellParseUtilities.ParseParameters(paramBlock);

            var expectedModel = new ParameterEditorModel(
                new ObservableCollection <ScriptParameterViewModel>()
            {
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "StringType",
                    Type         = DataTypeConstants.StringType,
                    DefaultValue = null
                }),
                new ScriptParameterViewModel(new ScriptParameter()
                {
                    Name         = "CharType",
                    Type         = DataTypeConstants.CharType,
                    DefaultValue = "c"
                })
            },

                PowerShellParseUtilities.GenerateCommonParameters(),

                new Dictionary <string, IList <ScriptParameterViewModel> >()
            {
                { "Set1", new List <ScriptParameterViewModel>()
                  {
                      new ScriptParameterViewModel(new ScriptParameter()
                        {
                            Name             = "LongType",
                            Type             = DataTypeConstants.Int64Type,
                            DefaultValue     = 100000,
                            ParameterSetName = "Set1"
                        }),
                      new ScriptParameterViewModel(new ScriptParameter()
                        {
                            Name             = "BoolType",
                            Type             = DataTypeConstants.BoolType,
                            DefaultValue     = null,
                            ParameterSetName = "Set1"
                        })
                  } },

                { "Set2", new List <ScriptParameterViewModel>()
                  {
                      new ScriptParameterViewModel(new ScriptParameter()
                        {
                            Name             = "SwitchType",
                            Type             = DataTypeConstants.SwitchType,
                            ParameterSetName = "Set2",
                        }),
                      new ScriptParameterViewModel(new ScriptParameter()
                        {
                            Name             = "DecimalType",
                            Type             = DataTypeConstants.DecimalType,
                            ParameterSetName = "Set2"
                        })
                  } }
            },

                new List <string>()
            {
                "Set1", "Set2"
            },

                "Set1");

            Assert.AreEqual <bool>(true, CompareParameterEditorModels(expectedModel, model));
        }