public void TestDetermineHierarchy01() { DetermineHierarchyTest test = new DetermineHierarchyTest(); TemplateInSet templateInSet = test.CreateTemplateInSet("SubTemplate"); TemplateInSet baseTemplateInSet = test.CreateTemplateInSet("BaseTemplate"); test.Run(new Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>>() { {templateInSet, new TemplateInSet[] { baseTemplateInSet }}, {baseTemplateInSet, null} }); Assert.AreSame(baseTemplateInSet, templateInSet.BaseTemplateInSet); Assert.IsNull(baseTemplateInSet.BaseTemplateInSet); }
public void TestDetermineHierarchy05() { DetermineHierarchyTest test = new DetermineHierarchyTest(); // hierarchy mappings: // A > B > C // > D > E > F // G > H TemplateInSet templateA = test.CreateTemplateInSet("A"); TemplateInSet templateB = test.CreateTemplateInSet("B"); TemplateInSet templateC = test.CreateTemplateInSet("C"); TemplateInSet templateD = test.CreateTemplateInSet("D"); TemplateInSet templateE = test.CreateTemplateInSet("E"); TemplateInSet templateF = test.CreateTemplateInSet("F"); TemplateInSet templateG = test.CreateTemplateInSet("G"); TemplateInSet templateH = test.CreateTemplateInSet("H"); Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>> mappings = new Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>>() { {templateA, null}, {templateB, new TemplateInSet[] { templateA }}, {templateC, new TemplateInSet[] { templateB }}, {templateD, new TemplateInSet[] { templateA }}, {templateE, new TemplateInSet[] { templateD }}, {templateF, new TemplateInSet[] { templateE }}, {templateG, null}, {templateH, new TemplateInSet[] { templateG }} }; mappings.Reverse(); test.Run(mappings); Assert.IsNull(templateA.BaseTemplateInSet); Assert.IsNull(templateG.BaseTemplateInSet); Assert.AreSame(templateA, templateB.BaseTemplateInSet); Assert.AreSame(templateB, templateC.BaseTemplateInSet); Assert.AreSame(templateA, templateD.BaseTemplateInSet); Assert.AreSame(templateD, templateE.BaseTemplateInSet); Assert.AreSame(templateE, templateF.BaseTemplateInSet); Assert.AreSame(templateG, templateH.BaseTemplateInSet); }
public void TestDetermineHierarchyForContributingTemplates01() { DetermineHierarchyTest test = new DetermineHierarchyTest(); // hierarchy mappings: // A > B > C // > D > E > F // G > // H > J // I > ContributingTemplateInSet templateA = test.CreateContributingTemplateInSet("A"); ContributingTemplateInSet templateB = test.CreateContributingTemplateInSet("B"); ContributingTemplateInSet templateC = test.CreateContributingTemplateInSet("C"); ContributingTemplateInSet templateD = test.CreateContributingTemplateInSet("D"); ContributingTemplateInSet templateE = test.CreateContributingTemplateInSet("E"); ContributingTemplateInSet templateF = test.CreateContributingTemplateInSet("F"); ContributingTemplateInSet templateG = test.CreateContributingTemplateInSet("G"); ContributingTemplateInSet templateH = test.CreateContributingTemplateInSet("H"); ContributingTemplateInSet templateI = test.CreateContributingTemplateInSet("I"); ContributingTemplateInSet templateJ = test.CreateContributingTemplateInSet("J"); Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>> mappings = new Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>>() { {templateA, null}, {templateB, new ContributingTemplateInSet[] { templateA }}, {templateC, new ContributingTemplateInSet[] { templateB }}, {templateD, new ContributingTemplateInSet[] { templateA }}, {templateE, new ContributingTemplateInSet[] { templateD }}, {templateF, new ContributingTemplateInSet[] { templateE }}, {templateG, null}, {templateH, new ContributingTemplateInSet[] { templateG, templateI }}, {templateI, null}, {templateJ, new ContributingTemplateInSet[] { templateH }} }; mappings.Reverse(); test.Run(mappings); Assert.IsNull(templateA.BaseContributingTemplatesInSet); Assert.IsNull(templateG.BaseContributingTemplatesInSet); Assert.IsNull(templateI.BaseContributingTemplatesInSet); Assert.AreSame(templateA, templateB.BaseContributingTemplatesInSet.First()); Assert.AreSame(templateB, templateC.BaseContributingTemplatesInSet.First()); Assert.AreSame(templateA, templateD.BaseContributingTemplatesInSet.First()); Assert.AreSame(templateD, templateE.BaseContributingTemplatesInSet.First()); Assert.AreSame(templateE, templateF.BaseContributingTemplatesInSet.First()); Assert.AreSame(templateH, templateJ.BaseContributingTemplatesInSet.First()); Assert.IsTrue(templateH.BaseContributingTemplatesInSet.Contains(templateG)); Assert.IsTrue(templateH.BaseContributingTemplatesInSet.Contains(templateI)); Assert.IsFalse(templateC.BaseContributingTemplatesInSet.Contains(templateA)); Assert.IsFalse(templateF.BaseContributingTemplatesInSet.Contains(templateD)); Assert.IsFalse(templateF.BaseContributingTemplatesInSet.Contains(templateA)); Assert.IsFalse(templateE.BaseContributingTemplatesInSet.Contains(templateA)); Assert.IsFalse(templateJ.BaseContributingTemplatesInSet.Contains(templateG)); Assert.IsFalse(templateJ.BaseContributingTemplatesInSet.Contains(templateI)); }
public void TestDetermineHierarchy03() { DetermineHierarchyTest test = new DetermineHierarchyTest(); TemplateInSet templateInSet = test.CreateTemplateInSet("SubTemplate"); TemplateInSet baseTemplateInSet = test.CreateTemplateInSet("BaseTemplate"); TemplateInSet baseTemplateInSet2 = test.CreateTemplateInSet("BaseTemplate2"); try { test.Run(new Dictionary<TemplateInSetBase, IEnumerable<TemplateInSetBase>>() { {templateInSet, new TemplateInSet[] { baseTemplateInSet, baseTemplateInSet2 }}, {baseTemplateInSet, null}, {baseTemplateInSet2, null} }); Assert.Fail("Exception should have been thrown"); } catch (MultipleInheritanceException exc) { Assert.IsTrue(exc.TemplateNames.Count() == 1); Assert.AreEqual(templateInSet.TemplateName, exc.TemplateNames.First()); } }