public void TestFindHighestPrecedenceTemplateIfAllSameGroupIdentity_ReturnsNullIfGroupsAreDifferent() { List <IFilteredTemplateInfo> templatesToCheck = new List <IFilteredTemplateInfo>(); templatesToCheck.Add(new FilteredTemplateInfo( new TemplateInfo() { Precedence = 10, Name = "Template1", Identity = "Template1", GroupIdentity = "TestGroup" } , null)); templatesToCheck.Add(new FilteredTemplateInfo( new TemplateInfo() { Precedence = 20, Name = "Template2", Identity = "Template2", GroupIdentity = "RealGroup" } , null)); IFilteredTemplateInfo highestPrecedenceTemplate = TemplateListResolver.FindHighestPrecedenceTemplateIfAllSameGroupIdentity(templatesToCheck); Assert.Null(highestPrecedenceTemplate); }
public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { DTE dte = ServiceProvider.GlobalProvider.GetService(typeof(SDTE)) as DTE; if (dte == null) { throw new WizardCancelledException("Unable to get DTE"); } Bootstrapper bootstrapper = CreateBoostrapper(); if (!replacementsDictionary.TryGetValue("$WizardData$", out string wizardData)) { throw new WizardCancelledException("Wizard data not found: Expected a string containing the identity of the template to create"); } wizardData = wizardData.Trim(); IFilteredTemplateInfo match = bootstrapper.ListTemplates(true, x => { if (string.Equals(x.Identity, wizardData, StringComparison.OrdinalIgnoreCase)) { return(new MatchInfo { Kind = MatchKind.Exact, Location = MatchLocation.Name }); } return(null); }).FirstOrDefault(x => x.IsMatch); if (match == null) { throw new WizardCancelledException($"Wizard data malformed: no template found with identity {wizardData}"); } ITemplateInfo info = match.Info; // TODO: Determine where to get the baseline name from, as needed. baselineName is a placeholder so template engine builds. string baselineName = null; ICreationResult result = bootstrapper.CreateAsync(info, replacementsDictionary[""], replacementsDictionary[""], ExtractParametersFromReplacementsDictionary(replacementsDictionary), SkipUpdatesCheck, baselineName).Result; foreach (ICreationPath path in result.PrimaryOutputs) { dte.Solution.AddFromFile(path.Path); } }
public void TestFindHighestPrecedenceTemplateIfAllSameGroupIdentity() { List <IFilteredTemplateInfo> templatesToCheck = new List <IFilteredTemplateInfo>(); templatesToCheck.Add(new FilteredTemplateInfo( new TemplateInfo() { Precedence = 10, Name = "Template1", Identity = "Template1", GroupIdentity = "TestGroup" } , null)); templatesToCheck.Add(new FilteredTemplateInfo( new TemplateInfo() { Precedence = 20, Name = "Template2", Identity = "Template2", GroupIdentity = "TestGroup" } , null)); templatesToCheck.Add(new FilteredTemplateInfo( new TemplateInfo() { Precedence = 0, Name = "Template3", Identity = "Template3", GroupIdentity = "TestGroup" } , null)); IFilteredTemplateInfo highestPrecedenceTemplate = TemplateListResolver.FindHighestPrecedenceTemplateIfAllSameGroupIdentity(templatesToCheck); Assert.NotNull(highestPrecedenceTemplate); Assert.Equal("Template2", highestPrecedenceTemplate.Info.Identity); Assert.Equal(20, highestPrecedenceTemplate.Info.Precedence); }
public static IFilteredTemplateInfo FindHighestPrecedenceTemplateIfAllSameGroupIdentity(IReadOnlyList <IFilteredTemplateInfo> templateList) { if (!AreAllTemplatesSameGroupIdentity(templateList)) { return(null); } IFilteredTemplateInfo highestPrecedenceTemplate = null; foreach (IFilteredTemplateInfo template in templateList) { if (highestPrecedenceTemplate == null) { highestPrecedenceTemplate = template; } else if (template.Info.Precedence > highestPrecedenceTemplate.Info.Precedence) { highestPrecedenceTemplate = template; } } return(highestPrecedenceTemplate); }