public static int SetUpDefaultRemoteAppStartMenu(Mock <IRemoteAppManagementClient> clientMock, string collectionName)
        {
            ISetup <IRemoteAppManagementClient, Task <GetStartMenuApplicationListResult> > setup = null;

            GetStartMenuApplicationListResult response = new GetStartMenuApplicationListResult()
            {
                RequestId  = "122-13342",
                StatusCode = System.Net.HttpStatusCode.OK
            };

            response.ResultList = new List <StartMenuApplication>()
            {
                new StartMenuApplication()
                {
                    Name                 = "Mohoro RemoteApp1",
                    StartMenuAppId       = "1",
                    VirtualPath          = @"C:\Application\RemoteApp1.exe",
                    CommandLineArguments = "Arg1, Arg2, Arg3",
                    IconUri              = @"C:\Application\RemoteApp1.exe",
                },
                new StartMenuApplication()
                {
                    Name                 = "Mohoro RemoteApp2",
                    StartMenuAppId       = "2",
                    VirtualPath          = @"C:\Application\RemoteApp2.exe",
                    CommandLineArguments = "1, 86, 42",
                    IconUri              = @"C:\Application\RemoteApp2.exe",
                }
            };

            mockStartMenuList = new List <StartMenuApplication>();
            foreach (StartMenuApplication app in response.ResultList)
            {
                StartMenuApplication mockApp = new StartMenuApplication()
                {
                    Name                 = app.Name,
                    StartMenuAppId       = app.StartMenuAppId,
                    VirtualPath          = app.VirtualPath,
                    CommandLineArguments = app.CommandLineArguments,
                    IconUri              = app.IconUri
                };
                mockStartMenuList.Add(mockApp);
            }

            setup = clientMock.Setup(c => c.Publishing.StartMenuApplicationListAsync(collectionName, It.IsAny <CancellationToken>()));
            setup.Returns(Task.Factory.StartNew(() => response));

            return(mockStartMenuList.Count);
        }
        public static bool ContainsExpectedStartMenu(List <StartMenuApplication> expectedResult, StartMenuApplication actual)
        {
            bool isIdentical = false;

            foreach (StartMenuApplication expected in expectedResult)
            {
                isIdentical  = expected.Name == actual.Name;
                isIdentical &= expected.StartMenuAppId == actual.StartMenuAppId;
                isIdentical &= expected.VirtualPath == actual.VirtualPath;
                isIdentical &= expected.CommandLineArguments == actual.CommandLineArguments;
                isIdentical &= expected.IconUri == actual.IconUri;

                if (isIdentical)
                {
                    break;
                }
            }

            return(isIdentical);
        }
        public override void ExecuteCmdlet()
        {
            GetStartMenuApplicationListResult result = null;
            bool getAllPrograms = false;
            bool found          = false;

            if (String.IsNullOrWhiteSpace(ProgramName))
            {
                getAllPrograms = true;
            }
            else
            {
                CreateWildcardPattern(ProgramName);
            }

            result = CallClient(() => Client.Publishing.StartMenuApplicationList(CollectionName), Client.Publishing);
            if (result != null && result.ResultList != null)
            {
                if (ExactMatch)
                {
                    StartMenuApplication application = null;
                    application = result.ResultList.FirstOrDefault(app => String.Equals(app.Name, ProgramName, StringComparison.InvariantCultureIgnoreCase));

                    if (application == null)
                    {
                        WriteErrorWithTimestamp("Program: " + ProgramName + " does not exist in collection " + CollectionName);
                        found = false;
                    }
                    else
                    {
                        WriteObject(application);
                        found = true;
                    }
                }
                else
                {
                    IEnumerable <StartMenuApplication> matchingApps = null;
                    if (getAllPrograms)
                    {
                        matchingApps = result.ResultList;
                    }
                    else if (UseWildcard)
                    {
                        matchingApps = result.ResultList.Where(app => Wildcard.IsMatch(app.Name));
                    }

                    if (matchingApps != null && matchingApps.Count() > 0)
                    {
                        List <StartMenuApplication>      applications = new List <StartMenuApplication>(matchingApps);
                        IComparer <StartMenuApplication> comparer     = new ApplicationComparer();
                        applications.Sort(comparer);
                        WriteObject(applications, true);
                        found = true;
                    }
                }
            }

            if (!found && !getAllPrograms)
            {
                WriteVerboseWithTimestamp(String.Format("Program '{0}' was not found in Collection '{1}'.", ProgramName, CollectionName));
            }
        }